PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Problème pour trouver l'origine d'une violation d'accès
Problème pour trouver l'origine d'une violation d'accès
Débuté par Julien, 23 mai 2018 10:03 - 1 réponse
Posté le 23 mai 2018 - 10:03
Bonjour,

Je rencontre parfois de façon aléatoire une violation d'accès sur une partie de code mais je n'arrive pas à en trouver l'origine. Plus précisément :
- Appel d'une fonction avec 2 paramètres, une chaine et une énumération (ici tabEtape est tableau associatif (ccsansespace) de strucEtapeDossier, la fonction renvoie un tableau associatif de strucEtapeDossier, sGroupage est une chaine et tcGroupage une valeur d'énumération) :

AVEC strGroupage
.tabEtape = DB_GetEtapesDossier(.sGroupage,tcGroupage)
...
FIN


- Dans la fonction (DB_GetEtapesDossier(sCle est une chaîne, eTypeCle est une enumTypeCle) : tableau associatif de strucEtapeDossier), j'obtiens une violation d'accès sur la ligne "CAS tcGroupage" :

SELON eTypeCle
CAS tcGroupage : HLitRecherchePremier(DOSETAPE,NORUPTURE,sCle); sGroupage = sCle
CAS ...
FIN


Ici les seuls traitements sont le test d'une valeur d'énumération, une lecture en base et une affectation de chaine. J'avoue que je sèche un peu, quelqu'un aurait une idée svp? (pour info un extrait du message d'erreur Windev ci-dessous)

Details techniques :

Module : wd220hf64.dll
Version du module : 22.0.85.1
VI : 01F220073h
Adresse de base : 000000006B980000
Erreur systeme : Access violation (GPF)
RIP = 000000006BB9E135
OS : Windows 2012 x64 (6.2.9200)

Code erreur : 1020
Niveau : erreur fatale

Dump de l'erreur du module 'wd220vm64.dll' (22.0.318.0).
Identifiant des informations détaillées (.err) : 1020
Informations de débogage :

Details techniques :

Module : wd220hf64.dll
Version du module : 22.0.85.1
VI : 01F220073h
Adresse de base : 000000006B980000
Erreur systeme : Access violation (GPF)
RIP = 000000006BB9E135
OS : Windows 2012 x64 (6.2.9200)
Registres :

  RIP = 000000006BB9E135    RBP =      1E324067630
  RAX =      1E322D16C90    RBX =      1E322D16C80
  RCX =      1E322CBD870    RDX =               99
  RSI =      1E328F65480    RDI =                4
  R8  =                0    R9  =                7
 R10 =                0    R11 =      1E322CBD870
  R12 =                4    R13 =                7
  R14 =                0    R15 =       233952A580

Pile des appels :

[wd220hf64.dll (000000006B980000), 22.0.85.1, 01F220073h]     000000006BA4FB1C : nGetProperty() + 1369625 bytes
[....exe (0000000000000000), 22.49.58.0]    0000000400000000
[....exe (0000000000000000), 22.49.58.0]    0000002A00000004
[....exe (0000000000000000), 22.49.58.0]    000000C80000002A
[....exe (0000000000000000), 22.49.58.0]    00000064000000C8
[....exe (0000000000000000), 22.49.58.0]    0000001E00000064
[....exe (0000000000000000), 22.49.58.0]    000000000000001E
[....exe (0000000000000000), 22.49.58.0]    2E5421E000000000
[???]     000001E32E5421E0
Pile invalide


Merci pour votre aide.
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 23 mai 2018 - 13:53
Coucou,

Tu pourais essayer d'utiliser une variable de transition sur les énumrations pour test ?

--
In üs we trust

Chocolat en Suisse - #Foetus
Kaeng Khiao Wan en Thailland - #ATR
Kopi luwak en Indonesie - #Abracadabra
Durio zibethinus en Malaisie - #JamaisFinie
Bánh Mì H?ng Hoa au Viêt Nam - #ImprévisibleMaGénération
Pizza à Cannes - #RAS