Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2361 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Segmentation fault <core dumped>

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Segmentation fault <core dumped>

n°225660
peak
Posté le 09-10-2002 à 15:43:18  profilanswer
 

Je compile un code (g++ avec cygwin) et il detect pas d'erreurs mais au moment ou je l'execute tous ce passe bien jusk'à ce k'y m'affiche : Segmentation fault <core dumped>
Et c'est pas facile de trouver une erreure avec si peux d'info., si k'elk'un sais m'en dire plus??! style à koi ce peux être dû, comment avoir des infos supplementair sur l'erreur (comment avoir acces au "dump" )... se serai cool  ;)  
 ;)

mood
Publicité
Posté le 09-10-2002 à 15:43:18  profilanswer
 

n°225667
_Mac_
Posté le 09-10-2002 à 15:49:58  profilanswer
 

Tu utilises la fonction printf ???? C'est un grand classique : elle fait tres souvent planter les programmes.

n°225681
manu025
Posté le 09-10-2002 à 15:58:21  profilanswer
 

core dumped : c'est général un problème de pointeur ou d'allocation de mémoire.


---------------
-@- When code matters more than commercials -@-
n°225685
El_gringo
Posté le 09-10-2002 à 16:01:54  profilanswer
 

manu025 a écrit a écrit :

core dumped : c'est général un problème de pointeur ou d'allocation de mémoire.




 
En effet, c'est de la mémoire non désallouée ça.
Si t en C, c'est un (ou des) malloc (ou autre allocoïde) sans free correspondant.
Si t en C++, c'est un (ou des) new sans delete correspondant.

n°225686
El_gringo
Posté le 09-10-2002 à 16:02:14  profilanswer
 

_Mac_ a écrit a écrit :

Tu utilises la fonction printf ???? C'est un grand classique : elle fait tres souvent planter les programmes.




 
Non.
Quand on l'utilise mal, peut être !
Mais si printf était buggé, on l'saurait.


Message édité par El_gringo le 09-10-2002 à 16:02:38
n°225708
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 09-10-2002 à 16:19:47  profilanswer
 

El_Gringo a écrit a écrit :

 
 
En effet, c'est de la mémoire non désallouée ça.
Si t en C, c'est un (ou des) malloc (ou autre allocoïde) sans free correspondant.
Si t en C++, c'est un (ou des) new sans delete correspondant.



c'est souvent des ABR/ABW (array boudary Write/Read), voir des UMR (unitialized memory read) qui cause problème.


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°225715
tanguy
Posté le 09-10-2002 à 16:27:27  profilanswer
 

El_Gringo a écrit a écrit :

 
 
En effet, c'est de la mémoire non désallouée ça.
Si t en C, c'est un (ou des) malloc (ou autre allocoïde) sans free correspondant.
Si t en C++, c'est un (ou des) new sans delete correspondant.




 
nan de la memoire non desallouee ne fait pas planter un programme, ca fait simplement une fuite memoire
pour eviter les fuites memoire on utilise pas un debuggeur mais un memory checker ou leak checker
 
un segfault peut etre causer par pleins de choses, mais en general c'est simplement par exemple :
int tab[12]
et ensuite on fait int i = tab[50]
pof segfault
 
donc pour comprendre c'est tres simple, tu prends gdb le debuggeur
tu le lances avec en parametre le nom de ton programme dans le meme repertoire (en compilant bien sur le programme avec l'option -g pour debug)
tu fais run et il va t'afficher la derniere instruction qui a fait plante le programme (si t'as de la chance)
ensuite tu fais up pour remonter dans la pile d'appels et voir tout ce qui c'est passe
 
si t'as pas de chance et qu'il n'y a pas de pile (t'inquiete ca sera pas ton cas), tu fou un break point la juste avant ou tu penses que tu as fait une erreur de programmation et puis des step et des next jusqu'au moment fatidique
 
bon moi j'utilise DDD sous unix, mais avec gdb sous windows ou dev-c++ c'est le meme principe meme si je peux pas donner la demarche exacte
 
edit :
j'oubliais, compile tes programmes avec :
-Wall -pedantic -ansi -g
ca t'afficheras beaucoup plus de warnings et donc de trouver des bugs potentiels plus facilement
et utiliser un memory checker aussi c'est une bonne idee, sous cygwin je sais pas
mais c'est linux y'en a des dizaines, le plus simple a utiliser c'est memprof, le plus puissant c'est valgrind


Message édité par tanguy le 09-10-2002 à 16:54:30
n°225786
El_gringo
Posté le 09-10-2002 à 17:29:28  profilanswer
 

tanguy a écrit a écrit :

 
 
nan de la memoire non desallouee ne fait pas planter un programme, ca fait simplement une fuite memoire




 
...qui a dit que son prog plantait !??

n°225788
kadreg
profil: Utilisateur
Posté le 09-10-2002 à 17:35:50  profilanswer
 

El_Gringo a écrit a écrit :

 
 
...qui a dit que son prog plantait !??




 
Je connais pas beaucoup de programme encore vivant après avoir coredumpé


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°225789
apolon34
Vive Linux!!
Posté le 09-10-2002 à 17:38:55  profilanswer
 

kadreg a écrit a écrit :

 
 
Je connais pas beaucoup de programme encore vivant après avoir coredumpé




 
+1

mood
Publicité
Posté le 09-10-2002 à 17:38:55  profilanswer
 

n°225795
tanguy
Posté le 09-10-2002 à 18:13:58  profilanswer
 

El_Gringo a écrit a écrit :

 
 
...qui a dit que son prog plantait !??




:lol:
 
enfin vert quand meme parceque vraiment le niveau est bien bas, la question de peak est celle d'un debutant et en moins de 10 reponses y'a deja 3 conneries :
- l'histoire du printf
- une nouvelle definition des fuites memoires
- des programmes qui segfault sans planter
 
les gars si vous connaissez pas la reponse ayez la gentillesse de ne pas repondre pour ne pas induire en erreur les gens (peak + tout ceux qui lisent le topic), c'est la moindre des choses
ca arrive a tout le monde de dire des conneries mais y'a des limites ! (et la elles ont ete explosees, champion du monde)


Message édité par tanguy le 09-10-2002 à 18:15:12
n°225797
peak
Posté le 09-10-2002 à 18:25:43  profilanswer
 

c'est nikel c'est exactement ce k'y me fallait!!!  :jap:  
Merci.

n°225809
peak
Posté le 09-10-2002 à 18:47:24  profilanswer
 

c'est koi en fait -ansi ?
ça autorize pas !?:

Code :
  1. new double[3]={1.0, 0.0, 1.0}


n°225811
lorill
Posté le 09-10-2002 à 18:49:21  profilanswer
 

peak a écrit a écrit :

c'est koi en fait -ansi ?




 
ca force a respecter la norme ansi

n°225862
Jar Jar
Intaigriste
Posté le 09-10-2002 à 20:33:19  profilanswer
 

_Mac_ a écrit a écrit :

Tu utilises la fonction printf ???? C'est un grand classique : elle fait tres souvent planter les programmes.




---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°225863
Jar Jar
Intaigriste
Posté le 09-10-2002 à 20:34:01  profilanswer
 

El_Gringo a écrit a écrit :

 
 
...qui a dit que son prog plantait !??




---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°225866
Jar Jar
Intaigriste
Posté le 09-10-2002 à 20:37:40  profilanswer
 

peak a écrit a écrit :

c'est koi en fait -ansi ?
ça autorize pas !?:

Code :
  1. new double[3]={1.0, 0.0, 1.0}




Si tu oublies le ';', il n'aime pas.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°225985
Musaran
Cerveaulté
Posté le 10-10-2002 à 01:17:55  profilanswer
 

peak a écrit a écrit :

Code :
  1. new double[3]={1.0, 0.0, 1.0}




Triple hélas!
En C++ standard, on ne peut initialiser les éléments de tableaux issus de new.
Le type doit donc disposer d'un constructeur par défaut.
Il faut leur affecter une valeur après.
 
Soyons patients, ça viendra.
 

el_Gringo a écrit a écrit :

allocoïde


Oh ! Une nouvelle espèce dans mon bestiaire :)


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°226553
El_gringo
Posté le 11-10-2002 à 09:15:58  profilanswer
 

Bon, j'ai déja eu des "core dumped" du à de la mémoire non-désalouée. En effet, ça faisait pas planter le programme, mais, au moment ou je le quittait, dans la console s'affichait : "core dumped".
Alors, tanguy, p'tit con, tu crois que tu sais tout, c bien. Mais rappels toi que tout le monde peut se planter (hé oui, même toi si ça s'trouve !), et que si on répondait QUE quand c'est sur à 100% que la réponse soit LA réponse, on avancerai pas beaucoup. Le plus souvent, c'est des hypothèses qui font avancer les choses.
"tanguy", tu t'appellerais pas Yann par hasard ?

n°226554
El_gringo
Posté le 11-10-2002 à 09:16:44  profilanswer
 

Musaran a écrit a écrit :

 
Oh ! Une nouvelle espèce dans mon bestiaire :)




 
Pourquoi !? J'trouve que ça sonne bien "allocoïde", non !? :D

n°226598
antp
Super Administrateur
Champion des excuses bidons
Posté le 11-10-2002 à 10:01:05  profilanswer
 

El_Gringo a écrit a écrit :

 En effet, ça faisait pas planter le programme, mais, au moment ou je le quittait, dans la console s'affichait : "core dumped".




 
bah il plantait en quittant donc ? :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°226601
El_gringo
Posté le 11-10-2002 à 10:09:20  profilanswer
 

antp a écrit a écrit :

 
 
bah il plantait en quittant donc ? :D




 
Ouais, enfin, c vrai qu'on peut toujours philosopher sur le sens du terme "planter". Moi j'dirais que c'est un comportement qui empêche le bon fonctionnement d'un soft. Qu'il quitte quand on quitte, j'trouve pas ça trop néfaste ! :D

n°226832
tanguy
Posté le 11-10-2002 à 16:08:19  profilanswer
 

El_Gringo a écrit a écrit :

Bon, j'ai déja eu des "core dumped" du à de la mémoire non-désalouée. En effet, ça faisait pas planter le programme, mais, au moment ou je le quittait, dans la console s'affichait : "core dumped".
Alors, tanguy, p'tit con, tu crois que tu sais tout, c bien. Mais rappels toi que tout le monde peut se planter (hé oui, même toi si ça s'trouve !), et que si on répondait QUE quand c'est sur à 100% que la réponse soit LA réponse, on avancerai pas beaucoup. Le plus souvent, c'est des hypothèses qui font avancer les choses.
"tanguy", tu t'appellerais pas Yann par hasard ?




 
J'ai le droit de m'en faire mon boulet officiel ?
 
parceque je crois que j'ai trouve mon champion du moment :lol:
 
achete toi l'informatique pour les nuls et apres tu pourras revenir...

n°226884
El_gringo
Posté le 11-10-2002 à 16:41:21  profilanswer
 

tanguy a écrit a écrit :

 
 
J'ai le droit de m'en faire mon boulet officiel ?
 
parceque je crois que j'ai trouve mon champion du moment :lol:
 
achete toi l'informatique pour les nuls et apres tu pourras revenir...




 
une question : pourquoi tu dit ça ?  
parce que j'te traite de petit con ?
Non, parce que, j'ai pas l'impression d'avoir dit d'abération. Pour ce que j'ai dit à propos de "core dumped", lis le topic, et vois pourquoi j'ai dit ça (cf mon cas !)

n°226915
tanguy
Posté le 11-10-2002 à 16:57:04  profilanswer
 

El_Gringo a écrit a écrit :

 
 
une question : pourquoi tu dit ça ?  
parce que j'te traite de petit con ?
Non, parce que, j'ai pas l'impression d'avoir dit d'abération. Pour ce que j'ai dit à propos de "core dumped", lis le topic, et vois pourquoi j'ai dit ça (cf mon cas !)




parceque t'as dis des conneries de A a Z, c'est tout, y'a meme pas a disserter la dessus
 
quand a ton insulte de "petit con" venant d'un gars qui sait meme pas ce que c'est un segfault et qui s'obstine dans sa connerie, ca me fait une belle jambe
 
si j'etais toi, pour mon amour propre, j'effacerais vite fais mes posts, parceque c'est pas une etouderie ce que tu viens d'ecrire, mais la preuve manifeste que tu n'y connais rien du tout et ne pas le reconnaitre et insulter les gens, c'est pas un manque de connaissance dans un domaine, c'est de la debilite pronfonde
 
moi je suis nul en cuisine, ba je vais pas insulter les gars sur les forums de cuisine en leur expliquant que les crepes ca se fait sans lait

n°226944
El_gringo
Posté le 11-10-2002 à 17:27:49  profilanswer
 

tanguy a écrit a écrit :

 
parceque t'as dis des conneries de A a Z, c'est tout, y'a meme pas a disserter la dessus
 
quand a ton insulte de "petit con" venant d'un gars qui sait meme pas ce que c'est un segfault et qui s'obstine dans sa connerie, ca me fait une belle jambe
 
si j'etais toi, pour mon amour propre, j'effacerais vite fais mes posts, parceque c'est pas une etouderie ce que tu viens d'ecrire, mais la preuve manifeste que tu n'y connais rien du tout et ne pas le reconnaitre et insulter les gens, c'est pas un manque de connaissance dans un domaine, c'est de la debilite pronfonde
 
moi je suis nul en cuisine, ba je vais pas insulter les gars sur les forums de cuisine en leur expliquant que les crepes ca se fait sans lait
 




 
...J'persiste : quelle connerie j'ai dit ? (j'estime m'y connaitre un minimum en info !)
 
 
sur ce je pars en week end !

n°226946
kadreg
profil: Utilisateur
Posté le 11-10-2002 à 17:32:51  profilanswer
 

El_Gringo a écrit a écrit :

 
...J'persiste : quelle connerie j'ai dit ? (j'estime m'y connaitre un minimum en info !)




 

Citation :


En effet, c'est de la mémoire non désallouée ça.  


 
Maintenant, montre nous un petit programme qui segfault sur un problème de mémoire non desallouée.


Message édité par kadreg le 11-10-2002 à 17:36:06

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°226949
BENB
100% Lux.
Posté le 11-10-2002 à 17:40:26  profilanswer
 

joce a écrit a écrit :

c'est souvent des ABR/ABW (array boudary Write/Read), voir des UMR (unitialized memory read) qui cause problème.




 
Il me semble que tenter de modifier une constante peut avoir ce resultat également :
 

Code :
  1. char *p;
  2. p = "Ceci est une litteral donc une constante";
  3. p[3] = 'a'; /*<- Ici il peut y avoir une segmentation fault...*/

n°226953
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 11-10-2002 à 17:48:41  profilanswer
 

Pour qu'elle raison (vu que l'espace mémoire pour la constante est bien alloué ?). (c'est là qu'il faut mieux déclaré p comme un const char * histoire de pas avoir de surprise :D)


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°226955
BENB
100% Lux.
Posté le 11-10-2002 à 17:56:38  profilanswer
 

joce a écrit a écrit :

Pour qu'elle raison (vu que l'espace mémoire pour la constante est bien alloué ?). (c'est là qu'il faut mieux déclaré p comme un const char * histoire de pas avoir de surprise :D)




 
J'ai dit que c'etait possible, ca depend de la machine me semble-t-il...
 
La raison, elle est simple, la chaine peut etre stockée dans un segment "read-only", y ecrire provoque donc une faute de segmentation...

n°226956
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 11-10-2002 à 17:56:54  profilanswer
 

je dirais meme plus , c'est une

Code :
  1. static const char * const


Message édité par Taz@PPC le 11-10-2002 à 17:57:43

---------------
du bon usage de rand [C] / [C++]
n°226970
tanguy
Posté le 11-10-2002 à 18:38:07  profilanswer
 

El_Gringo a écrit a écrit :

 
...J'persiste : quelle connerie j'ai dit ? (j'estime m'y connaitre un minimum en info !)




genre je vais perdre du temps a expliquer a un cretin qui me traite de "ptit con" pourquoi il a rien compris a l'informatique alors qu'il s'estime pas mauvais
 
un mars et 2euros aussi ?


Message édité par tanguy le 11-10-2002 à 18:38:39
n°226977
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 11-10-2002 à 18:43:33  profilanswer
 

je veux bien prendre les 2 euros


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°226986
antp
Super Administrateur
Champion des excuses bidons
Posté le 11-10-2002 à 18:55:32  profilanswer
 

puisqu'il reste que ça, je prends le mars


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°227153
Musaran
Cerveaulté
Posté le 12-10-2002 à 01:48:27  profilanswer
 

Taz@PPC a écrit a écrit :

je dirais meme plus , c'est une

Code :
  1. static const char * const




Ben pas vraiment en fait...

Code :
  1. sizeof("12345" ); //6

C'est d'abord un tableau, l'aspect pointeur ne survient qu'après "décomposition".
C'est bien une classe d'allocation statique (comme les globales), mais pas "static" dans le sens de local à l'unité de compilation.
J'avais essayé d'être exhaustif ici: http://www.developpez.net/forums/v [...] 531#172531


Message édité par Musaran le 12-10-2002 à 01:49:22

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°227170
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 12-10-2002 à 09:39:06  profilanswer
 

c'étati surtout pour dire des conneries et lancer un troll sur la non-équivalence pointeur - tableau!  :lol:


---------------
du bon usage de rand [C] / [C++]
n°228301
peak
Posté le 15-10-2002 à 17:21:38  profilanswer
 

Les gars c'est trop cool de vous entre tuer comme ça pour moi!!mais j'ai resolut le prob!
Merci à tous.
 
ps: c'est surtout le post de Tanguy ki à tous tué (claire, precis et constructif)  
(-Wall  -g -ansi : trop pratike pour trouver des erreurs, mais -pedantic me detect 20 erreurs alors ke mon prog marche...?))

n°228307
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 17:26:57  profilanswer
 

spa des erreurs, c'est des warnings  :o .
 
vas y balance!


---------------
du bon usage de rand [C] / [C++]
n°228739
peak
Posté le 16-10-2002 à 15:29:14  profilanswer
 

En fait c toujour ct'histoire de  

Code :
  1. new double[3]={1.0, 1.0, 1.0}

: en fait j'ai une fonction à lakelle je passe en paramètre un pointeur vers un double donc je fait :  

Code :
  1. void fct(double* p=NULL){}
  2. void main(){
  3. fct(new double[3]={1.0, 1.0, 1.0});
  4. }


 
ça marche marche mais j'ai une 10ène de warnings quand je compile avec "-pedantic".

n°228975
peak
Posté le 16-10-2002 à 21:07:03  profilanswer
 

Musaran a écrit a écrit :

Triple hélas!
En C++ standard, on ne peut initialiser les éléments de tableaux issus de new.
Le type doit donc disposer d'un constructeur par défaut.
Il faut leur affecter une valeur après.
 
Soyons patients, ça viendra.




 
Mais pourkoi c'est ke des warnings et pas des erreurs alors??

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Segmentation fault <core dumped>

 

Sujets relatifs
Impossible de lancer une commande systeme : segmentation faultComment recuperer la version d'un core intel et amd en VB
Mais ils sont où les CORE ???question en c: (random et erreur de segmentation).. aidez moi :-)
Exploitation du fichier coreformat core
[Assembleur Intel] Segmentation Fault, SIGSEGV ?? 
Plus de sujets relatifs à : Segmentation fault <core dumped>


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)