none
Defaillance dans Kernel32.dll RRS feed

  • Question

  • Bonjour

    Aparté : J'arrive apres la bataille et viens de poster sur le mpfr.vb (comprendre Usenet). Bref désolé, si par magie du Net , ce sujet arrive en double.

    Mon application , plus précisemment une fonctionnalité de mon application, génère au bout d'un certains temps une erreur :
    défaillance monapplication.exe , module défaillant kernel32.dll , version patati-patata, adresse de défaillance etc.

    La fonctionnalité est (ouvrez les pincettes) d'espionner (fermez les pincettes) la communication sur une liaison série entre 2 équipements.


    Je ne vois pas trop comment trouver le début d'une micro-piste pour résoudre ce problème.  Une Idée ? (je prendrai mêmes les nano-pistes par paquet de 1000)

     Déjà il faut que je trouve comment reproduire à coup sur l'erreur.
    (c'est pas gagné). Ensuite Identifier mes appels à kernel32. (c'est toujours pas gagné). Je compte  installer une version d'eval de API Monitor
    L'adresse de défaillance est  0x00012afb (marrant ca donne bien des resultats sur Google)
    Evidemment le problème n'a pas l'air (restons prudent) de se produire lorsque je suis sous l'environnement de développement (vb6)

    Bref ce post est une bouteille à la mer, en espérant que quelqu'un puisse m'indiquer la direction du rivage.

    Merci d'avance pour toute réponse.

    mardi 8 juin 2010 15:16

Réponses

  • Rebonjour.

    Si je supprime les causes d'overflow, je n'ai plus aucune erreur.

    C'est finalement l'absence de message dépassement de capacité qui m'a trompé.

    Maintenant je vais générer volontairement l'overflow. (en utilisant le Controle Timer et la dll de vbaccelerator )

    • Marqué comme réponse Alex Petrescu vendredi 18 juin 2010 12:48
    jeudi 17 juin 2010 15:19

Toutes les réponses

  • Bonjour,

    Parfois c'est la DLL, OCX ou autre qui n'est plus à jour dans sa version, tu peux tenter d'en télécharger une autre et de voir la version si <>, ou encore de la mettre avec ton exe ?

    Cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mardi 8 juin 2010 17:17
  • Bonjour,

     

    Utilisez-vous des API dans votre application ? Avez-vous réussi au moins de localiser la partie de code susceptible a générer cette erreur ?

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    mercredi 9 juin 2010 10:59
  • >>Utilisez-vous des API dans votre application ?

    Oui

    J'utilise également un Timer 'Haut Résolution' trouvé ici

    http://www.vbaccelerator.com/home/vb/code/Libraries/HiResTimer/VB6_HiResTimer_Full_Source_Code.asp

    (je me sers de la dll)

    Peut etre une piste..

     

    >>Avez-vous réussi au moins de localiser la partie de code susceptible a générer cette erreur ?

    Pas encore. Mais c'est l'objectif de la journée de demain ;o)

    Je vais séparer l'acquisition de la communication (j'utilise le controle mscomm), de la partie "décodage" des trames recues.

    Si vous pensez que cela peut venir l'appel d'une API, je peux également mettre une trace dans un fichier texte pour tout appel de cette API.

    (avant et apres l'appel), on verra bien si cela mène quelque part.

    Dans tous les cas, je posterai ici  le resultat de mes investigations.

     

     

     

     

     

    Aparté : Quelqu'un arrive à poster ici avec le navigateur Opéra ?

    mercredi 9 juin 2010 15:03
  • Bonjour,

    Je viens de remplacer le Timer 'Haute Résolution' par le contrôle Timer de VB6.

    Résultat : plus de message d'erreurs : mais l'application quitte sans prévenir.  (au bout de 3 - 4 H)

    Rien dans le journal d'evenement. Je ne sais pas si c'est mieux pour les tests ;o)

    Je continue..

    jeudi 10 juin 2010 09:19
  • Bonjour,

     

    Dans l’évènement click du contrôle Timer vous utilisez des ressources partagées par d’autres composants de votre application ? Peut-être il s’agit d’un conflit de partage des ressources. Sans un journal d’évènement il est vraiment difficile à identifier le problème exact.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    jeudi 10 juin 2010 09:35
  • >>Dans l’évènement click du contrôle Timer vous utilisez des ressources partagées par d’autres composants de votre application ?

    Oui. (je lis dans l'évènement Timer du contrôle Timer).

    J'ai bien des variables globales qui sont accessibles à la fois dans l'evenement _onComm. et dans une procédure appelé par l'evenement _Timer.

    Bon , Je réecris le code avec plus de rigeur. (C'est que VB est *tellement* tolérant , que l'on finit par ne plus se représenter les mécanismes qui sont en jeu).

     

     

    jeudi 10 juin 2010 13:01
  • Bonjour,

    Timer 'Haute Résolution' par le contrôle Timer de VB6.

    Résultat : plus de message d'erreurs : mais l'application quitte sans prévenir.  (au bout de 3 - 4 H)


    Un timer en dessous de 50 ms ça ne sert pas à grand chose, alors la haute résolution...

    Ah, trois, quatre heure... nomral il doit se reposer...


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Proposé comme réponse EhJoe jeudi 10 juin 2010 15:43
    jeudi 10 juin 2010 15:40
  • Arf.. j'ai le code HTML en guise de réponse, je préfére mon lecteur de News. !

    je reprends :

    Pour principalement faire de l'embarqué , j'en suis bien conscient. L'idéal eut été  d'avoir un port série dédié (carte PCMCIA par exemple) avec la possibilité de mettre un timeStamp sur la reception des echantillons. (Détection de Fin de trame par 4 ms de silence dans le protocole !)

    (Je m'écarte du sujet).

    J'ai réecrit le code afin de ne pas partager de ressources (variables globales) entre les evenements _Timer et _OnComm.

    Pas Mieux, l'appli a quitté sans prévenir au bout de 4H.

    Je vais éplucher (et enrichir) mes fichiers logs., Je devrais bien voir dans quelle procédure cela se passe.

     

    vendredi 11 juin 2010 07:28
  • Bonjour,

     

    Tout à fait, si vous découvrez la procédure qui lance l’erreur ça sera plus facile. Je vous prie de nous tenir au courant si vous trouvez quelque chose intéressant.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    vendredi 11 juin 2010 09:30
  • Bon..

    je vais bien sur relancer pour confirmer (voir si ce n'est pas aléatoire). Mais la procédure qui génère l'erreur est bien le décodage de ma trame (DecodeFrame) , appelé par l'evenement _Timer.

    Il n'y a pas de réentrance de code.

    Ca ne m'avance pas trop. car j'ai l' argument d'entrée de la fonction DecodeFrame (une string), et je n'ai pas d'erreur en le réinjectant

    - Dans l'IDE

    - Sur un executable spécialement compilé.

    Et je vois dans mes traces que la Fonction DecodeFrame a déjà été appelée avec ce même argument 448 fois avant plantage de l'application

    Ca devient interessant ;o)

    vendredi 11 juin 2010 15:21
  • Bon. je vais faire tourner l'appli ce week-end mais sous l'IDE, on verra ce que ca donne
    vendredi 11 juin 2010 15:31
  • Bonjour,

     

    Avez-vous des nouvelles informations ?

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    lundi 14 juin 2010 08:32
  • Oui.

    et je crains fort de vous décevoir.

    L'IDE a bien relevé un overflow dans une procédure (-qui paraissait pourtant simple-) ou il n'y avait pas de gestion d'erreurs.

    (Les joies du copier/coller) Une bête erreur de compteur que je n'ai pas enlevé lors de la copie de la procédure depuis un autre projet

    Le temps avant overflow dépend des données de communication  espionnées.

    Pour être sur, je rétablis le Timer "Haute-Résolution". Je veux être sur de ne pas passer à coté de quelque chose.

    Mais je vois dans le code de ce  Timer ,  l'appel à l'API  RtlMoveMemory de Kernel32 . Si mon application se termine à cause d'une erreur overflow non gérée. Je suppose que l'objet Timer non correctement déchargé continue son appel à RtlMoveMemory, sur un espace mémoire qui n'est plus alloué -> Erreur Système.

     

     

     

     

    mardi 15 juin 2010 07:50
  • Hum. Pourquoi l'application quitte t'elle sans le message d'erreur :" Erreur d'execution 6 : Dépassement de capacité."

    C'est quand même bien géré ..

     

    mardi 15 juin 2010 07:55
  • Bonjour,

     

    Donc la cause de votre erreur était une API non gérée, et pas le contrôle Timer ? Quel comportement obtenez-vous si vous éliminez les causes de l’overflow ?

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    mardi 15 juin 2010 08:24
  • Désolé pour la réponse tardive.

    Je viens donc de remettre le Timer 'par API' (on se comprend bien ?), et eliminer les causes d'overflow. Je laisse tourner ..

    (wait and see)

    mercredi 16 juin 2010 12:32
  • Rebonjour.

    Si je supprime les causes d'overflow, je n'ai plus aucune erreur.

    C'est finalement l'absence de message dépassement de capacité qui m'a trompé.

    Maintenant je vais générer volontairement l'overflow. (en utilisant le Controle Timer et la dll de vbaccelerator )

    • Marqué comme réponse Alex Petrescu vendredi 18 juin 2010 12:48
    jeudi 17 juin 2010 15:19
  • Bonjour,

    C'est le seul post qui réponde à ma recherche "silence de fin de trame" alors je me permet...

    Y a t'il une fonction qui permet de détecter la fin de trame sur silence avant de la lire ou faut-il écrire le code?

    Merci pour vos réponses.


    Daniel

    jeudi 13 décembre 2012 08:56