Hi,
I have a driver which sends/recvs data from network using TDI.
I have my own ClientEventReceive handler installed.
The driver works fine when only sending data out. However, it
will crash if i do mixed sending/recving for a while. This seems only happen
when i run on a gigabit ethernet. For 100Mbit network, very rare, although
i did see the problem once.
The bugcheck happened in TcpChecksum() or sometimes TcpFreePartialRB().
I have checked my code many times to see if there is potential memory
violation
in my code but could not find any.
Now I start to concern there could be packets lost if i spend too
much time processing other stuff in my completion routines. Basically, I
guess
the default TDI receiving buffer should be big enough to hold whatever data
has
arrived from the remote peer untill i consume them. But right now, i am not
quite sure if i am fast enough to consume the data. What will happen if
packet get
lost?
Did anyone have similiar experience? By the way, I am using Intel Pro
Gigabit
NIC and W2K systems.
Thanks. Any feedback is welcome.
Wei
Following is a brief description of the problem. Please diccard the symbols
dismatch
message.
****************************************************************************
***
*
*
* Bugcheck Analysis
*
*
*
****************************************************************************
***
DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pagable (or completely invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: 0000000c, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: f714a684, address which referenced memory
Debugging Details:
***** Kernel symbols are WRONG. Please fix symbols to do analysis.
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: D1
LAST_CONTROL_TRANSFER: from 85750d98 to 80466f7c
STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be
wrong.
804717b8 85750d98 85750d9c 00000000 ffdff120 nt!Kei386EoiHelper+0x2ae4
85750d98 d522426a 00000020 00000000 00000000 0x85750d98
e100080f 14000000 02000100 00010100 00000000 0xd522426a
00022000 3f3f3f3f 3f3f3f3f 3f3f3f3f 3f3f3f3f 0x14000000
3f3f3f3f 00000000 00000000 00000000 00000000 0x3f3f3f3f
FOLLOWUP_IP:
nt!Kei386EoiHelper+2ae4
80466f7c f7457000000200 test dword ptr [ebp+0x70],0x20000
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: nt!Kei386EoiHelper+2ae4
MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 3975dfdf
STACK_COMMAND: kb
BUCKET_ID: WRONG_SYMBOLS
Followup: MachineOwner
kd> kb
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be
wrong.
804717b8 85750d98 85750d9c 00000000 ffdff120 nt!Kei386EoiHelper+0x2ae4
85750d98 d522426a 00000020 00000000 00000000 0x85750d98
e100080f 14000000 02000100 00010100 00000000 0xd522426a
00022000 3f3f3f3f 3f3f3f3f 3f3f3f3f 3f3f3f3f 0x14000000
3f3f3f3f 00000000 00000000 00000000 00000000 0x3f3f3f3f
kd> ln f714a684
*** ERROR: Symbol file could not be found. Defaulted to export symbols for
tcpip.sys -
(f71452c8) tcpip!tcpxsum+0x53bc | (f715ee00) tcpip!IPInjectPkt