Crashing Miniport Driver

Hi,

Im developing NDIS Protocol driver.While running suddenly my Miniport driver is crashing.Following is the message I got it from Debugger

BUGCODE_ID_DRIVER (40000080)
This is the NDIS Driver Bugcheck for Windows 2000 and Windows XP.
For Windows Server 2003 and later, see 0x7C, BUGCODE_NDIS_DRIVER.
DESCRIPTION
The meaning of the bug check parameters cannot be determined by examining the
parameters alone. You must also examine the text of a DbgPrint message.
For details, see either the debugger documentation or the DDK documentation.
Arguments:
Arg1: 8623e670
Arg2: 85f2d120
Arg3: 805501e4
Arg4: 00000001

Debugging Details:

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x40000080

PROCESS_NAME: Idle

LAST_CONTROL_TRANSFER: from 804f8afd to 8052a5d8

STACK_TEXT:
8054fb18 804f8afd 00000003 8054fe74 00000000 nt!RtlpBreakWithStatusInstruction
8054fb64 804f96e8 00000003 8623e670 85f2d120 nt!KiBugCheckDebugBreak+0x19
8054ff44 804f9c37 40000080 8623e670 85f2d120 nt!KeBugCheck2+0x574
8054ff64 f730c921 40000080 8623e670 85f2d120 nt!KeBugCheckEx+0x1b
8054ffc4 f6cca29f 8623e670 805501e4 00000001 NDIS!ethFilterDprIndicateReceivePacket+0x5fd
WARNING: Stack unwind information not available. Following frames may be wrong.
805503fc f6ccd0c3 86059000 8623e670 86059190 Rtenicxp+0x529f
80550410 f7301f09 86059000 8055b0a0 ffdff9c0 Rtenicxp+0x80c3
80550428 80544e5f 860591a4 86059190 00000000 NDIS!ndisMDpcX+0x21
80550450 80544d44 00000000 0000000e 00000000 nt!KiRetireDpcList+0x61
80550454 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x28

STACK_COMMAND: kb

FOLLOWUP_IP:
Rtenicxp+529f
f6cca29f 56 push esi

SYMBOL_STACK_INDEX: 5

SYMBOL_NAME: Rtenicxp+529f

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: Rtenicxp

IMAGE_NAME: Rtenicxp.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 45c8b02e

FAILURE_BUCKET_ID: 0x40000080_Rtenicxp+529f

BUCKET_ID: 0x40000080_Rtenicxp+529f

What would be the reason for this error.

Thanks
Alex.

i think in the above post my Question is bit unclear.Sorry for that.

My protocol driver is working well(Which is developed by our team).But the underlying miniport driver is crashing .I includede the message i got it from Debugger in the above post.

My Question is

What would be the reason for that Fatal error

Is that my protocol driver is triggering that crash in the miniport driver

Awaiting your valuable ideas and suggestions.

Thanks
Alex.

> My protocol driver is working well(Which is developed by our team).But the

underlying miniport driver is crashing .

The above statement is a true “masterpiece” - everything is miniport’s fault…

I somehow presume that underlying miniport driver does not crash with TCPIP, and, in general, everything is OK unless your “well-working” protocol gets bound to it…

Furthermore, judging from the stack dump that you have provided, the crash occurs right in NDIS library and not in miniport driver, and it happens during packet indication. My very first suggestion
is that your PtReceive() or PtReceivePackets() screws up something, so that the system crashes when NDIS tries to access a given packet after your PtReceive() or PtReceivePackets() returns (this is the only reason why your protocol driver is not mentioned anywhere in the stack dump - it does not mean that your protocol is “well-written”).

In order to say something more definitively we need to see your code…

Anton Bassov

Try running with the checked build of NDIS so that it will spit out the
reason it has bugchecked. Also, turn on the NDIS verifier as well as Driver
Verifier on NDIS.SYS, your -protocol-.sys, and your -miniport-.sys.

Make sure your protocol handles NDIS_STATUS_RESOURCES correctly in the
ProtocolRecievePacket() handler. That is, that it does not try to hold onto
the packet. I suspect that this bugcheck might very well be that a packet
was indicated to your protocol with NDIS_STATUS_RESOURCES and your protocol
returned a non-zero packet reference count from ProtocolRecievePacket().

Of course, there is the far greatly likelyhood that I am completely wrong
about that hunch and I surely don’t think I could actually tell you what was
wrong without a lot more information.

For instance, to find out what protocol binding NDIS was in the process of
indicating the packet to at the time it bugchecked, a bit of stack dumping
along with the output form !ndiskd.protocols to see the address (handle)
values of the protocol bindings (opens) will narrow this down somewhat. I
am going to take a guess that you will find it to be your protocol, or, that
your protocol ‘preceeds’ the current protocol in the list of opens (meaning
it would have already been given the packet).

Another thing to look at would be the packet itself using !ndiskd.pkt
(actually, it might be .packet, I don’t remember right this instant but
!ndiskd.help is wonderful). Again, the packet address is on the stack
*somewhere*. Heck, it might even be one of the bugcheck parameters, who
knows. !ndiskd.packet is pretty good about telling you if an address is a
packet or not. When you find the packet, see if it looks reasonable (like,
that it has a MDL list, is not free, etc.)

Good Luck,
Dave Cattley
Consulting Engineer
Systems Software Development

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@wipro.com
Sent: Thursday, September 13, 2007 2:11 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Crashing Miniport Driver

Hi,

Im developing NDIS Protocol driver.While running suddenly my
Miniport driver is crashing.Following is the message I got it from Debugger

BUGCODE_ID_DRIVER (40000080)
This is the NDIS Driver Bugcheck for Windows 2000 and Windows XP.
For Windows Server 2003 and later, see 0x7C, BUGCODE_NDIS_DRIVER.
DESCRIPTION
The meaning of the bug check parameters cannot be determined by examining
the parameters alone. You must also examine the text of a DbgPrint message.
For details, see either the debugger documentation or the DDK documentation.
Arguments:
Arg1: 8623e670
Arg2: 85f2d120
Arg3: 805501e4
Arg4: 00000001

Debugging Details:

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x40000080

PROCESS_NAME: Idle

LAST_CONTROL_TRANSFER: from 804f8afd to 8052a5d8

STACK_TEXT:
8054fb18 804f8afd 00000003 8054fe74 00000000
nt!RtlpBreakWithStatusInstruction
8054fb64 804f96e8 00000003 8623e670 85f2d120 nt!KiBugCheckDebugBreak+0x19
8054ff44 804f9c37 40000080 8623e670 85f2d120 nt!KeBugCheck2+0x574
8054ff64 f730c921 40000080 8623e670 85f2d120 nt!KeBugCheckEx+0x1b
8054ffc4 f6cca29f 8623e670 805501e4 00000001
NDIS!ethFilterDprIndicateReceivePacket+0x5fd
WARNING: Stack unwind information not available. Following frames may be
wrong.
805503fc f6ccd0c3 86059000 8623e670 86059190 Rtenicxp+0x529f 80550410
f7301f09 86059000 8055b0a0 ffdff9c0 Rtenicxp+0x80c3
80550428 80544e5f 860591a4 86059190 00000000 NDIS!ndisMDpcX+0x21 80550450
80544d44 00000000 0000000e 00000000 nt!KiRetireDpcList+0x61
80550454 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x28

STACK_COMMAND: kb

FOLLOWUP_IP:
Rtenicxp+529f
f6cca29f 56 push esi

SYMBOL_STACK_INDEX: 5

SYMBOL_NAME: Rtenicxp+529f

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: Rtenicxp

IMAGE_NAME: Rtenicxp.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 45c8b02e

FAILURE_BUCKET_ID: 0x40000080_Rtenicxp+529f

BUCKET_ID: 0x40000080_Rtenicxp+529f

What would be the reason for this error.

Thanks
Alex.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

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

> ----------

From: xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com] on behalf of xxxxx@wipro.com[SMTP:xxxxx@wipro.com]
Reply To: Windows System Software Devs Interest List
Sent: Thursday, September 13, 2007 8:11 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Crashing Miniport Driver

BUGCODE_ID_DRIVER (40000080)
This is the NDIS Driver Bugcheck for Windows 2000 and Windows XP.
For Windows Server 2003 and later, see 0x7C, BUGCODE_NDIS_DRIVER.
DESCRIPTION
The meaning of the bug check parameters cannot be determined by examining the
parameters alone. You must also examine the text of a DbgPrint message.
For details, see either the debugger documentation or the DDK documentation.

Have you tried to follow above WinDbg advice? If you can reproduce crash, connect debugger and examine debug output just before the crash. If you just analyse crashdump, disassemble the code which invoked bugcheck and just before it there should be DbgPrint call. The first parameter is format string and it could give you some advice why NDIS decided to bugcheck.

Of course, the advice can be misleading and there may not be any message. But I’d start analysis there.

Best regards,

Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]

Hi,
If I enable the verifier I could not reproduce this error.Only without verifier im having this problem.

The Kernel Debugger Message:

BUGCODE_ID_DRIVER (40000080)
This is the NDIS Driver Bugcheck for Windows 2000 and Windows XP.
For Windows Server 2003 and later, see 0x7C, BUGCODE_NDIS_DRIVER.
DESCRIPTION
The meaning of the bug check parameters cannot be determined by examining
the parameters alone. You must also examine the text of a DbgPrint message.
For details, see either the debugger documentation or the DDK documentation.
Arguments:
Arg1: 8623e670
Arg2: 85f2d120
Arg3: 805501e4
Arg4: 00000001

Debugging Details:

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x40000080

PROCESS_NAME: Idle

LAST_CONTROL_TRANSFER: from 804f8afd to 8052a5d8

STACK_TEXT:
8054fb18 804f8afd 00000003 8054fe74 00000000
nt!RtlpBreakWithStatusInstruction
8054fb64 804f96e8 00000003 8623e670 85f2d120 nt!KiBugCheckDebugBreak+0x19
8054ff44 804f9c37 40000080 8623e670 85f2d120 nt!KeBugCheck2+0x574
8054ff64 f730c921 40000080 8623e670 85f2d120 nt!KeBugCheckEx+0x1b
8054ffc4 f6cca29f 8623e670 805501e4 00000001
NDIS!ethFilterDprIndicateReceivePacket+0x5fd
WARNING: Stack unwind information not available. Following frames may be
wrong.
805503fc f6ccd0c3 86059000 8623e670 86059190 Rtenicxp+0x529f 80550410
f7301f09 86059000 8055b0a0 ffdff9c0 Rtenicxp+0x80c3
80550428 80544e5f 860591a4 86059190 00000000 NDIS!ndisMDpcX+0x21 80550450
80544d44 00000000 0000000e 00000000 nt!KiRetireDpcList+0x61
80550454 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x28

STACK_COMMAND: kb

FOLLOWUP_IP:
Rtenicxp+529f
f6cca29f 56 push esi

SYMBOL_STACK_INDEX: 5

SYMBOL_NAME: Rtenicxp+529f

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: Rtenicxp

IMAGE_NAME: Rtenicxp.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 45c8b02e

FAILURE_BUCKET_ID: 0x40000080_Rtenicxp+529f

BUCKET_ID: 0x40000080_Rtenicxp+529f