PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 24 → Bug/Régression sur la fonction d'association de champs à plusieurs onglets
Bug/Régression sur la fonction d'association de champs à plusieurs onglets
Débuté par Stéphane, 06 nov. 2018 10:49 - 8 réponses
Membre enregistré
7 messages
Posté le 06 novembre 2018 - 10:49
Bonjour à tous les développeurs,

Nous avons constaté un bug bloquant sur tous nos projets migrés de version 22 à 23 et sur tout type de config Windows (7, 8.1, 10).
Celui-ci apparait sur toutes les fenêtres contenant des champs 'Onglet' dans lesquels certains champs sont associés a plusieurs onglets.
Si l'on modifie l'association et que le champs, un bouton par exemple, est associé a un seul onglet ou à aucun onglet, le plantage aléatoire disparait.
Nous avons toujours eu des soucis avec cette fonctionnalité, l'affichage était quelques fois aléatoire. Mais avec la version 23, elle devient totalement inutilisable.

Ce défaut bloque actuellement la mise en production de plusieurs de nos applications.

Il est absolument impossible d'utiliser cette fonction et de ne pas avoir le problème.
Il me semble curieux que personne n'utilise cette fonction qui donnerait beaucoup de confort si elle était opérationnelle.

J'invite donc les utilisateurs ayant rencontré ce type de problème à se manifester sur le forum ou auprès du ST.

Cordialement

William

----------------------------------------------

Vous trouverez un peu plus de détail sur "les erreurs" qui peuvent en découler.

Nous avons fourni un projet exemple simple au ST pour reproduire le problème (plusieurs champs associés à plusieurs onglets dans une même fenêtre).

Pour reproduire le problème, il suffit de changer d'onglet.
L'erreur survient, en mode GO, en moins d'une minute, de manière aléatoire.
- Dans certain cas, le test s'interrompt avec une erreur indéterminée. Il n'y a pas de message d'erreur WinDev.
- Dans certains cas, un message comme le suivant apparait :
//################################################################################################################################################

Erreur à la ligne 40 du traitement Procédure globale AfficheIconeVisuObj
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 ST 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

Details techniques :

Module : wd230obj64.dll
Version du module : 23.0.433..14
VI : 01F230053k
Adresse de base : 0000000051810000
Erreur systeme : Access violation ( GPF )
RIP = 0000000051F75E98
OS : Windows 7 x64 Service Pack 1(6.1.7601)

----- Informations techniques -----

Projet : Nom de mon projet

Appel WL :
Traitement de 'Procédure globale AfficheIconeVisuObj ' (Module L4.AfficheIconeVisuObj), ligne 40, thread 0

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

Details techniques :

Module : wd230obj64.dll
Version du module : 23.0.433..14
VI : 01F230053k
Adresse de base : 0000000051810000
Erreur systeme : Access violation ( GPF )
RIP = 0000000051F75E98
OS : Windows 7 x64 Service Pack 1(6.1.7601)

Code erreur : 1020
Niveau : erreur fatale

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

Details techniques :

Module : wd230obj64.dll
Version du module : 23.0.433..14
VI : 01F230053k
Adresse de base : 0000000051810000
Erreur systeme : Access violation ( GPF )
RIP = 0000000051F75E98
OS : Windows 7 x64 Service Pack 1(6.1.7601)
Registres :

RIP = 0000000051F75E98 RBP = B878F70
RAX = A537410 RBX = A5087C0
RCX = F406890 RDX = 61AC3140
RSI = 0 RDI = A5087C0
R8 = 1 R9 = 1F9560
R10 = 7EC0 R11 = 1F9250
R12 = B879470 R13 = 5070AC8
R14 = 0 R15 = 21C8D70

Pile des appels :

[wd230obj64.dll (0000000051810000), 23.0.433.14, 01F230053k] 0000000051CD0470 : pQueryProxy () + 2775592 bytes
[wdtst64.exe (0000000000000000), 23.0.9.0, 01F230053k] 5CA2F7F800000000
[wdtst64.exe (0000000000000000), 23.0.9.0, 01F230053k] 5C8C910000000000
[wd230vm64.dll (000000005C6A0000), 23.0.370.1, 01F230053k] 000000005C7FF840 : InfoVersionWeb () + 825536 bytes
Pile invalide

Informations supplémentaires :
...


//################################################################################################################################################
A noter que ce n'est qu'un exemple, l'historique des appels changeant d'un cas à l'autre.

- Dans un dernier cas, l'erreur suivante apparait :
//################################################################################################################################################

Erreur à la ligne 377 du traitement Procédure locale Maj_OngletR
Le passage du paramètre 1 a provoqué une erreur.
Dans le cas d'un passage de paramètre par adresse, un élément de type 'entier' ne peut pas être converti vers le type 'objet Automation'. Utilisez un paramètre local dans la procédure appelée ou passez un paramètre de type 'objet Automation'.

----- Informations techniques -----

Projet : Nom de mon projet

Appel WL :
Traitement de 'Procédure locale Maj_OngletR ' (fenL4SaiRen.PROCEDURE.Maj_OngletR), ligne 377, thread 0

Que s'est-il passé ?
Le passage du paramètre 1 a provoqué une erreur.
Dans le cas d'un passage de paramètre par adresse, un élément de type 'entier' ne peut pas être converti vers le type 'objet Automation'. Utilisez un paramètre local dans la procédure appelée ou passez un paramètre de type 'objet Automation'.

Code erreur : 1143
Niveau : erreur fatale

Dump de l'erreur du module 'wd230vm64.dll' (23.0.370.1).
Identifiant des informations détaillées (. err ) : 1143
Informations de débogage :
UEL = 101
Informations supplémentaires :
EIT_PILEWL :
...


//################################################################################################################################################

Nous avons reproduit la structure de base de cet appel dans le projet exemple.
Le message d'erreur parle d'objet Automation, alors qu'il n'y en a pas dans cette fenêtre.

A noter que le champ onglet contient de nombreux boutons associés à un ou plusieurs onglets.
L'affichage de ces boutons, dans le projet réel, est complètement aléatoire et ne respecte pas les choix définis dans l'éditeur de fenêtre. Ce problème déjà existant en version 22, c'est grandement amplifié avec la version 23.
Membre enregistré
87 messages
Posté le 06 novembre 2018 - 14:03
Bonjour William

Je n'arrive pas à reproduire ton problème, seulement en manipulant l'interface

De ce que je comprends, dans ton cas; c'est une ligne de code qui fait planter
- sur quel événement ?
- sur quelle instruction ?
Membre enregistré
281 messages
Popularité : +9 (9 votes)
Posté le 06 novembre 2018 - 16:04
Bonjour Stéphane,

Ton problème m'interpellait, aussi j'ai fait quelques tests rapides.
Mais peut-être n'ai-je pas tout compris.

J'ai beau changer l'association d'un bouton affecté initialement à plusieurs volets et aucun plantage, ça marche nickel.

Il serait probablement intéressant de voir ton code qui plante et les circonstances exact du plantage pour essayer de comprendre ton problème.

A+

--
Francis MOREL
http://www.SoftProtect.fr
Membre enregistré
7 messages
Posté le 07 novembre 2018 - 10:32
Bonjour Christophe, Bonjour Francis,

Pour reproduire le problème :

Créer une nouvelle fenêtre.
- Dans cette fenêtre, un champ onglet
- Dans le champ onglet, différents champs (boutons, tables, libellés...)
Ces différents champs sont :
* Associés à tous les onglets
* Associés à un onglet
* Associés à certains onglets uniquement (c'est ce cas qui provoque le problème). Dans notre cas, les champs associés de cette manières sont uniquement des boutons.

Le code qui génère l'erreur :
- Dans le code de déclaration de la fenêtre, déclarer une variable "enChoix" de type entier
- Créer une procédure local du type :
Procedure Test(penChoix est un entier)
Trace(pEnChoix)


- Dans le code de modification de l'onglet, un "SELON CAS", calé sur la valeur de l'onglet actif, affecte une valeur à la variable "enChoix" et appelle la procédure "Test".
SELON Onglet
CAS 1
enChoix = 10
CAS 2
enChoix = 7
CAS 3
enChoix = 12
...
FIN
Test(enChoix)


Lors du test de la fenêtre, cliquer sur les différents onglets.
Le plantage est aléatoire :
- Soit il apparait au changement d'onglet
- Soit il apparait à la fermeture de la fenêtre.
Il apparait uniquement si il y a des champs associés à "quelques onglets".
Si les champs sont associés à un seul onglet, ou à tous, il n'y a aucun problème.

--
William LAGRIFFOUL
Membre enregistré
87 messages
Posté le 07 novembre 2018 - 16:21
William,

Je viens de faire une appli test en suivant tes recommandations avec 4 onglets, les libellés, des boutons, des tables (vides) et des association de certains composants à plusieurs onglets (mais pas tous)

Je n'ai pas réussi à le planter !

Question : Pourrait-il y avoir du code d'initialisation en cours sur un onglet qui ne soit pas terminé avant le changement d'onglet ?
Membre enregistré
7 messages
Posté le 07 novembre 2018 - 17:03
Christophe, je te remercie de t’intéresser à ce problème.

Il n'y a pas de code d'initialisation sur l'onglet, dans le cas de test présent.

Comme je le disais, le bug est aléatoire, il n'arrive jamais au bout du même temps, ou après les mêmes enchaînements sur l'onglet.

Quoi qu'il en soit, le ST dispose d'un projet test qui permet de reproduire le problème et il l'ont reconnu comme tel.

Je vous tiens au courant quand correctif il y aura.

--
William LAGRIFFOUL
Membre enregistré
7 messages
Posté le 08 novembre 2018 - 09:05
Bonjour,

Mail reçu hier soir avec correctif sur le sujet :) :

Suite à l'incident référence 110485, concernant le blocage d'une application lors du changement de volet :

Un correctif a été réalisé par notre équipe Développement et notre équipe Qualité. Voici un lien vous permettant de télécharger une mise à jour pour la version "Update 3" (230053K) de WinDev 23 :

https://stg.webdev.info/Telechargement_Support_WEB/FR/telec_ST.awp…

Cette mise à jour regroupée dans une archive zip est composée de :

- \Donnees\WPOBJ.WDL (1576,98 Ko) - version :
- \Framework\linux4\wd230obj.so (12721,40 Ko)
- \Framework\linux44_64\wd230obj64.so (18022,20 Ko)
- \Framework\win32x86\wd230obj.dll (9914,50 Ko) - version : 23.0.434.43
- \Framework\win32x86\wpobj.dll (9884,50 Ko) - version : 23.0.434.43
- \Framework\win64x86\wd230obj64.dll (13400,50 Ko) - version : 23.0.434.43
- \Framework\win64x86\wpobj64.dll (13196,50 Ko) - version : 23.0.434.43

Elle doit être décompressée en conservant l'arborescence dans le dossier \Programmes\ de WinDev 23. Vous devez lors de la décompression confirmer le remplacement des fichiers de mêmes noms déjà présents.

Recréez ensuite l'exécutable de l'application, afin de le déployer à nouveau avec cette mise à jour du framework. Attention l'exécutable doit être recréé avec "DLL du framework à côté" (étape "Framework 1/2" de l'assistant de création de l'exécutable). Il ne faut pas sélectionner un framework intégré pour l'exécutable, il se pourrait pas bénéficier de la mise à jour.

--
William LAGRIFFOUL
Membre enregistré
87 messages
Posté le 08 novembre 2018 - 10:04
Merci William ne nous faire partager l'info

Bon dév's

Christophe
Membre enregistré
281 messages
Popularité : +9 (9 votes)
Posté le 08 novembre 2018 - 18:20
Bonjour,

Satisfait de voir que ton problème est résolu maintenant.
En suivant tes directives je n'avais pas non plus réussi a reproduire ton erreur malgré un nombre de tests conséquent.
Il doit probablement y avoir d'autres caractéristiques de tes champs ou de ton code qui interviennent dans le problème.

Merci aussi d'avoir partager la solution.

--
Francis MOREL
http://www.SoftProtect.fr