Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Migration
  •  » Migration PB5 -> PB11.5.1 sous Win7 - PB crash à la sortie du mode run

#26 07-03-2013 08:27:02

John77  
Membre Geek
Lieu: Paris
Date d'inscription: 26-10-2012
Messages: 43
Pépites: 196
Banque: 0

Re: Migration PB5 -> PB11.5.1 sous Win7 - PB crash à la sortie du mode run

http://img15.hostingpics.net/pics/971982CrashOllyDBG.png

Hors ligne

 

#27 07-03-2013 09:52:49

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1116
Pépites: 4,296,080,198
Banque: 9,223,372,036,854,776,000
Site web

Re: Migration PB5 -> PB11.5.1 sous Win7 - PB crash à la sortie du mode run

John77 a écrit:

Je viens de récupérer OllyDbg pour relancer le test.
Dois-je installer le Plugin Development Kit?

Merci pour tes efforts, mais je ne sais pas si je vais beaucoup t'avancer

Pour te présenter le décor avec Olly, voici ce que je peux te dire :
- dans la partie haut/gauche (desassembly) la ligne en surbrillance indique l'origine du crash : un test si une adresse mémoire et égale à 0. Il s'agit de l'adresse [eax] (contenue dans le registre eax). Malheureusement dans la liste des registres en haut à droite on ne voit pas eax, mais dans un message précédent tu indiques "Access violation reading location 0x00000000." donc eax = 0. Déréférencer un pointeur nul, un bug classique en C/C++
- dans la partie la plus instructive - la pile d'appel, on voit en haut la dernière fonction dans laquelle on se trouve : PbHeap_free de pbshr115.dll. PB est en train de libérer un bloc mémoir, mais l'adresse de bloc est nul et paf, plantage.
- tu peux voir en remontant la pile (mais en descendant la liste) que PB est bien en train de stopper l'exécution ( PBVM115.rt_stop_run rt = runtime) et je dirais que "conducteur" dont le nom apparaît dans les données de la pile ça doit être ton application.

Maintenant je ne peux que me perdre en conjectures : entre ob_set_runtime et PbHeap_free les fonctions ne sont pas nommées (pas disponibles en dehors de la dll pbshr) et il faudrait que je passe un moment avec un désassembleur pour savoir ce que c'est, mais on peut voir le nom de l'objet compilé w_finding.win (doit correspondre à la fenêtre w_finding) il pourrait être intéressant de vérifier si un objet utilisée dans cette dll (peut-être quelque chose en relation avec les dll que tu essaies de libérer à la fermeture) ne serait pas libéré une fois de trop ?

Il pourrait être intéressant d'ajouter des traces avec OutputDebugString lors du FreeLibrary() pour savoir si la lib est libérée avant ce crash.


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#28 07-03-2013 10:49:19

John77  
Membre Geek
Lieu: Paris
Date d'inscription: 26-10-2012
Messages: 43
Pépites: 196
Banque: 0

Re: Migration PB5 -> PB11.5.1 sous Win7 - PB crash à la sortie du mode run

Pour la p'tite histoire, Conducteur est l'appli utilisée par France Télévisions pour ordonnancer et gérer les sujets (titres, vidéos, prompteur, incrustation, ...) des journaux télévisés de France 2 et France 3 ainsi que quelques émissions comme Télématin, C'est au programme, Stade 2, Tout le sport, ... Le projet le plus intéressant sur lequel j'ai eu à travailler.

J'ai bien une fenêtre w_finding mais il n'y a presque rien dedans hormis les contrôles et elle se trouve dans une pbl qui ne devrait pas se charger en mémoire puisque je n'utilise pas les fonctions de recherche de sujets lors de mes tests. Après, il est possible qu'un "bras cassé" passé avant moi sur le projet ait appelé un objet de cette library depuis une autre.

En regardant la page du DevCenter de MS à propos de FreeLibrary pour tracer sa valeur de retour, je vois que le retour est Boolean alors que les déclarations dans le projet indiquent plutôt un retour Long, je ne sais pas si ça joue mais j'en doute.

Je pense que je vais en rester là.

Merci à tous pour le coup de main.

Hors ligne

 
  • Index
  •  » Migration
  •  » Migration PB5 -> PB11.5.1 sous Win7 - PB crash à la sortie du mode run

Pied de page des forums

Propulsé par FluxBB 1.2.22