BugCheck 0x7c: BUGCODE_NDIS_DRIVER

Got this violation 0x05/0x06 (Cause of error: An Ethernet driver indicated receiving a packet by using a packet descriptor that is currently in use by the protocol stack)

Peculiar thing is the sending/receiving of packet streams at the streaming machine works fine till a remote desktop connection is connected with the streaming machine (ie. remote control to stream).

I guess there is some memory allocation and access problem somewhere? I can faithfully reproduce the same error which produces the same crash dump.

Anyone come across or solved this problem b4?

±---------------+
| Crash Debug |
±---------------+

FOLLOWUP_IP:
x12x5132!MalFlowIndicateReceivePacket+56 [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\malwrapper.c @ 3371]
baec516c 897514 mov dword ptr [ebp+14h],esi

FAULTING_SOURCE_CODE:
3367: // Call to NDIS function.
3368: NdisMIndicateReceivePacket (MalContext->MalAdapter->MalHandle,
3369: ReceivePackets,
3370: NumberOfPackets);

3371: malstatus = FLOW_PENDING;
3372: break;
3373:
3374: case MAL_UPPER_LAYER:
3375: // This is a wrong situation
3376: ASSERT(0);

SYMBOL_STACK_INDEX: 4

SYMBOL_NAME: x12x5132!MalFlowIndicateReceivePacket+56

FOLLOWUP_NAME: MachineOwner

IMAGE_NAME: x12x5132.sys

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner

±---------------+
| Crash stack |
±---------------+
nt!DbgBreakPointWithStatus+0x4
nt!KeRegisterBugCheckReasonCallback+0xb66
nt!KeBugCheckEx+0x1b
NDIS!EthFilterDprIndicateReceiveComplete+0x11f
x12x5132!MalFlowIndicateReceivePacket+0x56 (FPO: [Non-Fpo]) (CONV: stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\malwrapper.c @ 3368]
x12x5132!MalIndicateReceivePacket+0x1a (FPO: [Non-Fpo]) (CONV: stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\malwrapper.c @ 1964]
x12x5132!ReceivePacketArrayIndicate+0x28 (FPO: [Non-Fpo]) (CONV: stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\receive.c @ 2873]
x12x5132!RxProcessReceiveArray+0xa5 (FPO: [Non-Fpo]) (CONV: stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\receive.c @ 532]
x12x5132!E1000HandleInterrupt+0x6f (FPO: [Non-Fpo]) (CONV: stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\interrup.c @ 624]
x12x5132!EnE1000DPC+0x64 (FPO: [4,0,0]) (CONV: stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver\e1000\ene1000netdrv.c @ 743]
nt!ZwYieldExecution+0x284a
nt!KiDispatchInterrupt+0x32f

03 8089a3e0 baec5140 8a12d470 8089a464 00000001 NDIS!EthFilterDprIndicateReceiveComplete+0x11f

This can be caused by a variety of illegal packet manipulations. Do
you have an IM driver in the stack by chance? It looks to me like
you’re trying to re-use a packet that hasn’t been released by the
drivers above you yet. This should be easy enough to debug with some
debug-build reference counting logic.

Incidentally, I vaguely remember there being a problem with VirtualPC
that was causing this bugcheck; you might check the PCAUSA archives
for more discussion.

Good luck.

-sd

On Nov 16, 2006, at 5:17 AM, xxxxx@gmail.com wrote:

Got this violation 0x05/0x06 (Cause of error: An Ethernet driver
indicated receiving a packet by using a packet descriptor that is
currently in use by the protocol stack)

Peculiar thing is the sending/receiving of packet streams at the
streaming machine works fine till a remote desktop connection is
connected with the streaming machine (ie. remote control to stream).

I guess there is some memory allocation and access problem
somewhere? I can faithfully reproduce the same error which produces
the same crash dump.

Anyone come across or solved this problem b4?

±---------------+
| Crash Debug |
±---------------+

FOLLOWUP_IP:
x12x5132!MalFlowIndicateReceivePacket+56 [c:\work\code
\int_netif_e1000pcie\server\ennetworkdriver\e1000\malwrapper.c @ 3371]
baec516c 897514 mov dword ptr [ebp+14h],esi

FAULTING_SOURCE_CODE:
3367: // Call to NDIS function.
3368: NdisMIndicateReceivePacket (MalContext-
>MalAdapter->MalHandle,
3369: ReceivePackets,
3370: NumberOfPackets);
> 3371: malstatus = FLOW_PENDING;
3372: break;
3373:
3374: case MAL_UPPER_LAYER:
3375: // This is a wrong situation
3376: ASSERT(0);

SYMBOL_STACK_INDEX: 4

SYMBOL_NAME: x12x5132!MalFlowIndicateReceivePacket+56

FOLLOWUP_NAME: MachineOwner

IMAGE_NAME: x12x5132.sys

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner

±---------------+
| Crash stack |
±---------------+
nt!DbgBreakPointWithStatus+0x4
nt!KeRegisterBugCheckReasonCallback+0xb66
nt!KeBugCheckEx+0x1b
NDIS!EthFilterDprIndicateReceiveComplete+0x11f
x12x5132!MalFlowIndicateReceivePacket+0x56 (FPO: [Non-Fpo]) (CONV:
stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
\e1000\malwrapper.c @ 3368]
x12x5132!MalIndicateReceivePacket+0x1a (FPO: [Non-Fpo]) (CONV:
stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
\e1000\malwrapper.c @ 1964]
x12x5132!ReceivePacketArrayIndicate+0x28 (FPO: [Non-Fpo]) (CONV:
stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
\e1000\receive.c @ 2873]
x12x5132!RxProcessReceiveArray+0xa5 (FPO: [Non-Fpo]) (CONV:
stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
\e1000\receive.c @ 532]
x12x5132!E1000HandleInterrupt+0x6f (FPO: [Non-Fpo]) (CONV:
stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
\e1000\interrup.c @ 624]
x12x5132!EnE1000DPC+0x64 (FPO: [4,0,0]) (CONV: stdcall) [c:\work
\code\int_netif_e1000pcie\server\ennetworkdriver\e1000
\ene1000netdrv.c @ 743]
nt!ZwYieldExecution+0x284a
nt!KiDispatchInterrupt+0x32f

03 8089a3e0 baec5140 8a12d470 8089a464 00000001 NDIS!
EthFilterDprIndicateReceiveComplete+0x11f


Questions? First check the Kernel Driver FAQ at http://
www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

I managed to find the bug.

Just for the completion of the discussion, I realised there is a possibility
that I
passed the packet the the NDIS layer too many times for the same packet
using NdisMIndicateReceivePacket. Traced along the way, and discovered
that I made a freak mistake by claiming interrupts of other network cards
on board (which explains the problem which appears when another connection
is used).

Anyway, thanks Steve.

Cheers,
Alex

On 11/17/06, Steve Dispensa wrote:
>
> This can be caused by a variety of illegal packet manipulations. Do
> you have an IM driver in the stack by chance? It looks to me like
> you’re trying to re-use a packet that hasn’t been released by the
> drivers above you yet. This should be easy enough to debug with some
> debug-build reference counting logic.
>
> Incidentally, I vaguely remember there being a problem with VirtualPC
> that was causing this bugcheck; you might check the PCAUSA archives
> for more discussion.
>
> Good luck.
>
> -sd
>
> On Nov 16, 2006, at 5:17 AM, xxxxx@gmail.com wrote:
>
> > Got this violation 0x05/0x06 (Cause of error: An Ethernet driver
> > indicated receiving a packet by using a packet descriptor that is
> > currently in use by the protocol stack)
> >
> > Peculiar thing is the sending/receiving of packet streams at the
> > streaming machine works fine till a remote desktop connection is
> > connected with the streaming machine (ie. remote control to stream).
> >
> > I guess there is some memory allocation and access problem
> > somewhere? I can faithfully reproduce the same error which produces
> > the same crash dump.
> >
> > Anyone come across or solved this problem b4?
> >
> > ±---------------+
> > | Crash Debug |
> > ±---------------+
> >
> > FOLLOWUP_IP:
> > x12x5132!MalFlowIndicateReceivePacket+56 [c:\work\code
> > \int_netif_e1000pcie\server\ennetworkdriver\e1000\malwrapper.c @ 3371]
> > baec516c 897514 mov dword ptr [ebp+14h],esi
> >
> > FAULTING_SOURCE_CODE:
> > 3367: // Call to NDIS function.
> > 3368: NdisMIndicateReceivePacket (MalContext-
> > >MalAdapter->MalHandle,
> > 3369: ReceivePackets,
> > 3370: NumberOfPackets);
> >> 3371: malstatus = FLOW_PENDING;
> > 3372: break;
> > 3373:
> > 3374: case MAL_UPPER_LAYER:
> > 3375: // This is a wrong situation
> > 3376: ASSERT(0);
> >
> >
> > SYMBOL_STACK_INDEX: 4
> >
> > SYMBOL_NAME: x12x5132!MalFlowIndicateReceivePacket+56
> >
> > FOLLOWUP_NAME: MachineOwner
> >
> > IMAGE_NAME: x12x5132.sys
> >
> > BUCKET_ID: WRONG_SYMBOLS
> >
> > Followup: MachineOwner
> >
> > ±---------------+
> > | Crash stack |
> > ±---------------+
> > nt!DbgBreakPointWithStatus+0x4
> > nt!KeRegisterBugCheckReasonCallback+0xb66
> > nt!KeBugCheckEx+0x1b
> > NDIS!EthFilterDprIndicateReceiveComplete+0x11f
> > x12x5132!MalFlowIndicateReceivePacket+0x56 (FPO: [Non-Fpo]) (CONV:
> > stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
> > \e1000\malwrapper.c @ 3368]
> > x12x5132!MalIndicateReceivePacket+0x1a (FPO: [Non-Fpo]) (CONV:
> > stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
> > \e1000\malwrapper.c @ 1964]
> > x12x5132!ReceivePacketArrayIndicate+0x28 (FPO: [Non-Fpo]) (CONV:
> > stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
> > \e1000\receive.c @ 2873]
> > x12x5132!RxProcessReceiveArray+0xa5 (FPO: [Non-Fpo]) (CONV:
> > stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
> > \e1000\receive.c @ 532]
> > x12x5132!E1000HandleInterrupt+0x6f (FPO: [Non-Fpo]) (CONV:
> > stdcall) [c:\work\code\int_netif_e1000pcie\server\ennetworkdriver
> > \e1000\interrup.c @ 624]
> > x12x5132!EnE1000DPC+0x64 (FPO: [4,0,0]) (CONV: stdcall) [c:\work
> > \code\int_netif_e1000pcie\server\ennetworkdriver\e1000
> > \ene1000netdrv.c @ 743]
> > nt!ZwYieldExecution+0x284a
> > nt!KiDispatchInterrupt+0x32f
> >
> > 03 8089a3e0 baec5140 8a12d470 8089a464 00000001 NDIS!
> > EthFilterDprIndicateReceiveComplete+0x11f
> >
> > —
> > Questions? First check the Kernel Driver FAQ at http://
> > www.osronline.com/article.cfm?id=256
> >
> > To unsubscribe, visit the List Server section of OSR Online at
> > http://www.osronline.com/page.cfm?name=ListServer
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>