ntdll.dll [Images ci-dessous peut être erronée ou manquante, pas de symboles chargés de ntdll.dll]
depuis quelques semaines maintenant, j'ai couru dans cette situation et qu'il est très bouleversant,
mon programme débogue très bien, pas d'erreur, quand je lance le programme, il fait la première partie de la
travail, après quelques secondes, Il met fin à une "pause continuer", et dans la pile d'appel, quand j'ai un coup d'oeil, il s'avère que c'est une erreur de ntdll.dll et msvcr100d.dll
il semble comme un windows liées SDK problème, il ressemble à un mauvais pointeur de trop.
J'ai en quelque sorte aucun contrôle sur cela.
J'ai installé windows SDK à 7.0, mais rien ne semble changer,
À l'aide de : Windows 7 64 bits, Boost De 1,48, compilateur Visual studio (version complète), openCV2.3, c++.
J'ai essayé de nombreuses options,
par exemple. aller dans le gestionnaire des tâches, et avec un clic droit sur devenv.exe et en sélectionnant un seul dans l'option "définir l'affinité'
la réinstallation de windows SDK,
Plusieurs fois de le réinstaller mon propre projet.
Rien ne m'a aidé, peut quelqu'un me suggérer une bonne solution s'il vous plaît.
pour plus de clarté, voici ma pile d'appel
ntdll.dll!77e615de()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77e615de()
ntdll.dll!77e5014e()
msvcr100d.dll!_getptd_noexit() Line 500 C
ntdll.dll!77eb73bc()
ntdll.dll!77ea3c48()
ntdll.dll!77e5016e()
msvcr100d.dll!_getptd_noexit() Line 500 C
ntdll.dll!77eb74df()
ntdll.dll!77eb73bc()
ntdll.dll!77ea3c48()
ntdll.dll!77e5016e()
msvcr100d.dll!_getptd_noexit() Line 500 C
ntdll.dll!77eb74df()
ntdll.dll!77eb73bc()
ntdll.dll!77ea3c48()
ntdll.dll!77e5016e()
msvcr100d.dll!_getptd_noexit() Line 500 C
ntdll.dll!77eb74df()
ntdll.dll!77eb73bc()
ntdll.dll!77ea3c48()
kernel32.dll!770012ea()
kernel32.dll!77001314()
msvcr100d.dll!_getptd_noexit() Line 500 C
ntdll.dll!77eb74df()
ntdll.dll!77eb73bc()
ntdll.dll!77ea3c48()
ntdll.dll!77e5016e()
msvcr100d.dll!_getptd_noexit() Line 500 C
ntdll.dll!77e9b459()
ntdll.dll!77e9b42b()
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::clear() Line 1415 C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::erase(std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _First, std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _Last) Line 1383 C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::_Tidy() Line 1866 + 0x5d bytes C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::~_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >() Line 792 C++
bowExample.exe!std::set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >() + 0x2b bytes C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >() + 0x63 bytes C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::`scalar deleting destructor'() + 0x2b bytes C++
bowExample.exe!boost::checked_delete<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >(set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > * x) Line 34 + 0x2b bytes C++
bowExample.exe!boost::scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >::~scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >() Line 80 + 0xb bytes C++
bowExample.exe!bowTest(CBoWIMUParams & BOWIMUPARAMS) Line 192 + 0xf bytes C++
bowExample.exe!main(int argc, char * * argv) Line 225 + 0xc bytes C++
bowExample.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C
bowExample.exe!mainCRTStartup() Line 371 C
kernel32.dll!7700339a()
ntdll.dll!77e79ef2()
ntdll.dll!77e79ec5()
Ici est la pile d'appel, après le chargement de symboles
ntdll.dll!_ZwRaiseException@12() + 0x12 bytes
ntdll.dll!_ZwRaiseException@12() + 0x12 bytes
msvcr100d.dll!__getptd_noexit() + 0xae bytes
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::clear() Line 1415 C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::erase(std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _First, std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> > > _Last) Line 1383 C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::_Tidy() Line 1866 + 0x5d bytes C++
bowExample.exe!std::_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >::~_Tree<std::_Tset_traits<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128>,0> >() Line 792 C++
bowExample.exe!std::set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >() + 0x2b bytes C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::~set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >() + 0x63 bytes C++
bowExample.exe!set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> >::`scalar deleting destructor'() + 0x2b bytes C++
bowExample.exe!boost::checked_delete<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >(set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > * x) Line 34 + 0x2b bytes C++
bowExample.exe!boost::scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >::~scoped_ptr<set2<CBoWMatch<int>,CBoWMatch<int>::MatchSort,CIndividualPool_NoFree_Allocator<CBoWMatch<int>,128> > >() Line 80 + 0xb bytes C++
bowExample.exe!bowTest(CBoWIMUParams & BOWIMUPARAMS) Line 193 + 0xf bytes C++
bowExample.exe!main(int argc, char * * argv) Line 216 + 0xc bytes C++
bowExample.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C
bowExample.exe!mainCRTStartup() Line 371 C
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes
ntdll.dll!___RtlUserThreadStart@8() + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes
Vous n'avez aucun contrôle sur cela? Généralement, la réponse à des erreurs causées par des pointeurs invalides n'est pas de passer des pointeurs invalides. Si c'est un bug MS (que je considère comme très peu probable, mais pas impossible), s'il vous plaît montrer par la y compris une application simple qui, évidemment, n'est exempt de bogues, mais les résultats dans les erreurs que vous décrivez.
En regardant le bas de la trace, il semble que vous avez une classe
set2
, probablement dérivé de std::set
. J'ai commencé à regarder, en plus de ce la fonction bowTest
fait à ses scoped_ptr
. Les chances pour trouver le bug n'est bien plus élevée que dans boost ou le compilateur de la bibliothèque standard.sarnold : je n'ai pas knw comment votre lien vous aidera, mais je vais y jeter un oeil de près en quelques minutes
hvd : je souhaite qu'il en était que plus simple à produire. plus important encore, sa va en regain d'en-têtes et c'est très complexe à comprendre.C'est pourquoi je trouve qu'il est difficile. Je vais voir si je peux le produire. Merci
OriginalL'auteur Mahika | 2012-06-12
Vous devez vous connecter pour publier un commentaire.
Clic droit sur la pile de la ligne (dans la trace de la pile) contenant ntdll.dll et de charger les symboles de débogage du serveur de Microsoft (les symboles de Charge...), puis la trace de la pile va probablement changer un peu. Répétez l'opération pour chaque dll avec des symboles non définis.
Jusqu'à ce que vous télécharger les symboles de débogage, vous êtes probablement à la recherche à une mauvaise trace de la pile.
Essayez de répéter l'opération pour tous les fichiers dll avec pas de symboles
Les dll sont ntdll.dll!_ZwRaiseException@12() + 0x12 octets, msvcr100d.dll!__getptd_noexit() + 0xae octets, et kernel32.dll!_UnhandledExceptionFilter@4() + 0x11d octets
Pouvez-vous re-poste la trace de la pile après les symboles ont été chargés?
OriginalL'auteur Paolo Brandoli
Cela a commencé à m'arriver pour aucune raison apparente. Après en regardant les propriétés du projet, j'ai remarqué le Répertoire de Travail a été en quelque sorte supprimé (c'était juste vide), après la mise en arrière vers le bon répertoire, tout a commencé à travailler à nouveau.
Évidemment, ma solution simple pourrait ne pas fonctionner pour vous, j'ai eu de la chance.
OriginalL'auteur EJ Thayer