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
Voici le code correspondantEnvoyé par Trace console
Je sais que ce malloc est utilisé environ 181746 * 10 fois avant de planter. Le moment du plantage étant fixe dans l'exécution.
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++;
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é.
Envoyé par Juste avant le plantage
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 :Envoyé par Juste après le plantage
1. Avoir plus de mémoire disponible pour le programme.
2. Revoir l'application pour utiliser moins de mémoire.
Cordialement,
Patrick Kolodziejczyk.
Partager