PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Cross-thread deadlok
Cross-thread deadlok
Iniciado por obtuli, 28,oct. 2019 14:02 - 3 respuestas
Miembro registrado
961 mensajes
Publicado el 28,octubre 2019 - 14:02
Bonjour,

J'ai un plantage aléatoire de mon application, c'est une erreur système qui est émise par Windows et je n'arrive pas à l'intercepter.
Dans les événements Windows je retrouve bien le plantage avec un message Cross-thread deadlok .

La procédure qui semble planter est lancée par sEvénement pour la lecture d'un port série (lecture d'un scanner)

Je ne sais pas trop si c'est un problème de partage de ressource à un moment ou si c'est deux thread s'attendent mutuellement ou les deux.

Quelle est la première piste à contrôler ? si c'est un problème d'utilisation en même temps d'une ressource sans être "protégé"
je ne sais plus trop ce qu'il faut faire.

Pouvez vous m'aider ?

merci

OB
Miembro registrado
160 mensajes
Publicado el 28,octubre 2019 - 14:41
fait voir le code de la la fonction suspecte
Miembro registrado
961 mensajes
Publicado el 28,octubre 2019 - 15:31
Bonjour,

Merci d'avoir lu mon post

Ma réponse ne va pas beaucoup te renseigner, si ce n'est sur la complexité de mon système.

Heu, la fonction compte environ 800 lignes, c'est le résultat d'ajouts continus de code sans vouloir au final revoir cette procédure. Avec les fonctions qu'elle appelle on soit être à 2000 lignes.

Dans ce logiciel , un scanner est sur sEvenement, un timer lit régulièrement l'état d'une carte entrées/sortie sur un autre port série et certaines données sont affichée sur une afficheur LCD via un 3 éme port série. (le scanner et la carte E/S sont en USB-Série)

Quand le scanner envoi une information sur le port série ma procédure de déclenche et va aussi lire la carte E/S , je met un flag (une variable de type booléenne) pour dire à la procédure du timer de ne pas lire la carte E/S, pendant toutes les phases la procédure scanner envoi des infos sur l'afficheur LCD. Un truc simple quoi. (je ne parlerai pas de l’enregistrement dans une table des opérations de suivi).

La dessus on peut encore rajouter des dialogues LCD/boutons physiques avec l'opérateur qui se fait dans d'autre thread.

Rien qu'en décrivant le système, je suis conscient qu'il y a un problème difficile à traiter, surtout que le plantage arrive une fois par semaine.
Mon système est basé sur des flags pour éviter des système ré-entrants.

Voilà, à part revoir le système dans son ensemble .... je vais essayer de chercher à quel moment un truc coince.

cordialement

OB
Mensaje modificado, 28,octubre 2019 - 15:34
Miembro registrado
160 mensajes
Publicado el 28,octubre 2019 - 17:59
J'avais le même problème sur un logiciel similaire et c'étais un problème de synchronisation entre des Threads, tiens moi au courant