Edité -> ReceiveNetworkData n'abime pas la pile
Publié : ven. 22/juil./2005 0:54
EDITION DE CE POST : en fin de compte : la fonction ReceiveNetworkData est innocente. Ce post peut rester intéressant pour ceux qui s'intéressent à l'assembleur et aux manipulations de la pile, mais il n'a plus vraiment sa place dans les rapports de bugs.
----------------------------------------------------------------------------------------------
Ca fait un petit moment que j'avais des problèmes avec les programmes utilisant cette fonction. J'ai fait un test sur les données figurant dans la pile et de toute évidence, ReceiveNetworkData ne fait pas les choses proprement.
L'ennui, c'est que c'est alléatoire, ça n'arrive qu'une fois sur dix environ.
Voilà ce que je constate :
Comme ce problème est occasionnel et donc pas évident à reproduire, voici un programme qui utilise intensemment ReceiveNetworkData et qui signale le problème de pile quand il survient :
http://www.rankspirit.com/downloads/dropupload_test.zip
La librairie PB_Zip nécessaire à son fonctionnement est jointe dans l'archive.
Un message "Ouch!" signale que le problème a été détecté.
Chez moi, ça arrive quasiment à chaque fois qu'on upload quelquechose avec ce programme.
J'ai bien sur fait les tests avec la 3.93 et la 3.94 (pas de différence). Je tourne sous XP.
Et inutile de dire que je suis trés trés ennuyé par ce problème
Les bidouilles qui figurent dans le programme joint essayent de gérer le problème, et permettent de faire quand même marcher ce programme. L'ennui c'est que ce problème de pile fait planter le programme de temps en temps. Ce plantage occasionnel se produit précisemment au moment du "ProcedureReturn" de la procedure "Wait" (celle qui utilise justement ReceiveNetworkData). Il n'y a évidemment aucun message d'erreur à ce moment là, c'est un gros plantage pur et dur et j'ai du pas mal galérer pour déterminer exactement à quel endroit ça plantait (comme en plus, c'est occasionnel !!)
Ce plantage est assez rare quand on lance le programme à partir de l'IDE et beaucoup plus fréquent quand on lance la version compilée du programme, ce qui ne m'a pas facilité les choses pour détecter l'endroit où il avait lieu. Aprés moult tests, il semble qu'il soit bel et bien lié au problème de pile.
----------------------------------------------------------------------------------------------
Ca fait un petit moment que j'avais des problèmes avec les programmes utilisant cette fonction. J'ai fait un test sur les données figurant dans la pile et de toute évidence, ReceiveNetworkData ne fait pas les choses proprement.
L'ennui, c'est que c'est alléatoire, ça n'arrive qu'une fois sur dix environ.
Voilà ce que je constate :
Code : Tout sélectionner
Global Temoin
Procedure Utilise_ReceiveNetworkData()
ReceiveNetworkData(,,)
Valeur = 10
Temoin = Valeur
ProcedureReturn Valeur
EndProcedure
Test = Utilise_ReceiveNetworkData()
If Temoin<>Test
; Debug Ouhlala ! Qu'est-ce qui se passe ???
Endif
http://www.rankspirit.com/downloads/dropupload_test.zip
La librairie PB_Zip nécessaire à son fonctionnement est jointe dans l'archive.
Un message "Ouch!" signale que le problème a été détecté.
Chez moi, ça arrive quasiment à chaque fois qu'on upload quelquechose avec ce programme.
J'ai bien sur fait les tests avec la 3.93 et la 3.94 (pas de différence). Je tourne sous XP.
Et inutile de dire que je suis trés trés ennuyé par ce problème

Les bidouilles qui figurent dans le programme joint essayent de gérer le problème, et permettent de faire quand même marcher ce programme. L'ennui c'est que ce problème de pile fait planter le programme de temps en temps. Ce plantage occasionnel se produit précisemment au moment du "ProcedureReturn" de la procedure "Wait" (celle qui utilise justement ReceiveNetworkData). Il n'y a évidemment aucun message d'erreur à ce moment là, c'est un gros plantage pur et dur et j'ai du pas mal galérer pour déterminer exactement à quel endroit ça plantait (comme en plus, c'est occasionnel !!)
Ce plantage est assez rare quand on lance le programme à partir de l'IDE et beaucoup plus fréquent quand on lance la version compilée du programme, ce qui ne m'a pas facilité les choses pour détecter l'endroit où il avait lieu. Aprés moult tests, il semble qu'il soit bel et bien lié au problème de pile.