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 |