IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

First-chance exception in myprog.exe (MFC42D.DLL): 0xC0000005: Access Violation.


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut First-chance exception in myprog.exe (MFC42D.DLL): 0xC0000005: Access Violation.
    Bonjour,

    J'ai beau triturer toutes les options, chercher sur le net, je ne comprend pas pourquoi mon programme (en fait c'est pas le mien mais j'en reprend un qui marche pourtant) ne fonctionne pas en debug :

    First-chance exception in myprog.exe (MFC42D.DLL): 0xC0000005: Access Violation.
    Il s'arrête dans le WINMAIN.cpp ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        // App global initializations (rare)
        if (pApp != NULL && !pApp->InitApplication())
            goto InitFailure;
    
        // Perform specific initializations
        if (!pThread->InitInstance())
        {
            if (pThread->m_pMainWnd != NULL)
            {
                TRACE0("Warning: Destroying non-NULL m_pMainWnd\n");
                pThread->m_pMainWnd->DestroyWindow();
            }
            nReturnCode = pThread->ExitInstance();
            goto InitFailure;
        }
        nReturnCode = pThread->Run();
    Merci de me dire quelles options changer (le code doit fonctionner puisque l'exe en release fonctionne) pour pouvoir le faire fonctionner en debug.


  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par stof Voir le message
    Bonjour,

    J'ai beau triturer toutes les options, chercher sur le net, je ne comprend pas pourquoi mon programme (en fait c'est pas le mien mais j'en reprend un qui marche pourtant) ne fonctionne pas en debug :


    Merci de me dire quelles options changer (le code doit fonctionner puisque l'exe en release fonctionne) pour pouvoir le faire fonctionner en debug.

    0xC0000005: Access Violation signale un bug, en debug ce probléme devrait être facile à résoudre.
    ton argument n'est pas valide, ce n'est pas parce qu'un programme semble fonctionner dans un mode qu'il est exempt de bug.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Bonjour,

    Certes mais si je fais un main vide, ça plante quand-même dès le début donc j'ai même pas le temps de trouver un bug dans les fichiers du programme qu'il est déjà arrêté

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Des idées?

  5. #5
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Je rejoins Farscape, si ton programme plante, c'est forcément une problème de ton code avant d'être un problème d'options Debug/Release.

    Il pointe sur quoi pThread?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Ben pThread est NULL c'est pour ça qu'il y a cette erreur, mais moi je ne sais pas débugger des fichier Windows...

    pThread vient de AfxGetThread qui cherche
    CWinThread* pThread = pState->m_pCurrentWinThread;

    mais je ne sais pas pourquoi ça fait ça.

  7. #7
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Ben tu as alors ta réponse, si ton AfxGetThread() te renvoie NULL, c'est que tu n'es pas dans un thread. Si tu veux un pointeur sur l'application utilise plutôt AfxGetApp().

    Citation Envoyé par stof
    mais je ne sais pas pourquoi ça fait ça.
    un conseil : avant de chercher pourquoi ça plante, cherche à comprendre ce que fait le programme.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Argh, mais ce n'est pas dans mon fichier ce code, c'est dans WINMAIN.CPP...

    (d'ailleurs vc'est bien ce que fait la fonction AfxGetThread d'appeler ensuite cette fonction AfxGetApp() si pThread est NULL.

    Mais qu'est-ce que je fais là-dedans! Pourquoi ce simple début de main pose problème?

  9. #9
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Mais dans ton code quand tu l'exécutes en DEBUG, y'a bien un moment où tu appelles la méthode de WINMAIN.cpp qui te fait planter??? D'ailleurs c'est quelle fonction?
    Au moment du plantage, remonte la pile des appels pour voir laquelle de tes fonctions génère le plantage.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Mais le main (je supprime tout ce qui est fait dedans) c'est :
    int main()
    {
    return 0;
    }

    C'est bien en remontant la pile des appels que je finis dans WINMAIN.CPP.

    Au debut il y a :KERNEL32!
    Puis :
    WinMainCRTStartup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                mainret = WinMain(
    #endif  /* WPRFLAG */
                           GetModuleHandle(NULL),
                           NULL,
                           lpszCommandLine,
                           StartupInfo.dwFlags & STARTF_USESHOWWINDOW
                            ? StartupInfo.wShowWindow
                            : SW_SHOWDEFAULT
                          );
    Puis
    WinMain
    Puis AfxWinMain

    Pffffffff... je désespère.

  11. #11
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Quand tu dis qu'il marchait avant, c'était toi qui le faisait marcher? C'était sur la même machine? Sous quelle IDE es-tu?

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Il marche quand je produit l'exécutable et qu'un batch l'appelle ensuite mais je n'arrive pas à le faire fonctionner en debug sous Visual.

    Ce n'est pas une question de code puisque je fais un main vide et j'ai le problème.
    C'est des histoires à la c... d'options à mon avis, les debug Multithread DLL, ce genre de chose.

    Moi je ne connais que la programmation en C, les outils comme ça ça me dépasse complètement.PS: Visual 6.0 sous Windows NT mais je ne pense pas que ça soit important pour mon problème.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Bon, et bien je ne suis pas plus avancé que sur les autres sites.

  14. #14
    Nouveau candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par défaut
    Même problème ici.
    Je vais rajouter des informations, parce que je pense que beaucoup de gens n'ont pas compris le fond du problème: le programme plante avant qu'aucune ligne de code dans le programme lui-même ne soit exécutée. Voici la pile que j'ai récupérée après un crash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [1] AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00132da8, int 1) line 39 + 3 bytes
    [2] WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00132da8, int 1) line 30
    [3] WinMainCRTStartup() line 198 + 54 bytes
    [4] KERNEL32! 7c4e87f5()
    [1] MFC\SRC\WINMAIN.CPP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	// Perform specific initializations
    -->	if (!pThread->InitInstance())
    	{
    		if (pThread->m_pMainWnd != NULL)
    		{
    			TRACE0("Warning: Destroying non-NULL m_pMainWnd\n");
    			pThread->m_pMainWnd->DestroyWindow();
    		}
    		nReturnCode = pThread->ExitInstance();
    		goto InitFailure;
    	}
    [2] MFC\SRC\APPMODUL.CPP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        extern "C" int WINAPI
        _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    	    LPTSTR lpCmdLine, int nCmdShow)
        {
    	    // call shared/exported WinMain
    	    return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
    --> }
    [3] Quelque part dans le code Microsoft, beaucoup d'assembleur, réclamez si vous voulez que je vous l'envoie dans la face
    [4] idem




    Comme vous pouvez le voir, le programme n'a pas encore été exécuté, on se trouve encore dans les routines d'initialisation Made In Microsoft. La dernière fois que j'avais eu un problème de ce genre, je n'avais en fait pas déclaré d'instance unique pour la class CWinApp. Le problème est que dans ce contexte, je ne vois pas trop comment créer ce machin (il est déjà sensé y avoir une fonction main).
    Pour information, mon système est Visual Studio 6.0 sous Windows 2000, et j'utilise SDL 1.2.4 .

  15. #15
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    T'as vérifiés les versions de tes dépendances (MFC, CRT,...)?

  16. #16
    Nouveau candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par défaut
    Je ne pense pas que ça ait de rapport: j'ai récupéré un vieux projet utilisant SDL qui marchait à ma connaissance. Je l'ai compilé et exécuté avec exactement le même environnement, et il a démarré sans crasher. Donc plutôt une histoire d'option perdue dans un coin du projet à trouver à mon avis... Qui est partant pour une partie de cache-cache?

  17. #17
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par fafner2000 Voir le message
    Je ne pense pas que ça ait de rapport
    Tu en es sûr?
    Tu postes sur un forum d'entraide pour que des personnes bien intentionnées te donne des idées et t'aident à résoudre un problème. Quand on te propose quelque chose, si l'idée te plaît pas, tu balayes de la main en attendant autre chose. Pas très judicieux je trouve...
    Allez, ça te prends 2s, regarde les dépendances de ton exécutable ou de ta dll et vérifie qu'il voit bien toutes les librairies nécessaires.
    C'est peut-être pas ça le problème, mais au moins tu auras éliminé une source d'erreur possible.

    Bon courage

  18. #18
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    si tu ton projet n'est pas gros, tu n'as qu'a le poster en .zip
    (vire le .ncb ,.pch etc ).
    ça nous permettra de raisonner sur des éléments concrets ...

  19. #19
    Nouveau candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par défaut
    Citation Envoyé par spoutspout Voir le message
    Tu en es sûr?
    Tu postes sur un forum d'entraide pour que des personnes bien intentionnées te donne des idées et t'aident à résoudre un problème. Quand on te propose quelque chose, si l'idée te plaît pas, tu balayes de la main en attendant autre chose. Pas très judicieux je trouve...
    Allez, ça te prends 2s, regarde les dépendances de ton exécutable ou de ta dll et vérifie qu'il voit bien toutes les librairies nécessaires.
    C'est peut-être pas ça le problème, mais au moins tu auras éliminé une source d'erreur possible.
    Ah là là, je postais surtout pour donner des informations supplémentaires, pas spécifiquement pour avoir de l'aide (du moins pas encore, je suis encore en train de chercher), et je me fais taper sur les doigts J'avais donné une raison (bonne à mon avis, mais je peux me tromper il est vrai) pourquoi je ne pensais pas que ce soit un problème de version de librairies Enfin puisque tu insistes je vais jeter un coup d'oeil, ça coûte pas cher comme tu dis
    Concernant le problème en lui-même, je pense avoir trouvé l'origine du problème, enfin en quelque sorte... Le problème ne se produit que quand je compile avec SDL 1.2.4 , mais pas quand je compile le même projet avec SDL 1.2.11 . Bizarrement, une fois le projet compilé la version de la librairie SDL.dll n'a pas d'importance, le plantage n'aura de rapport qu'avec la version avec laquelle le projet a été compilé. Si je compile avec la version 1.2.4 , je peux essayer de faire tourner le programme avec la version 1.2.4 ou 1.2.11 de la dll, ça ne marchera pas. Si je compile avec la version 1.2.11 , je peux faire tourner le programme avec la version 1.2.4 ou 1.2.11 de la dll , ça marchera dans les 2 cas. D'où mon idée que ce n'est finalement pas un problème d'option perdue dans un coin, mais plutôt une histoire de vieille version de développement de SDL. Upgrader la version de développement de SDL devrait donc corriger le problème.
    En ce qui me concerne, je suis bloqué avec la version 1.2.4 pour diverses raisons, je sens que le boss va être hyper content

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/06/2009, 01h17
  2. Réponses: 5
    Dernier message: 27/01/2009, 11h58
  3. Réponses: 2
    Dernier message: 27/06/2008, 17h03
  4. First Chance Exception
    Par Moustico dans le forum C#
    Réponses: 2
    Dernier message: 10/12/2007, 17h00
  5. Réponses: 8
    Dernier message: 16/06/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo