Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/02/2006, 14h56   #1
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 464
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 464
Points : 9 585
Points : 9 585
Par défaut informations sur pstack sur un core

Bonjour,

J'ai un programme qui a planté et généré un core. Jusqu'ici tout va bien (sauf que le programme a planté). J'ai analysé ce core avec pstack, mais le résultat sorti par celui-ci est assez abscond (voir ci-dessous).

Qui plus est, le manuel de pstack (sous solaris, mais ca semble être la même chose sous Linux) est plus que sommaire... Et ne me donne a priori absolument aucune information si ce n'estle nom de la fonction dans laquelle le programme a planté.

La seule information que je peux tirer de ce core est que le programme a planté lors d'un appel à la fonction qsort. Mais que veulent dire les arguments tout à 0, et le +70 ?

Par ailleurs, si vous avez des pointeurs sur des docs sur pstack, je suis bien évidemment prenneur.

Merci

Citation:
# pstack core
core 'core' of 7262: /opt/FERMA/sbin/scf_accounting
----------------- lwp# 1 / thread# 1 --------------------
fefcbb44 qst (209c8, 0, ffb7aaa0, 1960, 0, ffb7b8c0) + 2d0
fefcb75c qsort (0, 0, 0, 0, 0, 0) + 70
----------------- lwp# 2 / thread# 2 --------------------
ff01edf0 _signotifywait (ff26c000, 0, 0, ff03f518, 1, 0) + 8
ff251c4c thr_yield (0, 0, 0, 0, 0, 0) + 8c
----------------- lwp# 3 --------------------------------
ff259220 private___lwp_cond_wait (0, ff26cd6c, ff26c000, 0, 0, ff01fb38) + 8
ff256808 _sc_door_func (ffffffff, ff26d658, ff26d670, 3, ff26c000, 1) + 74
ff24a358 _lwp_start (fef75d98, 0, 6000, ffb7b8cc, 0, 0) + 18
ff251c4c thr_yield (0, 0, 0, 0, 0, 0) + 8c
----------------- lwp# 4 / thread# 4 --------------------
ff259220 private___lwp_cond_wait (ff26cd28, ff26c000, ff26cd10, 0, ff26c000, 0) + 8
ff25b03c _thread_start (0, 0, 0, 0, 0, 0) + 40
-------------------------- thread# 3 --------------------
ff24d9b8 _reap_wait (ff270980, 1e924, 0, ff26c000, 0, 0) + 38
ff24d710 _reaper (ff26ce00, ff272708, ff270980, ff26cdd8, 1, fe401000) + 38
ff25b03c _thread_start (0, 0, 0, 0, 0, 0) + 40
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 16h43   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 464
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 464
Points : 9 585
Points : 9 585
Re,

Alors a priori, d'après les infos que j'ai pu glaner à droite et à gauche, les paramètres entre parenthèse seraient des adresses en mémoire.

Savez-vous ce qu'indique une adresse à 0 ? Est-ce que ca veut dire que cette fonction na pas trouvé ce qui était censé être passé en paramètre, ou bien autre chose (par exemple si on passe NULL à une fonction).

Pour le +70, je m'oriente pour l'instant vers un pointeur de pile, information qui n'est donc pas franchement top utile...

Merci
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 11h10   #3
Membre régulier
 
Inscription : décembre 2004
Messages : 82
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2004
Messages : 82
Points : 95
Points : 95
Bonjour,
Il me semble qu'en réalité, les valeurs entre parenthèses sont les arguments d'appel des fonctions.
La valeur affichée est la "valeur" de la variable passée en argument. Si cette variable est un pointeur, alors sa valeur est une adresse en mémoire; si c'est un integer par contre, c'est bien la valeur de l'entier qui est affichée.

Dans l'exemple de pstack que tu cites, c'est la fonction qst appelée par la fonction qsort qui a "coré".
Je ne sais pas ce qui signifient les threads qu'on voit... ces threads semblent apparaitre même en cas d'application mono threadée.

En espérant etre d'une aide quelconque
Joeman79
Joeman79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 13h41   #4
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 464
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 464
Points : 9 585
Points : 9 585
Citation:
Envoyé par Joeman79
Bonjour,
Il me semble qu'en réalité, les valeurs entre parenthèses sont les arguments d'appel des fonctions.
La valeur affichée est la "valeur" de la variable passée en argument. Si cette variable est un pointeur, alors sa valeur est une adresse en mémoire; si c'est un integer par contre, c'est bien la valeur de l'entier qui est affichée.

Dans l'exemple de pstack que tu cites, c'est la fonction qst appelée par la fonction qsort qui a "coré".
OK, merci bien pour ces précisions. je vais donc regarder mon code pour savoir qu'est-ce qui est un pointeur, qu'estce qui n'en est pas.

Citation:
Envoyé par Joeman79
Je ne sais pas ce qui signifient les threads qu'on voit... ces threads semblent apparaitre même en cas d'application mono threadée.
Solaris alloue toujours 4 threads pour un processus. Je ne sais plus exactement pourquoi, mais j'ai lu cette info sur une doc officielle me semble-t-il.

Citation:
Envoyé par Joeman79
En espérant etre d'une aide quelconque
Joeman79
Tout à fait, merci bien
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web