Page 1 sur 1

Lun 28/01/2013 - Actualités

Posté : lun. 28 janv. 2013 11:02
par Xavier
Crash


Le crash à la fermeture a été localisé.
Il se produit quand l'application est fermée alors que l'Agenda est encore ouvert, mais pas de façon systématique. A la réflexion, il y avait le même problème sur les autres outils.

Le phénomène est étrange, car la fermeture de l'application par le menu déclenche une procédure utilisée depuis des années, qui ferme d'abord les dialogues ouverts, puis les outils ouverts, puis la Barre, et enfin sauve les fichiers et liquide les dernières variables avant de rendre la main. C'est après toutes ces opérations (après la dernière ligne de code XT) que quelque chose déclenche un changement de sélection dans la liste des évènements ! La fenêtre de l'Agenda étant fermée et toutes ses variables détruites, le crash se produit quand le code tente de récupérer la donnée utilisateur pointée par la sélection.

Cela ressemble à une mise à jour "tardive" de Windows sur des composants fantômes. Il est peu probable que ça puisse être empêché, donc la correction sera sans doute un blindage du code à cet endroit. Mais pour le moment le blindage explose car il utilise des variables... détruites à la fermeture. lol

Lun 28/01/2013 - Actualités

Posté : lun. 28 janv. 2013 12:33
par Xavier
AntiCrash


Un système AntiCrash a été branché dans les outils utilisant des ListView, puisque ce sont eux qui sont mis à jour après leur destruction.

La trace est automatiquement activée lors de la fermeture afin de collecter les cas possibles via le fichier XTools.log :

Code : Tout sélectionner

2013-01-28	11:27:19	Info	XTools	Terminated
2013-01-28	11:27:19	Info	AntiCrash	(TAgenda_Form.Agenda_List_OnChange)
2013-01-28	11:27:19	Info	AntiCrash	(TContacts_Form.Contacts_List_OnChange)
La suite des tests va permettre de valider le système anticrash.

Re: Lun 28/01/2013 - Actualités

Posté : lun. 28 janv. 2013 20:38
par Denis
En fait c'est ta trace qui fait le crash, car son parent est la fenêtre détruite ;-) LOL