Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Nouveau Membre du Club
    Inscrit en
    février 2008
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 170
    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:
    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

  2. #2
    Membre Expert Avatar de miripesage
    Homme Profil pro Said
    pesage electronique
    Inscrit en
    novembre 2009
    Messages
    702
    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 : 702
    Points : 1 120
    Points
    1 120

    Par défaut

    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!

  3. #3
    Membre Expert
    Homme Profil pro Nicolas Jeanneau
    Développeur et responsable micros/réseaux
    Inscrit en
    octobre 2010
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Jeanneau
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : octobre 2010
    Messages : 1 067
    Points : 2 057
    Points
    2 057

    Par défaut

    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

  4. #4
    Nouveau Membre du Club
    Inscrit en
    février 2008
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 170
    Points : 36
    Points
    36

    Par défaut

    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
    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

  5. #5
    Nouveau Membre du Club
    Inscrit en
    février 2008
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 170
    Points : 36
    Points
    36

    Par défaut

    J'ai oublié....
    Ce bug ne se produit que dans le cas d'une installation réseau, pas en installation standard.

  6. #6
    Membre actif
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    décembre 2012
    Messages
    127
    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 : 127
    Points : 154
    Points
    154

    Par défaut

    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.

  7. #7
    Nouveau Membre du Club
    Inscrit en
    février 2008
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 170
    Points : 36
    Points
    36

    Par défaut

    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

  8. #8
    Nouveau Membre du Club
    Inscrit en
    février 2008
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 170
    Points : 36
    Points
    36

    Par défaut

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •