Seg fault occasionnel et programme en arrière plan

Seg fault occasionnel et programme en arrière plan

par Aurélien Louis Christophe Pierga,
Number of replies: 6

Bonjour,

Notre programme s'execute correctement mais pendant l'execution, si on le met en arrière plan en cliquant sur une autre fenêtre comme le terminal puis qu'on vient directement recliquer sur les boutons qui ouvrent une fenêtre de dialogue (donc save et open), il arrive parfois que le programme crash en seg fault, est ce du à une faille dans notre code ou cela peut-il venir de l'ordinateur ?

Merci d'avance

Aurélien Pierga

In reply to Aurélien Louis Christophe Pierga

Re: Seg fault occasionnel et programme en arrière plan

par Luc Richard Scholl,

Bonjour,

Nous avons exactement le même problème et nous avons aussi aucune idée pourquoi. Nous avons juste remarqués que ça crash que en seg fault quand on a une ville non-vide et que ça crash plus vite pour une ville petite que pour un grande ville (par exemple pour un ville avec un seul noeud normalement dès la première mise en arrière), mais en général ça peut changer pour un même fichier avec chaque execution. On se pose donc la même question.

Merci d'avance

In reply to Aurélien Louis Christophe Pierga

Re: Seg fault occasionnel et programme en arrière plan

par Mentor Tafili,

Bonjour

Nous rencontrons également ce problème et ne savons pas d'où il peut bien venir.

Merci d'avance pour votre réponse.

Mentor Tafili

In reply to Aurélien Louis Christophe Pierga

Re: Seg fault occasionnel et programme en arrière plan

par Nicolas Timothée Esseiva,

Bonjour,

J'ai aussi le même problème, dans les mêmes conditions

Ce que j'ai pu constater : 

- Le seg fault arrive que quand on clique le bouton alors que la fenêtre n'est pas en focus

- Il se produit à la ligne "int result = dialog.run()", donc avec l'utilisation de FileChooserDialog

Est-ce qu'un tel problème sera pris en compte lors des tests ?

In reply to Nicolas Timothée Esseiva

Re: Seg fault occasionnel et programme en arrière plan

par Ronan Boulic,

A défaut d'avoir quelque chose à vous proposer, nous ne testerons pas les projets avec ce scénario.

In reply to Aurélien Louis Christophe Pierga

Re: Seg fault occasionnel et programme en arrière plan

par Nicolas Timothée Esseiva,

Je crois avoir trouvé d'ou viens ce problème avec l'aide de l'outil Valgrind qui m'a indqué qu'il y avait une erreur lors de l'appel de "Cairo::Context::set_line_width(double)"

J'ai donc remarqué que lorsque j'appuye sur le bouton Open (ou Save) alors que la fenêtre n'est pas en focus, le pointeur Cairo::Context fourni a la méthode on_draw de la drawing area change.

Donc comme dans ma fonction graphicSetContext j'autorise l'écriture du pointeur une unique fois, il reste sur sa valeur précédente

Au prochain appel du on_draw de la DrawingArea, le programme va essayer d'utiliser l'ancien pointeur et va donc retourner un segmentation fault.

Je pense que la correction est tout simplement de ne pas utiliser de variable init pour la fonction graphicSetContext 


Attachment log.png
In reply to Nicolas Timothée Esseiva

Re: Seg fault occasionnel et programme en arrière plan

par Jonas Samuel Daverio,

Étonnamment, je n'ai eu ce problème que sur Windows... Mais du coup, merci de me l'avoir résolu, j'étais parti du principe que GTKmm laguait sur Windows (ce qui est le cas quand même, mais au moins, ça ne crache pas à chaque nouvel appel de on_draw)