James Tabor wrote:
Hi!
Hartmut Birr wrote:
James Tabor wrote:
Hi!
This is svn build 14542,
(NTDLL:ldr/utils.c:2097) Relocating (77ed0000 -> 780000)
C:\ReactOS\System32\gdi
32.dll
ex/handle.c:909: Pagable code called at IRQL > APC_LEVEL (0)
KeBugCheck at ex/handle.c:909
This is a little bit stupid. Why is 0 greater than APC_LEVEL? Do you use
an optimized build where oarch is set to i586 or better?
- Hartmut
Hum?
NO, OARCH := i486, KDBG := 1 and DBG := 1.
James
I get weird crashs if I set OARCH to pentium4. Looking to te PAGED_CODE
macro in ExMapHandleToPointer:
PHANDLE_TABLE_ENTRY
ExMapHandleToPointer(IN PHANDLE_TABLE HandleTable,
IN LONG Handle)
{
80027801: 55 push %ebp
80027802: 89 e5 mov %esp,%ebp
80027804: 83 ec 08 sub $0x8,%esp
PHANDLE_TABLE_ENTRY HandleTableEntry;
PAGED_CODE();
80027807: e8 84 3c 06 00 call 8008b490 <_KeGetCurrentIrql@0>
8002780c: 3c 01 cmp $0x1,%al
8002780e: 76 49 jbe 80027859
<_ExMapHandleToPointer+0x58>
80027810: e8 7b 3c 06 00 call 8008b490 <_KeGetCurrentIrql@0>
80027815: 25 ff 00 00 00 and $0xff,%eax
8002781a: 50 push %eax
8002781b: 68 8d 03 00 00 push $0x38d
80027820: 68 70 13 0b 80 push $0x800b1370
80027825: 68 7c 13 0b 80 push $0x800b137c
8002782a: e8 21 b7 ff ff call 80022f50 <_DbgPrint>
...
The first call to KeGetCurrentIrql returns an irql which is higher than
APC level. The second call returns PASSIVE_LEVEL. This can't occur
because there is no function which raise or lower the irql. It may be
possible , that a task switch occur before and after the first call to
KeGetCurrentIrql and which has set the irql to a wrong value.
- Hartmut