Im Developer-Release 9/07 schlägt die Laufzeitprüfung fehl (RTC-Instrumentenspeicher, Zugriffsanweisungen für die Zugriffsprüfung). Die Anweisungen werden zur Laufzeit durch die SIGSEGV-Routine behandelt. Da die Laufzeitprüfung ihre eigene SIGSEGV-Behandlungsroutine sowie einen anderen Signalbehandlungsstack erfordert, werden Versuche zur Installation einer SIGSEGV-Behandlungsroutine bzw. eines sigaltstack-Stacks entweder ignoriert oder lösen einen EINVAL-Fehler aus. Aufrufe von SIGSEGV -Behandlungsroutinen können nicht verschachtelt werden. Daraufhin wird die folgende Fehlermeldung angezeigt:
terminating signal 11 SIGSEGV |
Umgehung Übergehen Sie mithilfe des Befehls rtc skippatch die Instrumentierung der betroffenen Funktion.
So umgehen die folgenden dbx-Befehle beispielsweise das SIGSEGV-Problem:
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 |