IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Plantage en installation reseau [WD12]


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    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 éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    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 émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 286
    Points : 2 562
    Points
    2 562
    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
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Bonjour,
    Merci pour vos réponses
    Voici le code du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI ThreadEtat("LireTampon")=threadInexistant ALORS
    	ThreadExécute("LireTampon",threadNormal,"LireTamponPassages")
    FIN
    Voici le code de "LireTamponPassages"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    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 averti Avatar de Trs80M1
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2012
    Messages
    187
    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 : 187
    Points : 310
    Points
    310
    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
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    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.

Discussions similaires

  1. Configuration du multiboot suite à plantage d'installation
    Par Grimmjow dans le forum Administration système
    Réponses: 14
    Dernier message: 28/05/2007, 07h35
  2. installation reseau et fonctionnement
    Par nath-0-0 dans le forum WinDev
    Réponses: 3
    Dernier message: 14/05/2007, 14h54
  3. [Infobel] Instalation reseau
    Par aliad dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 29/03/2007, 09h08
  4. Réponses: 1
    Dernier message: 06/12/2006, 09h44
  5. Installation réseau
    Par debPowa dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 02/04/2006, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo