本文介绍了回复:从Windows 7(64位(x64))上运行的应用程序调用StretchBlt后,BSOD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,
在Windows 7(64位(x64))上运行应用程序时,出现蓝屏死机.调试后,我了解到该程序有时在调用StretchBlt(CDC类的成员)时崩溃.我在蓝屏上看到的东西:
win32k.sys
转储物理内存
PAGE_FAULT_IN_NONPAGED_AREA

在没有打开任何其他应用程序的情况下运行该应用程序时,一切都很好.仅当某些其他应用程序打开时,应用程序才会崩溃.

我使用WinDbg并得到以下信息:
PAGE_FAULT_IN_NONPAGED_AREA(50)
引用了无效的系统内存.不能通过try-except保护,
它必须受探针保护.通常情况下,地址只是普通的错误或
指向释放的内存.
参数:
Arg1:fffff900c4000020,已引用内存.
Arg2:0000000000000000,值0 =读操作,1 =写操作.
Arg3:fffff960000f7e06,如果不为零,则引用坏存储器的指令地址
地址.
Arg4:0000000000000002,(保留)
调试详细信息:
------------------

无法读取错误的驱动程序名称
读取地址:fffff900c4000020
FAULTING_IP:
win32k!GreGetSpoolMessage + 84
fffff960`000f7e06 488b5220 mov rdx,qword ptr [rdx + 20h]
MM_INTERNAL_CODE:2
CUSTOMER_CRASH_COUNT:1
DEFAULT_BUCKET_ID:VISTA_DRIVER_FAULT
BUGCHECK_STR:0x50
CURRENT_IRQL:0
LAST_CONTROL_TRANSFER:从fffff800029488f2到fffff800028c9740
STACK_TEXT:
fffff880`043dc568 fffff800`029488f2:00000000`00000050 fffff900`c4000020 00000000`00000000 fffff880`043dc6d0:nt!mbstowcs + 0x3a
fffff880`043dc570 00000000`00000050:fffff900`c4000020 00000000`00000000 fffff880`043dc6d0 00000000`00000002:nt!IopDeleteLegacyKey + 0x74
fffff880`043dc578 fffff900`c4000020:00000000`00000000 fffff880`043dc6d0 00000000`00000002 fffff960` 002915b0:0x50
fffff880`043dc580 00000000`00000000:fffff880`043dc6d0 00000000`00000002 fffff960`002915b0 00000000`00000ab8:0xfffff900`c4000020

STACK_COMMAND:.bugcheck; kb
FOLLOWUP_IP:
win32k!GreGetSpoolMessage + 84
fffff960`000f7e06 488b5220 mov rdx,qword ptr [rdx + 20h]
SYMBOL_NAME:win32k!GreGetSpoolMessage + 84
FOLLOWUP_NAME:MachineOwner
MODULE_NAME:win32k
IMAGE_NAME:win32k.sys
DEBUG_FLR_IMAGE_TIMESTAMP:4c1c483f
FAILURE_BUCKET_ID:X64_0x50_win32k!GreGetSpoolMessage + 84
BUCKET_ID:X64_0x50_win32k!GreGetSpoolMessage + 84
后续行动:MachineOwner

我试过了:
kd>!pool fffff900c4000020

我知道了:
您指定的池页面不在此转储中.

有人有什么想法吗?


Mike

Hello,
I am getting a Blue Screen of death when running my application on Windows 7, 64-bit (x64). After debugging, I learned that the program sometimes crashes upon calling StretchBlt (member of CDC class). Something I saw on the blue screen:
win32k.sys
Dumping Physical Memory
PAGE_FAULT_IN_NONPAGED_AREA

When running the application without any other applications open, everything is fine. The application crashes only when certain other applications are open.

I used WinDbg and got the following:
PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except,
it must be protected by a Probe. Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: fffff900c4000020, memory referenced.
Arg2: 0000000000000000, value 0 = read operation, 1 = write operation.
Arg3: fffff960000f7e06, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 0000000000000002, (reserved)
Debugging Details:
------------------

Could not read faulting driver name
READ_ADDRESS: fffff900c4000020
FAULTING_IP:
win32k!GreGetSpoolMessage+84
fffff960`000f7e06 488b5220 mov rdx,qword ptr [rdx+20h]
MM_INTERNAL_CODE: 2
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
BUGCHECK_STR: 0x50
CURRENT_IRQL: 0
LAST_CONTROL_TRANSFER: from fffff800029488f2 to fffff800028c9740
STACK_TEXT:
fffff880`043dc568 fffff800`029488f2 : 00000000`00000050 fffff900`c4000020 00000000`00000000 fffff880`043dc6d0 : nt!mbstowcs+0x3a
fffff880`043dc570 00000000`00000050 : fffff900`c4000020 00000000`00000000 fffff880`043dc6d0 00000000`00000002 : nt!IopDeleteLegacyKey+0x74
fffff880`043dc578 fffff900`c4000020 : 00000000`00000000 fffff880`043dc6d0 00000000`00000002 fffff960`002915b0 : 0x50
fffff880`043dc580 00000000`00000000 : fffff880`043dc6d0 00000000`00000002 fffff960`002915b0 00000000`00000ab8 : 0xfffff900`c4000020

STACK_COMMAND: .bugcheck ; kb
FOLLOWUP_IP:
win32k!GreGetSpoolMessage+84
fffff960`000f7e06 488b5220 mov rdx,qword ptr [rdx+20h]
SYMBOL_NAME: win32k!GreGetSpoolMessage+84
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: win32k
IMAGE_NAME: win32k.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4c1c483f
FAILURE_BUCKET_ID: X64_0x50_win32k!GreGetSpoolMessage+84
BUCKET_ID: X64_0x50_win32k!GreGetSpoolMessage+84
Followup: MachineOwner

I tried:
kd>!pool fffff900c4000020

I got this:
The pool page you have specified is not in this dump.

Does anyone have any ideas?


Mike

推荐答案


CreateDC(_T("DISPLAY"), NULL, NULL, NULL)



请查看下面的链接以获取更多信息.


http://msdn.microsoft.com/en-us/library/dd183490% 28VS.85%29.aspx [ ^ ]

祝你好运!



Have a look at the link below for more info.


http://msdn.microsoft.com/en-us/library/dd183490%28VS.85%29.aspx[^]

Good luck!



这篇关于回复:从Windows 7(64位(x64))上运行的应用程序调用StretchBlt后,BSOD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 19:59