[ros-dev] KeBugCheck

Hartmut Birr hartmut.birr at gmx.de
Sat Apr 9 11:04:09 CEST 2005


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 at 0>
8002780c:    3c 01                    cmp    $0x1,%al
8002780e:    76 49                    jbe    80027859
<_ExMapHandleToPointer+0x58>
80027810:    e8 7b 3c 06 00           call   8008b490 <_KeGetCurrentIrql at 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



More information about the Ros-dev mailing list