Notes de version de Solaris 10 5/08

Problèmes au cours de l'exécution du débogueur

Les problèmes suivants concernent le débogueur du noyau.

x86 : Un signal SIGTRAP inattendu entraîne le blocage du débogueur dbx (6546562 )

Lorsque le débogueur dbx est employé sur le SE Solaris 10 sur plate-forme x86 pour déboguer un programme qui génère ou fournit des signaux possédant des gestionnaire de signaux, dbx peut recevoir du noyau un signal SIGTRAP inattendu, ce qui entraîne le blocage du débogueur. Cette situation peut se produire lorsque dbx s'exécute pas à pas, qu'il s'exécute à un point d'arrêt, qu'il rassemble des données RTC (runtime checking, vérification du temps d'exécution) ou qu'il effectue toute autre activité dépendant du déroutement de signaux.

Dans certains cas, dbx affiche un avertissement indiquant un signal SIGTRAP inattendu lorsqu'il se bloque. Exemple :


dbx: internal warning: unexpected SIGTRAP!

Dans d'autres cas, dbx indique la réception d'un signal SEGV. Exemple :


signal SEGV (no mapping at the fault address) in main at line 29 in file "test.c"

Dans certains cas, lorsque l'utilisateur tape la commande cont -sig SEGV pour poursuivre l'exécution avec le signal SEGV, dbx affiche l'avertissement indiquant le signal SIGTRAP inattendu.

Ce bogue se produit dans le SE Solaris 10 sur plate-forme x86 à l'installation du patch de noyau 127112.

Solution : N'installez pas le patch de noyau 127112. Désinstallez le patch de noyau s'il a déjà été installé. Pour de plus amples informations sur ce bogue, reportez-vous à la page Sun Studio Support News à l'adresse http://developers.sun.com/sunstudio/support/news/index.jsp.

SPARC : problèmes liés au débogueur dbx lors du traitement d'objets 64 bits (6347707)

Le débogueur dbx s'arrête sur une erreur d'accès mémoire lors du traitement de certains fichiers exécutables et bibliothèques 64 bits. Néanmoins, le problème n'affecte pas l'utilisation normale de ces objets 64 bits. Un message similaire s'affiche :


dbx: internal error: signal SIGBUS (invalid address alignment)

Solution : utilisez soit le débogueur mdb, soit la fonctionnalité Solaris Dynamic Tracing à la place. Ces deux solutions permettent de diagnostiquer les processus utilisant des objets 64 bits.

Le système peut effectuer une boucle lorsque la CPU principale est changée (4405263)

Un système qui exécute le débogueur de noyau Solaris pour déboguer un système en direct peut effectuer une boucle avec des messages d'erreur incomplets. Cette boucle se produit lorsque la CPU maîtresse d'OpenBoot PROM est changée. La réinitialisation du système restaure le fonctionnement de celui-ci. Cependant, toute trace de l'échec d'origine est perdue. Par conséquent, il n'est pas possible d'effectuer un diagnostic de la réinitialisation fatale.

Solution : lorsque le système est au niveau de la PROM, l'invite ok d'OpenBoot s'affiche. Dans un système avec plusieurs CPU, l'invite ok est précédée d'un chiffre entre accolades. Ce chiffre indique la CPU qui est active dans le système. Pour exécuter la session de débogage au niveau de la PROM, procédez comme suit.

  1. Augmentez la valeur de pil à f en tapant la commande suivante :


    {0} ok h# 0f pil!
    
  2. Utilisez la commande switch-cpu pour commuter entre la CPU active et d'autres CPU. Par exemple, pour commuter de la CPU n°0 à la CPU n°1, tapez la commande suivante :


    (0) ok 1 switch-cpu
    

    L'invite ok est maintenant précédée du chiffre de la CPU vers laquelle vous avez permuté.


    {1} ok
  3. Exécutez le débogueur.

  4. À la fin de la session de débogage, exécutez une commande reset-all pour rétablir le système en utilisation normale.


Remarque –

Assurez-vous de mettre à niveau le système vers la dernière version d'OpenBoot PROM.