Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/12/2012, 18h18   #1
gbzmt
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 163
Points : 36
Points : 36
Par défaut Plantage en installation reseau

Bonjour,
J'ai développé une application qui marche parfaitement en installation standard.
Mais lorsque je créé l'installation en réseau (fichiers .FIC et application sur la même machine),un bug se produit après un temps variable suite au démarrage d'un thread. (de 10 à 60 sec)
Voici le descriptif de l'erreur:
Citation:
Erreur à la ligne 15 du traitement Clic sur COURSES.
Une erreur système inattendue est survenue.
Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
- une description des circonstances de l'incident
- les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
- les informations techniques suivantes

Détails techniques :

Module : WD120OBJ.DLL
Version du module : 12.00Nwj
VI : 01F120048k
Adresse de base : 25060000
Erreur système : Access violation (GPF)
EIP = 250DE3BB
OS : Windows XP ou .NET Service Pack 3(5.1.2600)

Informations techniques

Projet : EKW1

Dump de l'erreur du module <WD120VM.DLL> <12.01Ah>.

- Appel WL :
Traitement de <Accueil.COURSES>, ligne <15>, thread <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 1020

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Une erreur système inattendue est survenue.
Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
- une description des circonstances de l'incident
- les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
- les informations techniques suivantes

Détails techniques :

Module : WD120OBJ.DLL
Version du module : 12.00Nwj
VI : 01F120048k
Adresse de base : 25060000
Erreur système : Access violation (GPF)
EIP = 250DE3BB
OS : Windows XP ou .NET Service Pack 3(5.1.2600)

- Infos de debug :
Registres :

EIP = 250DE3BB EBP = 0012EFA8
EAX = 03080046 EBX = 00000023
ECX = 0000001E EDX = 00000000
ESI = 0000000A EDI = 00B9BC90

Pile des appels :

[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 250DE3BB
[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 250DE771
[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 250DEC81
[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 250DB396
[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 25092895
[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 25138B8B : pclCreateFactory() + 19019 bytes
[WD120OBJ.DLL (25060000), 12.00Nwj, 01F120048k] 25138B8B : pclCreateFactory() + 2678 bytes-> INVALID, stack increased by 4
[EKW1.exe (00000000), 1.00Db] ????
[EKW1.exe (00000000), 1.00Db] C20CC483
Pile invalide


- Infos attachées :
EIT_PILEWL :
Clic sur COURSES (Accueil.COURSES), ligne 15
EIT_COMPOSANT :

EIT_DATEHEURE : 25/12/2012 18:03:42

- Identifiant dans le .err : 1020
Je suis sous XP

Merci d'avance pour vos réponses souvant pertinentes et jouyeux Noël
gbzmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 18h21   #2
miripesage
Membre Expert
 
Avatar de miripesage
 
Homme Said
pesage electronique
Inscription : novembre 2009
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Said
Localisation : Algérie

Informations professionnelles :
Activité : pesage electronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 697
Points : 1 114
Points : 1 114
Bonjour et bonne faite à tout le monde,
Il faut voir le code du bouton pour avoir une idée(peut-être un problème de timeout ?, une boucle ?)
__________________
Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul!
miripesage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 18h57   #3
Nicolas_Jeanneau
Membre Expert
 
Homme Nicolas Jeanneau
Responsable du parc et des réseaux de télécommunication
Inscription : octobre 2010
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Responsable du parc et des réseaux de télécommunication
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 870
Points : 1 682
Points : 1 682
Bonjour,

il faudrait savoir ce que fait le thread : accès réseau, accès à des lecteurs mappés, connexion BDD, etc ... car c'est souvent là qu'il y a un problème.
Tu peux mettre des traces après les commandes clefs pour savoir à partir d'où ça plante.

à bientôt,

Nicolas
Nicolas_Jeanneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 07h54   #4
gbzmt
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 163
Points : 36
Points : 36
Bonjour,
Merci pour vos réponses
Voici le code du bouton
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
gbMarqueur=0
VérifMachine()
SI gbMarqueur=1 ALORS
	RETOUR
FIN
SI gbLoc=1 ALORS
	HLitRecherche(Compétitions,NumCompétition,gnNumCompét)
	HLitRecherche(Constantes,NomConstante,"LieuLoc")
	SI HTrouve=Vrai ALORS 
		Constantes.ValeurConstante=Compétitions.lieu
		HModifie(Constantes)
	FIN
FIN
Multitâche(-10)	
Ouvre(FEN_Course)
Voici le code de VérifMachine()
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
PROCEDURE VérifMachine()
HLitRecherche(Constantes,NomConstante,"DLU")
SI HTrouve=Vrai ALORS
	SI Constantes.ValeurConstante<>"" ALORS //L'utilisation est limitée
		SI DateSys>Val(Constantes.ValeurConstante)-12345678 ALORS
			Erreur("LA DATE LIMITE D' UTILSATION EST DEPASSEE"+RC+RC+"CONTACTEZ VOTRE FOURNISSEUR")
			gbMarqueur=1;Ferme
		FIN
	FIN
FIN
SI Position(fRepEnCours,"\\")=0 ALORS
	ch est une chaîne=NetNomMachine()
	x est un entier;Nm est une chaîne=""
	POUR x=1 A Taille(ch)
		Nm=Nm+Caract(Asc(ch[[x]])+x)
	FIN
	HLitRecherche(Constantes,NomConstante,"RuetanidrOmoN")
	SI HTrouve = Vrai ALORS
		SI Constantes.ValeurConstante="" ALORS
			Constantes.ValeurConstante=Nm
			HModifie(Constantes)
		SINON SI Constantes.ValeurConstante<>Nm ALORS
			Erreur("OUVERTURE IMPOSSIBLE "+RC+RC+"CONTACTER LE FOURNISSEUR (Erreur N° 013)")
			gbMarqueur=1
			Ferme
		FIN
	FIN
FIN
Mais je ne pense pas que cela vienne de là, car si je ne fais rien d'autre après avoir ouvert la fenêtre rien ne se passe.
La fenêtre courses posséde une combo "Manches" qui lance le thread
Citation:
ThreadExécute("Lire",threadNormal,"Lire_PassageKart")
dont voici le code ci-dessous
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PROCEDURE Lire_PassageKart()
BOUCLE
	//si gbBloquerLecturePassages =0 alors //supprimé pour cause d'écart heure
	EntréesDécodeur=EntréesDécodeur+sLit(Accueil.Num_Port_Décodeur,sDansFileEntrée(Accueil.Num_Port_Décodeur))
	x est un entier=PositionOccurrence(EntréesDécodeur,"$",1)
	SI x=0 ALORS 
		EntréesDécodeur=""
	SINON
		EntréesDécodeur=Droite(EntréesDécodeur,Taille(EntréesDécodeur)-x+1)
	FIN
	SI  Taille(EntréesDécodeur)>18 ALORS	
		BOUCLE
			sPsg est une chaîne=Gauche(EntréesDécodeur,19)
			SI EcartHeureDéc=0 ALORS
				EcartHeureDéc=HexaVersEntier(Milieu(sPsg,12,8))-HeureVersHeureDéc(Maintenant)
			FIN
			SI START..Enfoncé=Vrai OU WARMUP..Enfoncé=Vrai OU HexaVersEntier(Milieu(sPsg,6,6))=9992 ALORS //9992= StartPoussoir
				RenseignerTamponPassages(HexaVersEntier(Milieu(sPsg,6,6)),HexaVersEntier(Milieu(sPsg,12,8))-EcartHeureDéc,"Poussoir")
			FIN
			SI PositionOccurrence(EntréesDécodeur,"$",2)=0 ALORS
				EntréesDécodeur =""
				Multitâche(-3)
				SORTIR
			SINON
				EntréesDécodeur=Droite(EntréesDécodeur,Taille(EntréesDécodeur)-PositionOccurrence(EntréesDécodeur,"$",2)+1)
				SI Taille(EntréesDécodeur)<19 ALORS SORTIR
			FIN
		FIN
	SINON
		Multitâche(-10)
	FIN
FIN
La fonction "RenseignerTamponPassages" renseigne le fichier "TamponPassages"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PROCEDURE RenseignerTamponPassages(Transp,HDéc,Origine)
SémaphoreDébut("TamponPass")
TamponPassages.NumPassage=NumPassage2
SI Transp=9991 OU Transp=9993 ALORS
	FEN_PsgManuel..Visible=Vrai
	PassagesManuels.NumPassage=TamponPassages.NumPassage
	PassagesManuels.NumKart=FEN_Course.DerPassageManuel
	PassagesManuels.HeurePassageDéc=HDéc 
	PassagesManuels.Origine=Origine
	HAjoute(PassagesManuels)
	TableAffiche(FEN_PsgManuel.Table)
	DonneFocus(FEN_PsgManuel.VALIDER)
FIN
TamponPassages.Transpondeur=Transp
//Correction si nouvelle heure passage< heure passage précédent
SI HDéc < DernièrePassageHeureDéc ALORS
	HDéc=DernièrePassageHeureDéc
FIN
DernièrePassageHeureDéc=HDéc //mise en mémoire
//
TamponPassages.HeureDécimale=HDéc
TamponPassages.CodeStatut=6 //valide
SI gTopDépart=Faux ALORS
	TamponPassages.CodeStatut=1 //warmup
SINON SI BTN_Drapeau..Enfoncé=Vrai
	TamponPassages.CodeStatut=7 //drapeau
SINON SI Transp=9991 OU Transp=9993 ALORS
	TamponPassages.CodeStatut=4 //passage manuel
FIN
HAjoute(TamponPassages)
NumPassage2++
SémaphoreFin("TamponPass")
La Combo lance aussi le thread
Code :
1
2
3
SI ThreadEtat("LireTampon")=threadInexistant ALORS
	ThreadExécute("LireTampon",threadNormal,"LireTamponPassages")
FIN
Voici le code de "LireTamponPassages"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
PROCEDURE LireTamponPassages()
sdTamponPassages est une Source de Données
BOUCLE
	SI gbBloquerLecturePassages=0 ALORS
		ch est une chaîne="SELECT TamponPassages.CodeStatut AS CodeStatut,TamponPassages.NumPassage AS NumPassage,"+...
		"TamponPassages.Transpondeur AS Transpondeur,TamponPassages.HeureDécimale AS HeureDécimale"+...
		" FROM TamponPassages"+...
		" ORDER BY HeureDécimale ASC"
		x est un entier=HExécuteRequêteSQL(sdTamponPassages,hModifieFichier,ch)
		SI HNbEnr(sdTamponPassages)>0 ALORS
			SémaphoreDébut("TamponPass")
			HLitPremier(sdTamponPassages)
		//si pas HEnDehors(sdTamponPassages) alors
			SI sdTamponPassages.Transpondeur<>9992 ALORS
				DécoderPassageHexa(sdTamponPassages.Transpondeur,sdTamponPassages.HeureDécimale,sdTamponPassages.NumPassage+gnNbPassagesAjoutés,...
				sdTamponPassages.CodeStatut)
			SINON
				Multitâche(-10)
				SI START..Visible=Vrai ALORS
					SI START..Enfoncé=Faux ALORS
						START..Enfoncé=Vrai
					SINON
						START..Enfoncé=Faux
					FIN
					Start_("Poussoir")
				FIN
			FIN
			HSupprime(sdTamponPassages)
			SémaphoreFin("TamponPass")
		SINON
			Multitâche(-10)
		FIN
	SINON
		Multitâche(-20)
	FIN
FIN
A ce stade là aucun bug ne se produit
Mais lorsque je lance le thread suivant par l'intermédiaire du bouton "Simulation"
Code :
1
2
3
4
5
6
7
8
9
SI MoiMême..Enfoncé=Vrai ALORS
	SI ThreadEtat("SimulCompét")=threadInexistant ALORS
		ThreadExécute("SimulCompét",threadNormal,"SimulationCompétition")
	FIN
	MoiMême..Libellé="STOP"
SINON
	ThreadArrête("SimulCompét")
	MoiMême..Libellé="SimulCompét"
FIN
Dont voici le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
PROCEDURE SimulationCompétition()
Psg  est une chaîne="PassagesHexa.Passage2"
x est un entier;xx est un entier=1
Temp est un entier
Msg est une chaîne
EcartHeureDécSimul est un entier=1000000//pour décaler l'heure sys et l'heure transp
TranspInconnu est un entier=111111
Recommence:
HLitPremier(PassagesHexa,NumPassage)
x=PassagesHexa.NumPassage
yy est un entier=1
BOUCLE
	Multitâche(-10)
	SI SimulCompèt..Enfoncé=Faux ALORS
		ThreadArrête("SimulCompét")
		SORTIR
	FIN
	Trans est un entier=HexaVersEntier(Milieu({Psg},6,6))
	SI Trans<>0 ALORS
		HeureDécSimul est un entier=HeureVersHeureDéc(Maintenant())-EcartHeureDécSimul
		HeureHexa est un chaîne=EntierVersHexa(HeureDécSimul)
		//HeureHexa est un chaine=milieu({psg},12,8)
		y est un entier=Taille(HeureHexa)
		POUR x= y+1 A 8
			HeureHexa=0+HeureHexa
		FIN
		yyy est un entier=modulo(yy,yy)
		SI yyy=0 ALORS 
			Msg="$3502"+Milieu({Psg},6,6)+HeureHexa
		SINON
			Msg="$3502002708"+HeureHexa
		FIN
		SI PMSimulation..Enfoncé=Vrai ALORS
			PMSimulation..Enfoncé=Faux
			Msg="$3502002707"+HeureHexa
		FIN
		SI ModifTransp..Enfoncé=Vrai  ET Milieu({Psg},6,6)="00115C" ALORS
			Msg="$3502007777"+HeureHexa
		FIN
		SI Inconnu..Enfoncé=Vrai ALORS
			Inconnu..Enfoncé=Faux
			Msg="$3502"+TranspInconnu+HeureHexa
			TranspInconnu++
		FIN
	FIN
	HLitRecherche(EngagésManche,"Transpondeur",Trans)
	SI PAUSE..Enfoncé=Vrai ALORS
		GOTO Fn
	FIN
	SI HTrouve(EngagésManche)=Vrai OU Trans=9992//  et Trans<> 688880 alors
		sEcrit(Num_Port_Simul,Msg)
	FIN
	BOUCLE
		SI sDansFileSortie(Num_Port_Simul) = 0 ALORS SORTIR
	FIN
	Multitâche(-1-(2*x))
	Multitâche(-Temp)
	Temp=Hasard(10)*Hasard(20)
	HLitSuivant(PassagesHexa)
	yy=yy+1
	Fn:
	SI HEnDehors(PassagesHexa) ALORS 
		GOTO Recommence
	FIN
FIN
Aprés quelques secondes (variable de 10 à 120s) le message d'erreur apparait
Excusez moi d'avoir été aussi long
Merci d'avance
gbzmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 09h21   #5
gbzmt
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 163
Points : 36
Points : 36
J'ai oublié....
Ce bug ne se produit que dans le cas d'une installation réseau, pas en installation standard.
gbzmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h00   #6
Trs80M1
Membre habitué
 
Homme
Responsable de service informatique
Inscription : décembre 2012
Messages : 88
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2012
Messages : 88
Points : 111
Points : 111
Bonjour,

le problème survient quand :
- l'application est exécutée à distance, je veux dire par là l'exécutable sur un poste et les fichiers ailleurs
- l'appli et les fichiers sont sur un autre poste et elle est lancée en double-cliquant sur l'exe dans un partage
- on tente d'installer l'appli sur un poste distant

parce que la problématique n'est pas la même suivant les cas.
Trs80M1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 18h12   #7
gbzmt
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 163
Points : 36
Points : 36
Bonjour,
En fait, je vous ai mal aiguillé.
En prolongeant les essais:
-Le bug ne se produit jamais en mode test
-Très rarement en installation standard (mais quelques fois quand même)
-Très rapidement en installation réseau (appli et Fichiers sur le même ordinateur)

En cherchant longtemps, j'ai découvert la source de mes souscis, il s'agit de l'affichage de la table:Table_PassagesManche (voir code ci-dessous)
Code :
1
2
3
//Multitâche(-5)
//TableSelectPlus(Table_PassagesManche,TableOccurrence(Table_PassagesManche))
//TableSelectMoins(Table_PassagesManche)
Ces lignes sont dans la procédure "DécoderPassageHexa" qui est lancée par le thread "LireTamponPassages"
En supprimant ces lignes, je n'ai plus de bug, il ne me reste plus qu'à chercher la solution pour les remplacer et obtenir l'affichage voulu.
Encore merci
gbzmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 13h42   #8
gbzmt
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 163
Points : 36
Points : 36
En conclusion
J'ai définitivement résolu mon problème en supprimant les TableAffiche à l'intérieur d'un thread et en les mettant dans un timersys.
Apparemment la mise à jour des tables fichier et les threads ne font pas bon ménage.
Merci encore à ceux qui m'ont répondu
gbzmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h55.


 
 
 
 
Partenaires

Hébergement Web