Stack smashing dans le Homework ...

Stack smashing dans le Homework ...

by Capucine Mien Verone Berger-Sigrist -
Number of replies: 5

Bonsoir, 

J'ai un stack smashing qui survient juste après (*) le return EXIT_SUCCESS dans le homework.  C'est donc probablement get_least_homogeneous_team qui bug mais write_query_result arrive quand meme a output le fichier bad_teams.txt.

*En tout cas d'après le debugger, en plaçant un breakpoint sur return je peux encore faire deux fois next avant d'avoir le stack smashing...

In reply to Capucine Mien Verone Berger-Sigrist

Re: Stack smashing dans le Homework ...

by Deleted user -

Bonsoir,

Je vous suggère d'utiliser Valgrind - un outil de debbuging qui aide à détecter des bugs de gestion mémoire. Vous pouvez l'installer sur votre machine si vous travaillez sous Linux ou alors utiliser les VMs de l'école.

Pour lancer le debugging avec Valgrind, lancer un terminal et exécuter valgrind prog arg1 arg2 ... (après avoir compilé votre programme au préalable). Pour que le debugging soit détaillé, vous devez compilé votre programme avec le flag -g.

Une fois l'exécution lancée, Valgrind devrait vous afficher des accès mémoires incorrects et leur emplacement dans votre code, si accès incorrect il y a.

In reply to Deleted user

Re: Stack smashing dans le Homework ...

by Benedek Hauer -

Bonsoir,

J'ai essayé d'utiliser Valgrind (car j'avais le même problème que Capucine, avec un EXIT_SUCCESS), mais le débogueur me dit que (si j'ai bien compris le message d'erreur) mon stack smashing est dû à la ligne 424 (qui est l'accolade fermante du main), ce qui ne m'aide pas beaucoup (je pense ?). Qu'est-ce que je peux faire à ce stade là? Que veut exactement dire le fait que j'ai un stack smashing? Peut-être que cela me permettrait de comprendre l'origine de l'erreur.

Merci pour la future réponse, et bonne fin de soirée!

Attachment stacksmashingerror.png
In reply to Capucine Mien Verone Berger-Sigrist

Re: Stack smashing dans le Homework ...

by Benedek Hauer -
Bonsoir,

En fait, j'ai réussi à résoudre le problème que j'avais dans mon code. Le problème venait de load_database qui, en fait, lisait une ligne de plus que la taille des étudiants (d'où le problème du stack qui prenait plus de données que ce qu'il attendait, si j'ai bien compris)
Donc, en plus de faire un EOF check au début de ma boucle while j'ai aussi fait un check EOF après avoir lu chaque ligne du fichier

Je sais pas si ça peut aussi résoudre ton problème.

Bonne soirée!