I have a user of my drivers reporting a situation where it runs for a
while (days) but then the network stops working. This only appears to
occur for this one user, but they tell me that they are moving quite a
large amount of data so are probably not typical users. I have sent them
another update to increment a counter when indicating to NDIS and then
decrementing the counter when NDIS calls my ReturnPacket, but the only
place I can see where the leak might occur is that NDIS never returns my
packets to me.
I’ve enabled the checked version of NDIS.sys and turned on the verifier,
but nothing out of the ordinary occurs. At this time I am counting
outstanding packets between Allocate and Free, and the failure goes like
this (the first number is the number of seconds since system boot:
10033: 4 packets are outstanding
10333: 6 packets are outstanding
10633: 9 packets are outstanding
10933: 13 packets are outstanding
11233: 17 packets are outstanding
13233: 106 packets are outstanding
13275: 41 packets are outstanding
The pattern continues with gradual increases (seems to be never by 1,
always by 2-4) to outstanding packets and then a sudden drop, then a
slow increase again, until eventually it hits 1024 packets and
NdisAllocatePacket fails.
It wasn’t until I formatted the above list that I noticed that the
packets start leaking at more or less 10000 seconds after boot (booting
etc might account for 33 seconds before the first message by driver logs
which is where I start counting from), and then exactly every 300
seconds after that. I think the timing starts to drift a bit after a
while but it can’t be a coincidence can it?
Can anyone offer any suggestions as to where I could look? I only have
the one logfile so I can’t tell if starting 10000 seconds is a fluke,
but the 5 minute interval can’t be just chance.
Thanks
James