Bonjour,

Dans un programme C compilé et lancé sur du Linux je me retrouve avec une erreur de segmentation pendant l’exécution :

Avec des messages de log, j'ai identifié la ligne en cause
Citation Envoyé par Trace console
TRACE : 506 ...181746
TRACE debug_pko : start malloc ...
TRACE debug_pko : end malloc ...
TRACE debug_pko : end add tab ...
TRACE debug_pko : start malloc ...
TRACE debug_pko : end malloc ...
TRACE debug_pko : end add tab ...
TRACE debug_pko : start malloc ...
TRACE debug_pko : end malloc ...
TRACE debug_pko : end add tab ...
TRACE debug_pko : start malloc ...
TRACE debug_pko : end malloc ...
TRACE debug_pko : end add tab ...
TRACE debug_pko : start malloc ...
TRACE debug_pko : end malloc ...
TRACE debug_pko : end add tab ...
TRACE debug_pko : start malloc ...
Voici le code correspondant
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
fprintf(stderr,"TRACE debug_pko : start malloc ...\n");
pRejet = malloc(sizeof(struct TABNOETTTAS));
fprintf(stderr,"TRACE debug_pko : end malloc ...\n");
C_XLI_AddToTab_BC(pXliRej,(void *)pRejet);
fprintf(stderr,"TRACE debug_pko : end add tab ...\n");
iCptInit++;
Je sais que ce malloc est utilisé environ 181746 * 10 fois avant de planter. Le moment du plantage étant fixe dans l'exécution.

La structure TABNOETTTAS contient deux tableaux de char d'une taille cumulé de 91 char.

Après diverses recherches, j'ai réalisé des vmstat, pendant le traitement pour me rendre compte que l'espace mémoire libre de la machine devient dangereusement bas juste avant de planté.

Citation Envoyé par Juste avant le plantage
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------------------
r b avm fre re pi po fr sr cy in sy cs us sy id wa pc ec
2 2 2660588 2730 0 0 0 704 3052 0 238 2669046 6233 17 10 72 1 0.34 33.8
frtlr205.soltim@(7.5.1.00_ABO): /disk4/avtxl/7.5.1.00_ABO/srcbcx/devbatchs/bcx/prjbcx/bcxas202/libprv> vms
Citation Envoyé par Juste après le plantage
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------------------
r b avm fre re pi po fr sr cy in sy cs us sy id wa pc ec
2 2 2592307 71527 0 0 0 704 3052 0 238 2669048 6233 17 10 72 1 0.34 33.8
Une personne peut-il me confirmer que le malloc sort une erreur de segmentation sur un problème de mémoire disponible ? Histoire que je sois sûr de mon diagnostic, à savoir que l'application en question n'a pas assez d'espace mémoire par rapport à ce qu'elle veux faire. Donc deux solutions :
1. Avoir plus de mémoire disponible pour le programme.
2. Revoir l'application pour utiliser moins de mémoire.

Cordialement,
Patrick Kolodziejczyk.