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 :

Seg fault après quelques récursions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Par défaut Seg fault après quelques récursions
    Bonjour,

    J'essaie actuellement de faire une IA de puissance 4 ; tout se passe bien, mais je me suis retrouvé bloqué au niveau d'une fonction récursive. Je calcule toutes les combinaisons possibles sur les X prochains tours ; j'arrive à faire 3 tours en avance, mais je ne passe pas les 4: je seg fault après seulement 928 récursions!
    Ce que je ne comprends pas vraiment ; j'ai beau lancer pas mal d'autres fonctions (genre, vraiment beaucoup), mais elles devraient sortir du stack dès la fin, donc ce n'est pas 1000 appels récursifs qui devraient me faire seg fault...
    Auriez-vous une idée d'où cela peut venir s'il vous plait?

    Code source condensé en un fichier compilable: http://pastebin.com/9FLxy8v -- la fonction (probablement) problématique s'appellant c4_recursive_check

    Merci d'avance .

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ma boule de cristal étant en maintenance, je suis incapable de t'aider, désolé
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    De rien

    Non plus sérieusement comment veux-tu que l'on t'aide si on ne voit aucune ligne de code !

  4. #4
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Par défaut
    Désolé, j'avais envoyé mon message pas exprêt après deux lignes, avant de l'avoir fini ; c'est chose faite

  5. #5
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Bon il y a beaucoup trop d'imbrications dans ton code pour que j'y retrouve mes petits mais vu que tu ne "tritures" pas des pointeurs à tout ton segdefault vient certainement de l'adressage de ton tableau grid[][]. Vérifies au besoin les valeurs de changed_row et n à chaque itération voir si tu ne dépasses pas la taille de ton tableau.

    Une petite remarque : ++reccall; est une variable globale. Je dirais Beuuurk

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Par défaut
    Oh punaise, je suis bête...
    Je m'étais tellement mis en tête que cela venait de ma fonction récursive que je n'avais même pas prêté attention à ça, et le pire, c'est qu'en postant le pastebin, je l'avais même corrigé tellement ça me semblait insensé.
    C'était une erreur au niveau de c4_fill_nth_column, où, effectivement, je regardais à la case -1 de mon tableau (et bien sûr, rien que pour m'embêter, ça ne seg fault-ait pas dès le début...)
    Du coup, je monte à 7 en depth & ~7^7 récursions, sans soucis autre que les 1.9s de runtime.

    Merci pour m'avoir fait regarder autre part!


    PS: Ouais, la variable globale était dégueulasse, désolé ; c'était pour voir le nombre d'appels récursifs rapidement :p

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

Discussions similaires

  1. [Seg Fault] introuvable
    Par Goundy dans le forum C
    Réponses: 13
    Dernier message: 14/04/2006, 21h00
  2. Réponses: 2
    Dernier message: 10/04/2006, 19h40
  3. [fclose] erreur de fermeture (seg fault)
    Par Goundy dans le forum C
    Réponses: 17
    Dernier message: 06/04/2006, 13h16
  4. probleme de valeur retournée et seg fault
    Par florent_de_brest dans le forum C
    Réponses: 5
    Dernier message: 04/12/2005, 16h28
  5. Arret de mon pc apres quelques minutes du check d'anti virus
    Par christophebmx dans le forum Sécurité
    Réponses: 4
    Dernier message: 01/07/2005, 14h50

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