From: rookieroo on
Hi,

I am writing a ndis 6.0 miniport driver. I install the driver from
device manager. When installing,
Miniportinitializeex is called. Before returning status from
miniportinitializeex, I log a line with status.
In WinDbg, I see this log line and then a bug check
(IRQL_NOT_LESS_OR_EQUAL in ndis.sys).

Has anybody seen this? What could be the problem?

Thanks.


kd> !analyze -v
*******************************************************************************
*
*
* Bugcheck
Analysis *
*
*
*******************************************************************************

IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pageable (or completely invalid)
address at an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 00000016, memory referenced
Arg2: 0000001b, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 820c9bdd, address which referenced memory

Debugging Details:
------------------


READ_ADDRESS: 00000016

CURRENT_IRQL: 1b

FAULTING_IP:
nt!KiSignalTimer+53
820c9bdd 80781601 cmp byte ptr [eax+16h],1

DEFAULT_BUCKET_ID: VISTA_RC

BUGCHECK_STR: 0xA

PROCESS_NAME: System

TRAP_FRAME: 861e75a4 -- (.trap ffffffff861e75a4)
ErrCode = 00000000
eax=00000000 ebx=00000000 ecx=dc9a0d8a edx=00000000 esi=8385d158
edi=8385d160
eip=820c9bdd esp=861e7618 ebp=861e7638 iopl=0 nv up ei ng nz
ac po cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00010293
nt!KiSignalTimer+0x53:
820c9bdd 80781601 cmp byte ptr [eax+16h],1 ds:
0023:00000016=??
Resetting default scope

LOCK_ADDRESS: 8212e020 -- (!locks 8212e020)

Resource @ nt!PiEngineLock (0x8212e020) Exclusively owned
Contention Count = 4
Threads: 8319b020-01<*>
1 total locks, 1 locks currently held

PNP_TRIAGE:
Lock address : 0x8212e020
Thread Count : 1
Thread address: 0x8319b020
Thread wait : 0x3144

LAST_CONTROL_TRANSFER: from 820d873f to 82081760

STACK_TEXT:
861e7184 820d873f 00000003 861eca94 00000000 nt!
RtlpBreakWithStatusInstruction
861e71d4 820d91ac 00000003 00000016 820c9bdd nt!KiBugCheckDebugBreak
+0x1c
861e7584 8208fc44 0000000a 00000016 0000001b nt!KeBugCheck2+0x5f4
861e7584 820c9bdd 0000000a 00000016 0000001b nt!KiTrap0E+0x2ac
861e7638 820ad8bf 00000000 8385d158 8385d0e8 nt!KiSignalTimer+0x53
861e765c 820ad7ec 8385d158 00000000 00000000 nt!KeSetTimerEx+0xc8
861e7678 8525403e 8385d158 00000000 00000000 nt!KeSetTimer+0x1b
861e7694 85323e24 8385d158 00000000 82028338 ndis!NdisSetTimer+0x39
861e7930 8532b6aa 8386adf8 8385d0e8 9663d7f0 ndis!
ndisMInitializeAdapter+0x87e
861e7968 8532b525 8386adf8 8385d030 967e1d38 ndis!ndisInitializeAdapter
+0x109
861e7990 85326edc 8385d030 00000000 84a54818 ndis!ndisPnPStartDevice
+0xf3
861e79e0 82027ecf 8385d030 84a54760 861e7a5c ndis!ndisPnPDispatch
+0x697
861e79f8 821b07ef 00000000 94fc0a80 836bd400 nt!IofCallDriver+0x63
861e7a14 82007941 861e7a38 8200777b 836bd400 nt!PnpAsynchronousCall
+0x96
861e7a60 821b9717 8200777b 836bd400 94fc07c8 nt!PnpStartDevice+0xb7
861e7abc 821b907c 836bd400 0000000d 00000000 nt!PnpStartDeviceNode
+0x13a
861e7ad8 821b689a 00000000 00000000 94fc07c8 nt!
PipProcessStartPhase1+0x65
861e7cd4 821b5e6d 94fc07c8 83798578 861e7d00 nt!PipProcessDevNodeTree
+0x18d
861e7d08 8200724f 820fde3c 8319b020 8212d260 nt!PiRestartDevice+0x8a
861e7d44 82078e18 00000000 00000000 8319b020 nt!PnpDeviceActionWorker
+0x1ae
861e7d7c 822254a8 00000000 861ec680 00000000 nt!ExpWorkerThread+0xfd
861e7dc0 8209145e 82078d1b 00000001 00000000 nt!PspSystemThreadStartup
+0x9d
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16


STACK_COMMAND: kb

FOLLOWUP_IP:
ndis!NdisSetTimer+39
8525403e eb09 jmp ndis!NdisSetTimer+0x44 (85254049)

SYMBOL_STACK_INDEX: 7

SYMBOL_NAME: ndis!NdisSetTimer+39

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: ndis

IMAGE_NAME: ndis.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 4549b2fd

FAILURE_BUCKET_ID: 0xA_ndis!NdisSetTimer+39

BUCKET_ID: 0xA_ndis!NdisSetTimer+39

Followup: MachineOwner
---------

From: Stephan Wolf [MVP] on
Seems like NDIS is trying to set some timer but is using some NULL
pointer. Not sure why NDIS does this or why it uses a NULL pointer.

Stephan
--
On Feb 16, 10:57 am, rookie...(a)gmail.com wrote:
> Hi,
>
> I am writing a x86 ndis 6.0 miniport driver. I install the driver on
> x86 vista from device manager. When installing,
> Miniportinitializeex is called. Before returning status from
> miniportinitializeex, I log a line with status.
> In WinDbg, I see this log line and then a bug check
> (IRQL_NOT_LESS_OR_EQUAL in ndis.sys).
>
> Has anybody seen this? What could be the problem?
>
> Thanks.

From: rookieroo on

I am a newbie in driver development...How did you figure this? How do
I proceed from
here?

Thanks.

On Feb 16, 4:05 pm, "Stephan Wolf [MVP]" <stew...(a)hotmail.com> wrote:
> Seems like NDIS is trying to set some timer but is using some NULL
> pointer. Not sure why NDIS does this or why it uses a NULL pointer.
>
> Stephan
> --
> On Feb 16, 10:57 am, rookie...(a)gmail.com wrote:
>
> > Hi,
>
> > I am writing a x86 ndis 6.0 miniport driver. I install the driver on
> > x86 vista from device manager. When installing,
> > Miniportinitializeex is called. Before returning status from
> > miniportinitializeex, I log a line with status.
> > In WinDbg, I see this log line and then a bug check
> > (IRQL_NOT_LESS_OR_EQUAL in ndis.sys).
>
> > Has anybody seen this? What could be the problem?
>
> > Thanks.


From: rookieroo on

I am not creating these timers. What can be the possible reason ndis
wants to create timers?

On Feb 16, 4:30 pm, rookie...(a)gmail.com wrote:
> I am a newbie in driver development...How did you figure this? How do
> I proceed from
> here?
>
> Thanks.
>
> On Feb 16, 4:05 pm, "Stephan Wolf [MVP]" <stew...(a)hotmail.com> wrote:
>
> > Seems like NDIS is trying to set some timer but is using some NULL
> > pointer. Not sure why NDIS does this or why it uses a NULL pointer.
>
> > Stephan
> > --
> > On Feb 16, 10:57 am, rookie...(a)gmail.com wrote:
>
> > > Hi,
>
> > > I am writing a x86 ndis 6.0 miniport driver. I install the driver on
> > > x86 vista from device manager. When installing,
> > > Miniportinitializeex is called. Before returning status from
> > > miniportinitializeex, I log a line with status.
> > > In WinDbg, I see this log line and then a bug check
> > > (IRQL_NOT_LESS_OR_EQUAL in ndis.sys).
>
> > > Has anybody seen this? What could be the problem?
>
> > > Thanks.


From: Alireza Dabagh [MS] on
Looks like at this point we have returned back from MiniportInitializeEx
successfully which means this is most likely the deadman timer NDIS is
trying to set up for the miniport. Make sure you call
NdisMSetMiniportAttributes before you return from your MiniportInitializeEx
otherwise NDIS would try to set a timer that has not been initialized. (and
even if we don't bugcheck here, we will definitely bugcheck later).

-ali

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

<rookieroo(a)gmail.com> wrote in message
news:1171634238.164989.97370(a)q2g2000cwa.googlegroups.com...
>
> I am not creating these timers. What can be the possible reason ndis
> wants to create timers?
>
> On Feb 16, 4:30 pm, rookie...(a)gmail.com wrote:
>> I am a newbie in driver development...How did you figure this? How do
>> I proceed from
>> here?
>>
>> Thanks.
>>
>> On Feb 16, 4:05 pm, "Stephan Wolf [MVP]" <stew...(a)hotmail.com> wrote:
>>
>> > Seems like NDIS is trying to set some timer but is using some NULL
>> > pointer. Not sure why NDIS does this or why it uses a NULL pointer.
>>
>> > Stephan
>> > --
>> > On Feb 16, 10:57 am, rookie...(a)gmail.com wrote:
>>
>> > > Hi,
>>
>> > > I am writing a x86 ndis 6.0 miniport driver. I install the driver on
>> > > x86 vista from device manager. When installing,
>> > > Miniportinitializeex is called. Before returning status from
>> > > miniportinitializeex, I log a line with status.
>> > > In WinDbg, I see this log line and then a bug check
>> > > (IRQL_NOT_LESS_OR_EQUAL in ndis.sys).
>>
>> > > Has anybody seen this? What could be the problem?
>>
>> > > Thanks.
>
>