Note su Solaris Express Developer Edition

x86: Il segnale 11 SIGSEGV termina dopo l'avvio di RTC (6584707)

Il controllo runtime (RTC) non riesce nella versione Developer 9/07. RTC esegue la strumentazione delle istruzioni di accesso alla memoria per il controllo degli accessi. Queste istruzioni sono gestite da un gestore SIGSEGV nella fase di esecuzione. Poiché RTC richiede il proprio gestore SIGSEGV e uno stack di segnali alternativo, ogni tentativo di installare un gestore SIGSEGV o uno stack sigaltstack viene ignorato o produce un errore EINVAL. Le chiamate al gestore SIGSEGV non possono essere annidate. Viene visualizzato il seguente messaggio di errore:


terminating signal 11 SIGSEGV

Soluzione. Usare il comando rtc skippatch per ignorare la strumentazione della funzione interessata.

Ad esempio, i seguenti comandi dbx risolvono il problema di annidamento di segv:


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