Notes de version de Solaris Express Developer Edition

x86 : Abandon du signal 11 SIGSEGV après un démarrage RTC (6584707)

Le système de contrôle à l'exécution (RTC, Runtime Checking) a échoué dans la version Developer 9/07. RTC met en oeuvre la mémoire et les instructions nécessaires au contrôle d'accès. Ces instructions sont traitées par un gestionnaire SIGSEGV au moment de l'exécution. Comme RTC exige son propre gestionnaire SIGSEGV et une pile secondaire de signaux, les tentatives d'installation d'un gestionnaire SIGSEGV ou d'un sigalstack seront ignorées ou produiront une erreur EINVAL. Les appels du gestionnaire SIGSEGV ne peuvent pas être imbriqués. Le message d'erreur suivant s'affiche :


terminating signal 11 SIGSEGV

Solution : servez-vous de la commande rtc skippatch pour ignorer la mise en oeuvre de la fonction concernée.

Par exemple, les commandes dbx suivantes permettent de contourner le problème segv imbriqué :


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