IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

"Process returned 3" (kézako?!?)


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut "Process returned 3" (kézako?!?)
    Salut, salut!
    (c'est encore moi.... )

    Bon bon, javance doucement dans mon super 2ème projet en C (après un ma foi assez réussi "Hello world"... (ouaip, je ne poste pas dans la catégorie "débuter" pour me la raconter.....)), déjà maintenant tout compile (yeah, la classe!), mais voilà, 354 bugs corrigés plus tard, j'arrive a un endroit du code particulièrement complexe (Ouah, c'est moi qu'yai écrit ça???) et vlà qu'ça plante une fois de plus avec ce coup-ci une erreur "3" ("Process terminated with status 3"), bon cool au moins j'ai une piste (jusqu'à maintenant ça plantait en silence, quand je devais pas rebooter l'OS.....), mais je n'arrive pas à trouver à quoi ça correspond cette erreur "3" (sur la Toile ya pleins de questions, mais peu de réponses, ou alors des trucs trés spécifiques du genre "c'est un bug connu de tel prog" (ou alors j'ai pas bien cherché .....)).

    Merci par avance!!

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    Citation Envoyé par Nival Voir le message
    Salut, salut!
    (c'est encore moi.... )

    Bon bon, javance doucement dans mon super 2ème projet en C (après un ma foi assez réussi "Hello world"... (ouaip, je ne poste pas dans la catégorie "débuter" pour me la raconter.....)), déjà maintenant tout compile (yeah, la classe!), mais voilà, 354 bugs corrigés plus tard, j'arrive a un endroit du code particulièrement complexe (Ouah, c'est moi qu'yai écrit ça???) et vlà qu'ça plante une fois de plus avec ce coup-ci une erreur "3" ("Process terminated with status 3"), bon cool au moins j'ai une piste (jusqu'à maintenant ça plantait en silence, quand je devais pas rebooter l'OS.....), mais je n'arrive pas à trouver à quoi ça correspond cette erreur "3" (sur la Toile ya pleins de questions, mais peu de réponses, ou alors des trucs trés spécifiques du genre "c'est un bug connu de tel prog" (ou alors j'ai pas bien cherché .....)).

    Merci par avance!!
    Pourrais-tu poster ton code où une partie réuduite de ce dernier qui reproduit le problème?

    Meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Un process retourne généralement 3 quand la fonction Abort() est appelée...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ayaya, j'y comprend plus rien, j'ai essayé de repérer le code coupable en excluant des pans entiers du programme entre /* */, mais en fait je réalise que l'erreur survient de façon inconstante alors même que je compile le même code!! En fait, carrément, l'exécution du même code compilé renvoi parfois l'erreur, parfois pas...

    Si error code 3 corespond à l'appel de Abort(), dans quelle(s) situation(s) Abort() est-elle appelée?

    Bon en attendant je retourne à Code::Blocks et dés que j'ai trouvé un code qui semble vraiment coupable, je vous le montre....

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Dans une version Debug, abort() est généralement appelée quand une assertion foire dans un programme console...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Merci pour ses réponses, malheureusement mon programme ne s'exécute pas en mode console, et l'erreur apparait autant en compilation release qu'en debug, de façon toujours intermittente (environ 5 fois sur 6)...

    La bonne nouvelle c'est que j'ai enfin trouvé la partie du code responsable, c'est notamment un endroit bien complexe (pour moi en tout cas...) où certains comportements sont gérés de façon "pseudo-aléatoire", ce qui correspond bien au fait que l'erreur surviennent de façon justement inconstante et imprévisible.

    Je vous fais grâce de vous joindre une copie de ce code proprement imbitable en vue que vous recherchiez l'erreur qui s'y cache, du moins dans un premier temps , je vais déjà essayé de me débrouiller par moi-même!

    En revanche si qqn a une autre idée sur cette erreur "3" je suis toujours preneur!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bon bah ayé le bug est réparé, ça venait de l'initialisation de mon "randseed", en fait un simple long qui pointe vers une case d'une table de nombres aléatoires précalculés. En fait pour initialiser mon long je fait un gros calcul avec time() dans le but d'avoir une valeur >> à la taille de mon tableau, après quoi je fais un modulo dessus.

    Pb: le résultat du calcul, trés gros (c'est fait exprès en même temps...), dépasse la taille du long et du coup écrit manifestement sur le bit du signe!
    Je me retrouvait donc "parfois" avec un randseed négatif qui renvoyait donc vers une adresse n'importe-où, ce qui faisait manifestement "parfois" planter le prog...
    Solution: un petit abs() avant le modulo et le tour est joué!

    Bon, mon pb est résolu, reste que la signification du code erreur "3" reste pour moi un mystère (mais peut-être s'agit-il d'un abort() effectué par l'OS lorsque mon prog essayait d'atteindre une adresse "non autorisée"?).
    Merci en tout cas de s'être arracher les cheveux avec moi!

    Allez zou.... à la suite! (et au bug suivant!!)
    A bientôt donc!!

    Épilogue:
    Non content d'avoir surmonté pareil obstacle, j'intègre la fonction suivante à mon main(), laquelle est d'ailleurs soit dit en passant de loin la plus complexe de mon programme, et voilà-t-il pas qu'a peine recompilé, le prog plante sur la nouvelle fonction... en me renvoyant un "status 3"!

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo