MFC应用程序在NTDLL.dll中崩溃

时间:2015-06-17 13:13:04

标签: windows mfc crash ntdll

我有一个基于MFC的应用程序。它会在几秒钟后继续查找文件(使用基于CreateTimerQueueTimer的计时器)并执行一些操作。这总是在XP上崩溃(原因不明)。这个应用程序在Windows 7和Windows 8上运行良好。但XP上的问题是持久的。

下面是调用堆栈,它没有显示任何帮助 Call stack after the crash

反汇编截图如下:

enter image description here

EDIT1:

我改变了一些设置,我得到了这个新的调用堆栈。但仍然没有得到线索: enter image description here

我不明白如何追踪崩溃的原因。是否有任何提示或任何方式来跟踪它从拆卸播种?或者系统的NTDLL.DLL文件可能有任何问题?欢迎任何帮助。

1 个答案:

答案 0 :(得分:2)

分析堆栈后,我意识到定时器回调可能存在问题。我将我的计时器(createtimerqueuetimer函数)打包到一个等待线程,问题解决了。但仍有问题可以回答 为什么定时器回调在几次调用 后崩溃?我只是在30秒后设置并重置回调函数中的变量。所以我不怀疑任何指针相关的问题。

EDIT1:

最终我得到了答案。我需要改变

void MyTimerCallbackRoutine(PVOID lpParameter, BOOLEAN TimerOrWaitFired)

要:

VOID CALLBACK MyTimerCallbackRoutine(PVOID lpParameter, BOOLEAN TimerOrWaitFired)

问题与计时器回调功能有关。通常,CALLBACK和WINAPI被定义为stdcall,默认情况下,普通函数使用cdecl。