问题描述
你好,
在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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!