2009-03-05 19 views
0

Je sais que ce sujet a été fait à la mort sur les groupes de nouvelles et il y a des messages du forum pour l'Afrique - mais je voulais la possibilité de vous des experts en cas de débordement de la pile :)L'application VB6 disparaît sans laisser de trace: la commutation entre PCode et Native Code fera-t-elle une différence?

Notre application VB6 de temps en temps disparaît juste pendant que l'utilisateur est faire des choses et ne donne aucune sorte d'erreur ni dans le journal des erreurs du PC!

Je me demandais si quelqu'un en avait déjà entendu parler sur VB6 et ce que vous avez fait pour le réparer?

Je pensais que peut-être changer tout le code du code natif en pcode pourrait offrir une plus grande stabilité?


Extra info:

  • Nous utilisons Mdac 2.8
  • vrai DB Grille 6.0E

notes ajoutées dans les modifications:

  • Notre application est très grand avec 113 composants séparés et 120MB compilé siz e (c'est-à-dire sans images incorporées ou quoi que ce soit)
  • Notre couche de présentation crée les objets à la volée de sorte que tout soit en retard. Je ne me soucie pas vraiment de la performance locale de l'application VB6 car elle ne fait pas vraiment de traitement sérieux pour autant que je puisse voir, donc la performance est complètement goulue par notre base de données Oracle dans le centre de données à 80 miles de 300 utilisateurs - cauchemar!
+0

>> mais je voulais l'option de vous experts sur l'échange de pile :) Probablement vous confondu "Experts d'échange et de débordement Stack !! – goldenmean

+0

Je tapais à la hâte tout comme mon tour quittait le bureau - donc échange d'experts a sauté dans ma tête - mon mauvais :) – Davinchio

Répondre

1

Cela fait une différence. Mais pas en faveur de l'un ou de l'autre. Parce que deux méthodes ne sont pas exactement les mêmes, elles peuvent produire des résultats différents avec les cas de bordure.

Comprenez également que le problème que je décris sont des problèmes de compilation et non des erreurs du programmeur. Donc, vous voulez vraiment vous assurer que c'est le problème. Nous vérifions cela en comparant les changements avec la dernière bonne version connue.

Le problème que nous avons rencontré est que, pour certains de nos plus gros projets, une légère modification du code entraînera des erreurs (ou l'application disparaîtra). Cela arrive quand le binaire est utilisé.

Lorsque cette circonstance rare se produit, la seule façon de corriger est de réorganiser les lignes de code ou d'insérer des lignes factices comme i = i. Tout ce qui forcera le compilateur à émettre une séquence différente d'assembly ou de pcode. Ensuite, le problème disparaît.

Il y a eu quelques cas où nous l'avons fait, compilé avec succès, modifié et recompilé avec succès. Ce que nous pensons arriver dans ce cas est que le registre change suffisamment pour forcer l'émission d'un ensemble binaire/pcode légèrement différent.

Vous pouvez également vouloir nettoyer votre registre et votre dossier temporaire. Mon expérience est que cela peut arriver une fois toutes les 1000 à 500 compiles d'un grand projet avec plusieurs références.

Comme un commentaire personnel quand cela se produit la cause et la solution sont apparemment absurde et me donne envie de sortir la poupée vaudou et faire une danse de la pluie.