Hi!

The OS is triggering this assert while my driver is executing its interrupt
handler. I suspect that the OS is hitting the assert because we may be
within DPC for too long. However, how can I find out the root cause for this
assert?

Thanks!

Re: Vista 5840 and Int 2C by Eliyas

Eliyas
Tue Nov 14 11:52:25 CST 2006

Shows us the stack trace and the assert message. If you think this is
because you are spending too much time at raised IRQL then that is the root
cause.

-Eliyas

"John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
news:eBIGK65BHHA.1220@TK2MSFTNGP04.phx.gbl...
> Hi!
>
> The OS is triggering this assert while my driver is executing its
> interrupt handler. I suspect that the OS is hitting the assert because we
> may be within DPC for too long. However, how can I find out the root cause
> for this assert?
>
> Thanks!
>


Re: Vista 5840 and Int 2C by John

John
Tue Nov 14 21:49:26 CST 2006

Eliyas, here's the stack trace at the time of the assert. Please not that
there is no assert message. Also, the code (c00000420) is for
STATUS_ASSERTION_FAILURE, so the message doesn't really say anything about
what triggered the assert.

We have seen many cases where Vista will trigger an assert in this manner.
For example, we see situations where removing and reinserting a cardbus card
will eventually result in an assert. So, what can we do to analyze these
asserts?

0: kd> vertarget
Windows Vista Kernel Version 5840 MP (2 procs) Free x86 compatible
Built by: 5840.16384.x86fre.vista_rtm.061018-1900
Kernel base = 0x81800000 PsLoadedModuleList = 0x81911d90
Debug session time: Tue Nov 14 14:46:50.080 2006 (GMT-8)
System Uptime: 0 days 0:00:31.783
0: kd> g
Assertion failure - code c0000420 (first chance)
nt!MmUnlockPages+0x7bd:
81827f87 cd2c int 2c
0: kd> kv
ChildEBP RetAddr Args to Child
81c05aa8 8189163d 00000002 000000d1 81c05b74 nt!MmUnlockPages+0x7bd
81c05b68 8062173c 8958f090 81c05d30 a3929344 nt!`string'+0xa5
81c05b74 a3929344 81c05d00 81c05d00 81c05be0
ndis!NdisRetreatNetBufferListDataStart+0x52 (FPO: [Non-Fpo])
81c05d30 a392a818 9ef02000 a2981600 a3d18000 MRVW147!ccmp_dec_packet+0x6e4
(FPO: [Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
@ 543]
81c05d94 a38f788e 9ef02000 a2981600 a3d18000
MRVW147!Decrypt802_11_CCMP+0x498 (FPO: [Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
@ 884]
81c05e10 a38fafd7 9ef02000 a2981600 a3d18000 MRVW147!Decrypt802_11+0xbce
(FPO: [Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
@ 2770]
81c05eb4 a3954b25 9ef02000 a2981600 00001a59
MRVW147!ProcessRxData802_11+0x887 (FPO: [Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
@ 1519]
81c05f18 a39463c6 a29a7000 a29a7000 004a5646
MRVW147!HandleRxReadyEvent+0x965 (FPO: [Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwrx.c @ 706]
81c05f34 a38eccc0 a29a7000 00000001 81c05f68 MRVW147!HWDpc+0x146 (FPO:
[Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwmarcb.c @
868]
81c05f44 806d9086 853f6660 00000000 00000000
MRVW147!Ix_NDIS_Interrupt_Handler+0x80 (FPO: [Non-Fpo]) (CONV: stdcall)
[e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\os\ndis\ix_ndis_deventry.c @
1613]
81c05f68 80621252 a29ab01c 00000000 00000000 ndis!NdisMSetTimer+0x81 (FPO:
[Non-Fpo])
81c05f6c a29ab01c 00000000 00000000 00000000 ndis!NdisGetDataBuffer+0x6
(FPO: [Non-Fpo])
WARNING: Frame IP not in any known module. Following frames may be wrong.
81c05f88 818aa20e a29ab01c a29ab008 00000000 0xa29ab01c
81c05ff4 81891e5d a0033d10 00000000 00000000 nt!MiInsertPageInFreeList+0x13b
a0033d2c 81ba7474 818f4702 a0033d64 a0033d64 nt!`string'+0x11
a0033d48 81ba763d a29abd48 a0033d64 818918c5
hal!HalpCheckForSoftwareInterrupt+0x64 (FPO: [Non-Fpo])
a0033d54 818918c5 8188da00 00000062 01a0f47c hal!HalEndSystemInterrupt+0x73
(FPO: [Non-Fpo])
a0033d64 72fcdaf8 badb0d00 00000000 00000000 nt!`string'+0x1
a0033d68 badb0d00 00000000 00000000 00000000 0x72fcdaf8
a0033d6c 00000000 00000000 00000000 00000000 0xbadb0d00
"Eliyas Yakub [MSFT]" <eliyasy@online.microsoft.com> wrote in message
news:O0JZpWBCHHA.3380@TK2MSFTNGP04.phx.gbl...
> Shows us the stack trace and the assert message. If you think this is
> because you are spending too much time at raised IRQL then that is the
> root cause.
>
> -Eliyas
>
> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
> news:eBIGK65BHHA.1220@TK2MSFTNGP04.phx.gbl...
>> Hi!
>>
>> The OS is triggering this assert while my driver is executing its
>> interrupt handler. I suspect that the OS is hitting the assert because we
>> may be within DPC for too long. However, how can I find out the root
>> cause for this assert?
>>
>> Thanks!
>>
>



Re: Vista 5840 and Int 2C by soviet_bloke

soviet_bloke
Tue Nov 14 22:34:13 CST 2006

> The OS is triggering this assert while my driver is executing its interrupt
> handler.

How is your driver's interrupt handler related to Int 0x2C??? Int 0x2C
is a software interrupt
(as its very value of 0x2c suggests - it is too low for hardware
interrupt), so that it has nothing to do with your ISR. In actuality,
it is one of few software interrupts that user-mode code is allowed to
raise.....

Anton Bassov

John Q. Public wrote:
> Hi!
>
> The OS is triggering this assert while my driver is executing its interrupt
> handler. I suspect that the OS is hitting the assert because we may be
> within DPC for too long. However, how can I find out the root cause for this
> assert?
>
> Thanks!


Re: Vista 5840 and Int 2C by David

David
Tue Nov 14 23:11:08 CST 2006

Vista uses DbgRaiseAssertionFailure() which does an int 0x2c. Look in
wdm.h.

"John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
news:OqdUFkGCHHA.5012@TK2MSFTNGP06.phx.gbl...
> Eliyas, here's the stack trace at the time of the assert. Please not that
> there is no assert message. Also, the code (c00000420) is for
> STATUS_ASSERTION_FAILURE, so the message doesn't really say anything about
> what triggered the assert.
>
> We have seen many cases where Vista will trigger an assert in this manner.
> For example, we see situations where removing and reinserting a cardbus
> card will eventually result in an assert. So, what can we do to analyze
> these asserts?
>
> 0: kd> vertarget
> Windows Vista Kernel Version 5840 MP (2 procs) Free x86 compatible
> Built by: 5840.16384.x86fre.vista_rtm.061018-1900
> Kernel base = 0x81800000 PsLoadedModuleList = 0x81911d90
> Debug session time: Tue Nov 14 14:46:50.080 2006 (GMT-8)
> System Uptime: 0 days 0:00:31.783
> 0: kd> g
> Assertion failure - code c0000420 (first chance)
> nt!MmUnlockPages+0x7bd:
> 81827f87 cd2c int 2c
> 0: kd> kv
> ChildEBP RetAddr Args to Child
> 81c05aa8 8189163d 00000002 000000d1 81c05b74 nt!MmUnlockPages+0x7bd
> 81c05b68 8062173c 8958f090 81c05d30 a3929344 nt!`string'+0xa5
> 81c05b74 a3929344 81c05d00 81c05d00 81c05be0
> ndis!NdisRetreatNetBufferListDataStart+0x52 (FPO: [Non-Fpo])
> 81c05d30 a392a818 9ef02000 a2981600 a3d18000 MRVW147!ccmp_dec_packet+0x6e4
> (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
> @ 543]
> 81c05d94 a38f788e 9ef02000 a2981600 a3d18000
> MRVW147!Decrypt802_11_CCMP+0x498 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
> @ 884]
> 81c05e10 a38fafd7 9ef02000 a2981600 a3d18000 MRVW147!Decrypt802_11+0xbce
> (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
> @ 2770]
> 81c05eb4 a3954b25 9ef02000 a2981600 00001a59
> MRVW147!ProcessRxData802_11+0x887 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
> @ 1519]
> 81c05f18 a39463c6 a29a7000 a29a7000 004a5646
> MRVW147!HandleRxReadyEvent+0x965 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwrx.c @ 706]
> 81c05f34 a38eccc0 a29a7000 00000001 81c05f68 MRVW147!HWDpc+0x146 (FPO:
> [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwmarcb.c @
> 868]
> 81c05f44 806d9086 853f6660 00000000 00000000
> MRVW147!Ix_NDIS_Interrupt_Handler+0x80 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\os\ndis\ix_ndis_deventry.c
> @ 1613]
> 81c05f68 80621252 a29ab01c 00000000 00000000 ndis!NdisMSetTimer+0x81 (FPO:
> [Non-Fpo])
> 81c05f6c a29ab01c 00000000 00000000 00000000 ndis!NdisGetDataBuffer+0x6
> (FPO: [Non-Fpo])
> WARNING: Frame IP not in any known module. Following frames may be wrong.
> 81c05f88 818aa20e a29ab01c a29ab008 00000000 0xa29ab01c
> 81c05ff4 81891e5d a0033d10 00000000 00000000
> nt!MiInsertPageInFreeList+0x13b
> a0033d2c 81ba7474 818f4702 a0033d64 a0033d64 nt!`string'+0x11
> a0033d48 81ba763d a29abd48 a0033d64 818918c5
> hal!HalpCheckForSoftwareInterrupt+0x64 (FPO: [Non-Fpo])
> a0033d54 818918c5 8188da00 00000062 01a0f47c
> hal!HalEndSystemInterrupt+0x73 (FPO: [Non-Fpo])
> a0033d64 72fcdaf8 badb0d00 00000000 00000000 nt!`string'+0x1
> a0033d68 badb0d00 00000000 00000000 00000000 0x72fcdaf8
> a0033d6c 00000000 00000000 00000000 00000000 0xbadb0d00
> "Eliyas Yakub [MSFT]" <eliyasy@online.microsoft.com> wrote in message
> news:O0JZpWBCHHA.3380@TK2MSFTNGP04.phx.gbl...
>> Shows us the stack trace and the assert message. If you think this is
>> because you are spending too much time at raised IRQL then that is the
>> root cause.
>>
>> -Eliyas
>>
>> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
>> news:eBIGK65BHHA.1220@TK2MSFTNGP04.phx.gbl...
>>> Hi!
>>>
>>> The OS is triggering this assert while my driver is executing its
>>> interrupt handler. I suspect that the OS is hitting the assert because
>>> we may be within DPC for too long. However, how can I find out the root
>>> cause for this assert?
>>>
>>> Thanks!
>>>
>>
>
>



Re: Vista 5840 and Int 2C by Doron

Doron
Wed Nov 15 00:10:25 CST 2006

you should make usre your NT symbols are correct, it certainly does not look
correct from the given callstack

d

--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.


"John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
news:OqdUFkGCHHA.5012@TK2MSFTNGP06.phx.gbl...
> Eliyas, here's the stack trace at the time of the assert. Please not that
> there is no assert message. Also, the code (c00000420) is for
> STATUS_ASSERTION_FAILURE, so the message doesn't really say anything about
> what triggered the assert.
>
> We have seen many cases where Vista will trigger an assert in this manner.
> For example, we see situations where removing and reinserting a cardbus
> card will eventually result in an assert. So, what can we do to analyze
> these asserts?
>
> 0: kd> vertarget
> Windows Vista Kernel Version 5840 MP (2 procs) Free x86 compatible
> Built by: 5840.16384.x86fre.vista_rtm.061018-1900
> Kernel base = 0x81800000 PsLoadedModuleList = 0x81911d90
> Debug session time: Tue Nov 14 14:46:50.080 2006 (GMT-8)
> System Uptime: 0 days 0:00:31.783
> 0: kd> g
> Assertion failure - code c0000420 (first chance)
> nt!MmUnlockPages+0x7bd:
> 81827f87 cd2c int 2c
> 0: kd> kv
> ChildEBP RetAddr Args to Child
> 81c05aa8 8189163d 00000002 000000d1 81c05b74 nt!MmUnlockPages+0x7bd
> 81c05b68 8062173c 8958f090 81c05d30 a3929344 nt!`string'+0xa5
> 81c05b74 a3929344 81c05d00 81c05d00 81c05be0
> ndis!NdisRetreatNetBufferListDataStart+0x52 (FPO: [Non-Fpo])
> 81c05d30 a392a818 9ef02000 a2981600 a3d18000 MRVW147!ccmp_dec_packet+0x6e4
> (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
> @ 543]
> 81c05d94 a38f788e 9ef02000 a2981600 a3d18000
> MRVW147!Decrypt802_11_CCMP+0x498 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
> @ 884]
> 81c05e10 a38fafd7 9ef02000 a2981600 a3d18000 MRVW147!Decrypt802_11+0xbce
> (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
> @ 2770]
> 81c05eb4 a3954b25 9ef02000 a2981600 00001a59
> MRVW147!ProcessRxData802_11+0x887 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
> @ 1519]
> 81c05f18 a39463c6 a29a7000 a29a7000 004a5646
> MRVW147!HandleRxReadyEvent+0x965 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwrx.c @ 706]
> 81c05f34 a38eccc0 a29a7000 00000001 81c05f68 MRVW147!HWDpc+0x146 (FPO:
> [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwmarcb.c @
> 868]
> 81c05f44 806d9086 853f6660 00000000 00000000
> MRVW147!Ix_NDIS_Interrupt_Handler+0x80 (FPO: [Non-Fpo]) (CONV: stdcall)
> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\os\ndis\ix_ndis_deventry.c
> @ 1613]
> 81c05f68 80621252 a29ab01c 00000000 00000000 ndis!NdisMSetTimer+0x81 (FPO:
> [Non-Fpo])
> 81c05f6c a29ab01c 00000000 00000000 00000000 ndis!NdisGetDataBuffer+0x6
> (FPO: [Non-Fpo])
> WARNING: Frame IP not in any known module. Following frames may be wrong.
> 81c05f88 818aa20e a29ab01c a29ab008 00000000 0xa29ab01c
> 81c05ff4 81891e5d a0033d10 00000000 00000000
> nt!MiInsertPageInFreeList+0x13b
> a0033d2c 81ba7474 818f4702 a0033d64 a0033d64 nt!`string'+0x11
> a0033d48 81ba763d a29abd48 a0033d64 818918c5
> hal!HalpCheckForSoftwareInterrupt+0x64 (FPO: [Non-Fpo])
> a0033d54 818918c5 8188da00 00000062 01a0f47c
> hal!HalEndSystemInterrupt+0x73 (FPO: [Non-Fpo])
> a0033d64 72fcdaf8 badb0d00 00000000 00000000 nt!`string'+0x1
> a0033d68 badb0d00 00000000 00000000 00000000 0x72fcdaf8
> a0033d6c 00000000 00000000 00000000 00000000 0xbadb0d00
> "Eliyas Yakub [MSFT]" <eliyasy@online.microsoft.com> wrote in message
> news:O0JZpWBCHHA.3380@TK2MSFTNGP04.phx.gbl...
>> Shows us the stack trace and the assert message. If you think this is
>> because you are spending too much time at raised IRQL then that is the
>> root cause.
>>
>> -Eliyas
>>
>> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
>> news:eBIGK65BHHA.1220@TK2MSFTNGP04.phx.gbl...
>>> Hi!
>>>
>>> The OS is triggering this assert while my driver is executing its
>>> interrupt handler. I suspect that the OS is hitting the assert because
>>> we may be within DPC for too long. However, how can I find out the root
>>> cause for this assert?
>>>
>>> Thanks!
>>>
>>
>
>



Re: Vista 5840 and Int 2C by John

John
Wed Nov 15 00:59:50 CST 2006

I am using the symbols for the free build of 5840. Again, can anyone tell me
what to do to analyze an assert that apparently is being made from the OS?

"Doron Holan [MS]" <doronh@nospam.microsoft.com> wrote in message
news:%23AXJ$yHCHHA.996@TK2MSFTNGP02.phx.gbl...
> you should make usre your NT symbols are correct, it certainly does not
> look correct from the given callstack
>
> d
>
> --
> Please do not send e-mail directly to this alias. this alias is for
> newsgroup purposes only.
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
>
> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
> news:OqdUFkGCHHA.5012@TK2MSFTNGP06.phx.gbl...
>> Eliyas, here's the stack trace at the time of the assert. Please not that
>> there is no assert message. Also, the code (c00000420) is for
>> STATUS_ASSERTION_FAILURE, so the message doesn't really say anything
>> about what triggered the assert.
>>
>> We have seen many cases where Vista will trigger an assert in this
>> manner. For example, we see situations where removing and reinserting a
>> cardbus card will eventually result in an assert. So, what can we do to
>> analyze these asserts?
>>
>> 0: kd> vertarget
>> Windows Vista Kernel Version 5840 MP (2 procs) Free x86 compatible
>> Built by: 5840.16384.x86fre.vista_rtm.061018-1900
>> Kernel base = 0x81800000 PsLoadedModuleList = 0x81911d90
>> Debug session time: Tue Nov 14 14:46:50.080 2006 (GMT-8)
>> System Uptime: 0 days 0:00:31.783
>> 0: kd> g
>> Assertion failure - code c0000420 (first chance)
>> nt!MmUnlockPages+0x7bd:
>> 81827f87 cd2c int 2c
>> 0: kd> kv
>> ChildEBP RetAddr Args to Child
>> 81c05aa8 8189163d 00000002 000000d1 81c05b74 nt!MmUnlockPages+0x7bd
>> 81c05b68 8062173c 8958f090 81c05d30 a3929344 nt!`string'+0xa5
>> 81c05b74 a3929344 81c05d00 81c05d00 81c05be0
>> ndis!NdisRetreatNetBufferListDataStart+0x52 (FPO: [Non-Fpo])
>> 81c05d30 a392a818 9ef02000 a2981600 a3d18000
>> MRVW147!ccmp_dec_packet+0x6e4 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
>> @ 543]
>> 81c05d94 a38f788e 9ef02000 a2981600 a3d18000
>> MRVW147!Decrypt802_11_CCMP+0x498 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
>> @ 884]
>> 81c05e10 a38fafd7 9ef02000 a2981600 a3d18000 MRVW147!Decrypt802_11+0xbce
>> (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
>> @ 2770]
>> 81c05eb4 a3954b25 9ef02000 a2981600 00001a59
>> MRVW147!ProcessRxData802_11+0x887 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
>> @ 1519]
>> 81c05f18 a39463c6 a29a7000 a29a7000 004a5646
>> MRVW147!HandleRxReadyEvent+0x965 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwrx.c @
>> 706]
>> 81c05f34 a38eccc0 a29a7000 00000001 81c05f68 MRVW147!HWDpc+0x146 (FPO:
>> [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwmarcb.c @
>> 868]
>> 81c05f44 806d9086 853f6660 00000000 00000000
>> MRVW147!Ix_NDIS_Interrupt_Handler+0x80 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\os\ndis\ix_ndis_deventry.c
>> @ 1613]
>> 81c05f68 80621252 a29ab01c 00000000 00000000 ndis!NdisMSetTimer+0x81
>> (FPO: [Non-Fpo])
>> 81c05f6c a29ab01c 00000000 00000000 00000000 ndis!NdisGetDataBuffer+0x6
>> (FPO: [Non-Fpo])
>> WARNING: Frame IP not in any known module. Following frames may be wrong.
>> 81c05f88 818aa20e a29ab01c a29ab008 00000000 0xa29ab01c
>> 81c05ff4 81891e5d a0033d10 00000000 00000000
>> nt!MiInsertPageInFreeList+0x13b
>> a0033d2c 81ba7474 818f4702 a0033d64 a0033d64 nt!`string'+0x11
>> a0033d48 81ba763d a29abd48 a0033d64 818918c5
>> hal!HalpCheckForSoftwareInterrupt+0x64 (FPO: [Non-Fpo])
>> a0033d54 818918c5 8188da00 00000062 01a0f47c
>> hal!HalEndSystemInterrupt+0x73 (FPO: [Non-Fpo])
>> a0033d64 72fcdaf8 badb0d00 00000000 00000000 nt!`string'+0x1
>> a0033d68 badb0d00 00000000 00000000 00000000 0x72fcdaf8
>> a0033d6c 00000000 00000000 00000000 00000000 0xbadb0d00
>> "Eliyas Yakub [MSFT]" <eliyasy@online.microsoft.com> wrote in message
>> news:O0JZpWBCHHA.3380@TK2MSFTNGP04.phx.gbl...
>>> Shows us the stack trace and the assert message. If you think this is
>>> because you are spending too much time at raised IRQL then that is the
>>> root cause.
>>>
>>> -Eliyas
>>>
>>> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
>>> news:eBIGK65BHHA.1220@TK2MSFTNGP04.phx.gbl...
>>>> Hi!
>>>>
>>>> The OS is triggering this assert while my driver is executing its
>>>> interrupt handler. I suspect that the OS is hitting the assert because
>>>> we may be within DPC for too long. However, how can I find out the root
>>>> cause for this assert?
>>>>
>>>> Thanks!
>>>>
>>>
>>
>>
>
>



Re: Vista 5840 and Int 2C by John

John
Wed Nov 15 01:02:43 CST 2006

Thanks, but I know that. Since my driver is not using these asserts, I have
to assume that the OS is trigerring them. What I've been asking is what can
I (or anyone else) do to figure out why the OS is trigerring them.

"David J. Craig" <Dave@yoshimuni.com> wrote in message
news:OY142RHCHHA.3540@TK2MSFTNGP03.phx.gbl...
> Vista uses DbgRaiseAssertionFailure() which does an int 0x2c. Look in
> wdm.h.
>
> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
> news:OqdUFkGCHHA.5012@TK2MSFTNGP06.phx.gbl...
>> Eliyas, here's the stack trace at the time of the assert. Please not that
>> there is no assert message. Also, the code (c00000420) is for
>> STATUS_ASSERTION_FAILURE, so the message doesn't really say anything
>> about what triggered the assert.
>>
>> We have seen many cases where Vista will trigger an assert in this
>> manner. For example, we see situations where removing and reinserting a
>> cardbus card will eventually result in an assert. So, what can we do to
>> analyze these asserts?
>>
>> 0: kd> vertarget
>> Windows Vista Kernel Version 5840 MP (2 procs) Free x86 compatible
>> Built by: 5840.16384.x86fre.vista_rtm.061018-1900
>> Kernel base = 0x81800000 PsLoadedModuleList = 0x81911d90
>> Debug session time: Tue Nov 14 14:46:50.080 2006 (GMT-8)
>> System Uptime: 0 days 0:00:31.783
>> 0: kd> g
>> Assertion failure - code c0000420 (first chance)
>> nt!MmUnlockPages+0x7bd:
>> 81827f87 cd2c int 2c
>> 0: kd> kv
>> ChildEBP RetAddr Args to Child
>> 81c05aa8 8189163d 00000002 000000d1 81c05b74 nt!MmUnlockPages+0x7bd
>> 81c05b68 8062173c 8958f090 81c05d30 a3929344 nt!`string'+0xa5
>> 81c05b74 a3929344 81c05d00 81c05d00 81c05be0
>> ndis!NdisRetreatNetBufferListDataStart+0x52 (FPO: [Non-Fpo])
>> 81c05d30 a392a818 9ef02000 a2981600 a3d18000
>> MRVW147!ccmp_dec_packet+0x6e4 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
>> @ 543]
>> 81c05d94 a38f788e 9ef02000 a2981600 a3d18000
>> MRVW147!Decrypt802_11_CCMP+0x498 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11i.c
>> @ 884]
>> 81c05e10 a38fafd7 9ef02000 a2981600 a3d18000 MRVW147!Decrypt802_11+0xbce
>> (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
>> @ 2770]
>> 81c05eb4 a3954b25 9ef02000 a2981600 00001a59
>> MRVW147!ProcessRxData802_11+0x887 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\med\802.11\sta\ixmed802_11.c
>> @ 1519]
>> 81c05f18 a39463c6 a29a7000 a29a7000 004a5646
>> MRVW147!HandleRxReadyEvent+0x965 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwrx.c @
>> 706]
>> 81c05f34 a38eccc0 a29a7000 00000001 81c05f68 MRVW147!HWDpc+0x146 (FPO:
>> [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\hw\marvell\ixhwmarcb.c @
>> 868]
>> 81c05f44 806d9086 853f6660 00000000 00000000
>> MRVW147!Ix_NDIS_Interrupt_Handler+0x80 (FPO: [Non-Fpo]) (CONV: stdcall)
>> [e:\marvell\src\ec85-vista\drv\mrvl\ndis\source\os\ndis\ix_ndis_deventry.c
>> @ 1613]
>> 81c05f68 80621252 a29ab01c 00000000 00000000 ndis!NdisMSetTimer+0x81
>> (FPO: [Non-Fpo])
>> 81c05f6c a29ab01c 00000000 00000000 00000000 ndis!NdisGetDataBuffer+0x6
>> (FPO: [Non-Fpo])
>> WARNING: Frame IP not in any known module. Following frames may be wrong.
>> 81c05f88 818aa20e a29ab01c a29ab008 00000000 0xa29ab01c
>> 81c05ff4 81891e5d a0033d10 00000000 00000000
>> nt!MiInsertPageInFreeList+0x13b
>> a0033d2c 81ba7474 818f4702 a0033d64 a0033d64 nt!`string'+0x11
>> a0033d48 81ba763d a29abd48 a0033d64 818918c5
>> hal!HalpCheckForSoftwareInterrupt+0x64 (FPO: [Non-Fpo])
>> a0033d54 818918c5 8188da00 00000062 01a0f47c
>> hal!HalEndSystemInterrupt+0x73 (FPO: [Non-Fpo])
>> a0033d64 72fcdaf8 badb0d00 00000000 00000000 nt!`string'+0x1
>> a0033d68 badb0d00 00000000 00000000 00000000 0x72fcdaf8
>> a0033d6c 00000000 00000000 00000000 00000000 0xbadb0d00
>> "Eliyas Yakub [MSFT]" <eliyasy@online.microsoft.com> wrote in message
>> news:O0JZpWBCHHA.3380@TK2MSFTNGP04.phx.gbl...
>>> Shows us the stack trace and the assert message. If you think this is
>>> because you are spending too much time at raised IRQL then that is the
>>> root cause.
>>>
>>> -Eliyas
>>>
>>> "John Q. Public" <ImInSoquel@nospam.nospam> wrote in message
>>> news:eBIGK65BHHA.1220@TK2MSFTNGP04.phx.gbl...
>>>> Hi!
>>>>
>>>> The OS is triggering this assert while my driver is executing its
>>>> interrupt handler. I suspect that the OS is hitting the assert because
>>>> we may be within DPC for too long. However, how can I find out the root
>>>> cause for this assert?
>>>>
>>>> Thanks!
>>>>
>>>
>>
>>
>
>



Re: Vista 5840 and Int 2C by John

John
Wed Nov 15 01:05:34 CST 2006

1. This is not happening in the ISR, but in the interrupt handler which runs
at IRQL == DISPATCH.
2. The WDK supports DbgRaiseAssertionFailure() which uses INT 2c, which can
be used by KM drivers.
3. Why am I wasting my time on this news group?

<soviet_bloke@hotmail.com> wrote in message
news:1163565253.054096.316480@b28g2000cwb.googlegroups.com...
>> The OS is triggering this assert while my driver is executing its
>> interrupt
>> handler.
>
> How is your driver's interrupt handler related to Int 0x2C??? Int 0x2C
> is a software interrupt
> (as its very value of 0x2c suggests - it is too low for hardware
> interrupt), so that it has nothing to do with your ISR. In actuality,
> it is one of few software interrupts that user-mode code is allowed to
> raise.....
>
> Anton Bassov
>
> John Q. Public wrote:
>> Hi!
>>
>> The OS is triggering this assert while my driver is executing its
>> interrupt
>> handler. I suspect that the OS is hitting the assert because we may be
>> within DPC for too long. However, how can I find out the root cause for
>> this
>> assert?
>>
>> Thanks!
>



Re: Vista 5840 and Int 2C by soviet_bloke

soviet_bloke
Wed Nov 15 02:15:15 CST 2006

> 1. This is not happening in the ISR, but in the interrupt handler which runs
> at IRQL == DISPATCH.

What is "interrupt handler", in your understanding?????????

In a true meaning of this term, interrupt handler is system-provided
routine with the address stored in IDT. Its task is to save registers,
raise IRQL to DIRQL , corresponding to your device (it runs at
DISPATCH_LEVEL before doing so), and transfer control to ISR. As a
driver writer, you are not supposed to even know about it, let alone
to get involved in the process. Therefore, I don't think that
"interrupt handler" in this context refers to the above the mentioned
routine, does it????

In most cases, when you hear "interrupt handler" from driver writer,
you can be pretty sure he means ISR, but you made it clear that your
"interrupt handler" runs at DISPATCH_LEVEL, so it is not ISR.

The only thing left is DPC routine - it is scheduled by ISR, and,
indeed, runs at DISPATCH_LEVEL, and this is what you, apparently meant
by "interrupt handler"

In other words, you should learn how to formulate your questions
properly.

> 3. Why am I wasting my time on this news group?

To be honest, for the time being it looks like "this news group" is
wasting its time on you, and not the other way round.......

Anton Bassov


John Q. Public wrote:
> 1. This is not happening in the ISR, but in the interrupt handler which runs
> at IRQL == DISPATCH.
> 2. The WDK supports DbgRaiseAssertionFailure() which uses INT 2c, which can
> be used by KM drivers.
> 3. Why am I wasting my time on this news group?
>
> <soviet_bloke@hotmail.com> wrote in message
> news:1163565253.054096.316480@b28g2000cwb.googlegroups.com...
> >> The OS is triggering this assert while my driver is executing its
> >> interrupt
> >> handler.
> >
> > How is your driver's interrupt handler related to Int 0x2C??? Int 0x2C
> > is a software interrupt
> > (as its very value of 0x2c suggests - it is too low for hardware
> > interrupt), so that it has nothing to do with your ISR. In actuality,
> > it is one of few software interrupts that user-mode code is allowed to
> > raise.....
> >
> > Anton Bassov
> >
> > John Q. Public wrote:
> >> Hi!
> >>
> >> The OS is triggering this assert while my driver is executing its
> >> interrupt
> >> handler. I suspect that the OS is hitting the assert because we may be
> >> within DPC for too long. However, how can I find out the root cause for
> >> this
> >> assert?
> >>
> >> Thanks!
> >


Re: Vista 5840 and Int 2C by John

John
Wed Nov 15 06:42:05 CST 2006

1. An ISR is what is called at KIRQL.
2. An interrupt handler is what is called through the NDIS miniport's
MiniportInterruptDPC (for NDIS 6.0) or MiniportHandleInterrupt function at
DIRQL. See how interrupt handler == MiniportHandleInterrupt?

What I have been describing is an assert (triggered by the OS) which happens
within the driver's MiniportInterruptDPC.

<soviet_bloke@hotmail.com> wrote in message
news:1163578515.431545.38930@b28g2000cwb.googlegroups.com...
>> 1. This is not happening in the ISR, but in the interrupt handler which
>> runs
>> at IRQL == DISPATCH.
>
> What is "interrupt handler", in your understanding?????????
>
> In a true meaning of this term, interrupt handler is system-provided
> routine with the address stored in IDT. Its task is to save registers,
> raise IRQL to DIRQL , corresponding to your device (it runs at
> DISPATCH_LEVEL before doing so), and transfer control to ISR. As a
> driver writer, you are not supposed to even know about it, let alone
> to get involved in the process. Therefore, I don't think that
> "interrupt handler" in this context refers to the above the mentioned
> routine, does it????
>
> In most cases, when you hear "interrupt handler" from driver writer,
> you can be pretty sure he means ISR, but you made it clear that your
> "interrupt handler" runs at DISPATCH_LEVEL, so it is not ISR.
>
> The only thing left is DPC routine - it is scheduled by ISR, and,
> indeed, runs at DISPATCH_LEVEL, and this is what you, apparently meant
> by "interrupt handler"
>
> In other words, you should learn how to formulate your questions
> properly.
>
>> 3. Why am I wasting my time on this news group?
>
> To be honest, for the time being it looks like "this news group" is
> wasting its time on you, and not the other way round.......
>
> Anton Bassov
>
>
> John Q. Public wrote:
>> 1. This is not happening in the ISR, but in the interrupt handler which
>> runs
>> at IRQL == DISPATCH.
>> 2. The WDK supports DbgRaiseAssertionFailure() which uses INT 2c, which
>> can
>> be used by KM drivers.
>> 3. Why am I wasting my time on this news group?
>>
>> <soviet_bloke@hotmail.com> wrote in message
>> news:1163565253.054096.316480@b28g2000cwb.googlegroups.com...
>> >> The OS is triggering this assert while my driver is executing its
>> >> interrupt
>> >> handler.
>> >
>> > How is your driver's interrupt handler related to Int 0x2C??? Int 0x2C
>> > is a software interrupt
>> > (as its very value of 0x2c suggests - it is too low for hardware
>> > interrupt), so that it has nothing to do with your ISR. In actuality,
>> > it is one of few software interrupts that user-mode code is allowed to
>> > raise.....
>> >
>> > Anton Bassov
>> >
>> > John Q. Public wrote:
>> >> Hi!
>> >>
>> >> The OS is triggering this assert while my driver is executing its
>> >> interrupt
>> >> handler. I suspect that the OS is hitting the assert because we may be
>> >> within DPC for too long. However, how can I find out the root cause
>> >> for
>> >> this
>> >> assert?
>> >>
>> >> Thanks!
>> >
>



Re: Vista 5840 and Int 2C by soviet_bloke

soviet_bloke
Wed Nov 15 09:11:35 CST 2006

> 2. An interrupt handler is what is called through the NDIS miniport's

So now it turns out that we are speaking about NDIS miniport......
This is what you should have started with. Anyway, it sounds already
encouraging.

Have you got any idea at which exact point an assertion fails? Once it
is not your code who fails an assertion, it must be happening
throughout a call to some NDIS function. Have you got any idea which
particular function does it?

Anton Bassov


John Q. Public wrote:
> 1. An ISR is what is called at KIRQL.
> 2. An interrupt handler is what is called through the NDIS miniport's
> MiniportInterruptDPC (for NDIS 6.0) or MiniportHandleInterrupt function at
> DIRQL. See how interrupt handler == MiniportHandleInterrupt?
>
> What I have been describing is an assert (triggered by the OS) which happens
> within the driver's MiniportInterruptDPC.
>
> <soviet_bloke@hotmail.com> wrote in message
> news:1163578515.431545.38930@b28g2000cwb.googlegroups.com...
> >> 1. This is not happening in the ISR, but in the interrupt handler which
> >> runs
> >> at IRQL == DISPATCH.
> >
> > What is "interrupt handler", in your understanding?????????
> >
> > In a true meaning of this term, interrupt handler is system-provided
> > routine with the address stored in IDT. Its task is to save registers,
> > raise IRQL to DIRQL , corresponding to your device (it runs at
> > DISPATCH_LEVEL before doing so), and transfer control to ISR. As a
> > driver writer, you are not supposed to even know about it, let alone
> > to get involved in the process. Therefore, I don't think that
> > "interrupt handler" in this context refers to the above the mentioned
> > routine, does it????
> >
> > In most cases, when you hear "interrupt handler" from driver writer,
> > you can be pretty sure he means ISR, but you made it clear that your
> > "interrupt handler" runs at DISPATCH_LEVEL, so it is not ISR.
> >
> > The only thing left is DPC routine - it is scheduled by ISR, and,
> > indeed, runs at DISPATCH_LEVEL, and this is what you, apparently meant
> > by "interrupt handler"
> >
> > In other words, you should learn how to formulate your questions
> > properly.
> >
> >> 3. Why am I wasting my time on this news group?
> >
> > To be honest, for the time being it looks like "this news group" is
> > wasting its time on you, and not the other way round.......
> >
> > Anton Bassov
> >
> >
> > John Q. Public wrote:
> >> 1. This is not happening in the ISR, but in the interrupt handler which
> >> runs
> >> at IRQL == DISPATCH.
> >> 2. The WDK supports DbgRaiseAssertionFailure() which uses INT 2c, which
> >> can
> >> be used by KM drivers.
> >> 3. Why am I wasting my time on this news group?
> >>
> >> <soviet_bloke@hotmail.com> wrote in message
> >> news:1163565253.054096.316480@b28g2000cwb.googlegroups.com...
> >> >> The OS is triggering this assert while my driver is executing its
> >> >> interrupt
> >> >> handler.
> >> >
> >> > How is your driver's interrupt handler related to Int 0x2C??? Int 0x2C
> >> > is a software interrupt
> >> > (as its very value of 0x2c suggests - it is too low for hardware
> >> > interrupt), so that it has nothing to do with your ISR. In actuality,
> >> > it is one of few software interrupts that user-mode code is allowed to
> >> > raise.....
> >> >
> >> > Anton Bassov
> >> >
> >> > John Q. Public wrote:
> >> >> Hi!
> >> >>
> >> >> The OS is triggering this assert while my driver is executing its
> >> >> interrupt
> >> >> handler. I suspect that the OS is hitting the assert because we may be
> >> >> within DPC for too long. However, how can I find out the root cause
> >> >> for
> >> >> this
> >> >> assert?
> >> >>
> >> >> Thanks!
> >> >
> >


Re: Vista 5840 and Int 2C by bburgin

bburgin
Wed Nov 15 17:12:25 CST 2006

------=_NextPart_0001_356EB312
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

1) I would use the checked version of 6000 (RTM), perhaps enabling debug
spew for NDIS, since it looks like you're doing NDIS development
2) Use the MS symbol server
3) This will probably take more time than what can be accomplished in the
newgroup. Rohit and I work with your company often; we would be happy to
assist you directly. Perhaps you could open a support incident? But I
would load CHKed 6000 first.

Bryan S. Burgin
bburgin@online.microsoft.com

This posting is provided "AS IS" with no warranties, and confers no rights.

------=_NextPart_0001_356EB312
Content-Type: text/x-rtf
Content-Transfer-Encoding: 7bit

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fprq2\fcharset0 MS Sans Serif;}}
\viewkind4\uc1\pard\f0\fs20 1) I would use the checked version of 6000 (RTM), perhaps enabling debug spew for NDIS, since it looks like you're doing NDIS development
\par 2) Use the MS symbol server
\par 3) This will probably take more time than what can be accomplished in the newgroup. Rohit and I work with your company often; we would be happy to assist you directly. Perhaps you could open a support incident? But I would load CHKed 6000 first.
\par
\par Bryan S. Burgin
\par bburgin@online.microsoft.com
\par
\par This posting is provided "AS IS" with no warranties, and confers no rights.
\par
\par
\par }
------=_NextPart_0001_356EB312--