A verificação do tempo de execução (RTC) falha no Developer 9/07. RTC instrumenta a memória, acessa instruções para acessar a verificação. Essas instruções são manipuladas por um manipulador do SIGSEGV no tempo de execução. Uma vez que RTC requer seu próprio manipulador do SIGSEGVe sua pilha alternativa de sinal, as tentativas de instalar um manipulador do SIGSEGV ou sigaltstack serão ignoradas ou resultarão em um erro de EINVAL. As chamadas do manipulador do SIGSEGV não podem ser aninhadas. A seguinte mensagem de erro é exibida:
terminating signal 11 SIGSEGV |
Solução alternativa: use o comando rtc skippatch para ignorar a instrumentação da função afetada.
Por exemplo, os seguintes comandos dbx oferecem uma solução alternativa para o problema de segv aninhado:
rtc skippatch libc.so -f lrw_rdlock lrw_unlock lrw_wrlock _lock_try rtc skippatch libc.so -f read_lock_try read_unlock_try write_lock_try write_unlock_try rtc skippatch libc.so -f queue_unlink mqueue_spawner thread_queue_dump rtc skippatch libc.so -f thread_queue_fifo thread_queue_spin thread_queue_verify rtc skippatch libc.so -f __rw_unlock __rw_trywrlock __rw_workerscnt rtc skippatch libc.so -f __rwlock_destroy __rwlock_init |