Hi, Hartmut Birr wrote:
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
Was it in idle? I left my system running, just idling. Come back ~12 hours later and find it in a blue state of mind.
BTW, Csrss eats 3 to 5% of the system just setting there.
James