Solaris Express Developer Edition - Versionshinweise

x86: Signal 11 (SIGSEGV) wird nach dem Aufrufen der Laufzeitprüfung beendet (6584707)

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