回复:从Windows 7(64位(x64))上运行的应用程序调用StretchBlt后,BSOD [英] Re: BSOD after calling StretchBlt from application running on Windows 7, 64-bit (x64)

查看:100
本文介绍了回复:从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

推荐答案

您从哪里获得设备上下文的?
它可以在XP等其他操作系统上使用吗?
Where did you get the device context from?
Does it work on other OSs like XP?


确定要正确使用CreateDC吗?第一个参数应该是具有DISPLAY或WINSPOOL的字符串.

Are you sure you''re using CreateDC correctly? The first parameter should be a string with either DISPLAY or WINSPOOL.

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!




使用CPrintDialog时,在StretchBlt调用后也出现了BSOD.
这仅在Windows 7 32位系统上发生,而在XP和Vista系统上也没有.
欢迎任何想法.

谢谢.
Hi,

I am also getting a BSOD after the call StretchBlt when using CPrintDialog.
This happens only on Windows 7 32-bit, but not on XP and Vista too.
Any ideas are welcome.

Thanks.


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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆