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 :

plantage std::cout avec VS 2005


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut plantage std::cout avec VS 2005
    Bon bah voilà, tout est dans le titre !
    J'aimerai savoir si quelqu'un à rencontré le même problème. Cela fait déjà la seconde fois que ça m'arrive et pour la première fois j'ai du refaire le projet à zéro mais j'aimerai pouvoir éviter ça... Surtout que le projet est assez conséquent.

    Tout compile comme il faut. Mais lors de l'execution, le mode debug de l'exe se déroule sans problème mais lorsque je compile en release et que j'execute l'application, celle-ci crash en pointant du doigt ntdll.dll...
    Alors bon un plantage sur un cout comme celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout<<"ssl ok"<<std::endl;
    ça foue un peu les b***.

  2. #2
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Tu peux nous mettre le message d'erreur exact qui est affiché ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Exception non gérée à 0x7c911095 (ntdll.dll) dans ChgEtatPidiSoap_MFC.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x0044c948.

    Mais je doute que ça vous éclaire :s

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et avec le débogueur tu n'arrives pas à avoir plus d'informations concernant le contexte du plantage ? (tu peux garder tous les paramètres du mode Release et simplement changer l'option "générer les informations de débogage")

  5. #5
    Membre expérimenté Avatar de lun4t1k
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    276
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 276
    Par défaut
    C'est nécessaire de le répeter le std::endl; ?
    J'ai pas de problème, peut être le fais je machinalement!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    j'ai fait exprès de ne pas utiliser le "using namespace std", au début je croyais à un conflit de namespace mais visiblement ça n'est pas le cas...
    J'arrive à voir ou ça plante mais c'est très bas niveau ...

    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
    18
    19
    20
    21
    void __cdecl _lock_file (
            FILE *pf
            )
    {
            /*
             * The way the FILE (pointed to by pf) is locked depends on whether
             * it is part of _iob[] or not
             */
            if ( (pf >= _iob) && (pf <= (&_iob[_IOB_ENTRIES-1])) )
                /*
                 * FILE lies in _iob[] so the lock lies in _locktable[].
                 */
                _lock( _STREAM_LOCKS + (int)(pf - _iob) );
            else
                /*
                 * Not part of _iob[]. Therefore, *pf is a _FILEX and the
                 * lock field of the struct is an initialized critical
                 * section.
                 */
                EnterCriticalSection( &(((_FILEX *)pf)->lock) ); //plante ici ensuite on rentre ds ntdll.dll
    }
    Par contre ça parle de fichier... alors bon je sais qu'on utilise des stream en général autant pour l'affichage à l'écran autant que pour la gestion de fichier mais bon autrement je vois vraiment pas ou ça peut venir ...
    J'ai peut être mis le doigt sur un bug de VS2005 :s

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Ah oui j'oubliais... la pile d'appel des fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     ntdll.dll!_RtlEnterCriticalSection@4()  + 0x90 octets	
    xxxxxxx.exe!_lock_file(_iobuf * pf=0x0044c924)  Ligne 238	C
    xxxxxxx.exe!fputc(int ch=115, _iobuf * str=0x0044c924)  Ligne 46 + 0x6 octets	C
    xxxxxxx.exe!std::basic_filebuf<char,std::char_traits<char> >::overflow(int _Meta=115)  Ligne 236 + 0xa octets	C++
    xxxxxxx.exe!std::basic_streambuf<char,std::char_traits<char> >::xsputn(const char * _Ptr=0x0044c4a0, int _Count=6)  Ligne 379 + 0xd octets	C++
    xxxxxxx.exe!std::operator<<<std::char_traits<char> >()  Ligne 762 + 0x18 octets	C++
    xxxxxxx_MFC.exe!__tmainCRTStartup()  Ligne 318 + 0x12 octets	C

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ta ligne de code avec std::cout, elle se fait avant le main() ou dedans ? Si c'est avant, il est possible que la variable std::cout ne soit pas encore créée.

  9. #9
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Disons que tu as levé un lièvre (mais peut être une simple illusion de bug).

    Pour la compilation release + debug tu peux regarder ici : http://www.developpez.net/forums/sho...d.php?t=294724

    Dis nous quand tu arrive à debugger ton programme en mettant un breakpoint sur ton cout.

    EDIT : trop lent ;-)

Discussions similaires

  1. Plantage VC++2010 avec std::fill
    Par Gorgo13 dans le forum Visual C++
    Réponses: 6
    Dernier message: 18/01/2014, 23h22
  2. Problème avec std::cout
    Par tir0nik dans le forum C++
    Réponses: 13
    Dernier message: 06/01/2010, 13h55
  3. Réponses: 3
    Dernier message: 12/12/2007, 20h31
  4. utilisation composant delphi 7 win32 avec delphi 2005
    Par chtiot dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/02/2005, 06h49
  5. [Kylix] plantage MDK9.1 avec Kylix3
    Par picot dans le forum EDI
    Réponses: 2
    Dernier message: 28/09/2004, 14h45

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