Forum: PC-Programmierung Fremdtreiberabsturz


von Gast (Gast)


Lesenswert?

Hi
Ich habe derzeit ein großes Problem mit einen selber geschriebenen 
Treiber. Der Treiber empfängt über das TDI Interface UDP Pakete von der 
Netzwerkkarte und kommuniziert auch mit einen anderen ebenfalls 
selbergeschriebenen Treiber über IRPs. Nun läuft das gesamte System 
relativ stabil aber nach einer ZEitspanne bekomme ich plötzlich einen 
BlueScreen von einen der beiden Treiber mit denen ich kommuniziere und 
als Fehler kommt immer:

READ_ADDRESS: unable to get nt!MmSpecialPoolStart
unable to get nt!MmSpecialPoolEnd
unable to get nt!MmPoolCodeStart
unable to get nt!MmPoolCodeEnd

In 9 von 10 Fällen kommt der BlueScreen von der Netzwerkkarte. Daher 
meine Frage ob jemand von auch eine Idee hat wo das Problem liegen 
könnte. Kann es sein das mein Treiber den beiden anderen den Speicher 
wegnimmt?!

MFG Gast

von zwieblum (Gast)


Lesenswert?

du hast windows 95 laufen, oder?

von Gast (Gast)


Lesenswert?

Nein der Treiber läuft auf windows server 2003. Warum kommst du auf 
win95?

von Christian R. (supachris)


Lesenswert?

Zwieblum kannst du getrost ignorieren, der stänkert immer nur gegen 
Windows.

Kann es sein, dass du diesen Kernel SpinLock, der nur ein einziges Mal 
im Kern vorhanden ist, nimmst, aber ihn nicht richtig anforderst? Wir 
hatten sowas mal, da wurde der Spinlock einfach gekrallt, obwohl ihn 
gerade andere Treiber innehatten....endete im BlueScreen, mal von der 
NIC, mal von der Maus usw. Je nachdem, wer gerade dran war.

von Sven P. (Gast)


Lesenswert?

Der Fehler kann alles Mögliche sein.

Sinnvoller wäre es, wenn du den Bluescreen beschreibst (Fehlercode und 
so weiter).

von zwieblum (Gast)


Lesenswert?

>Nein der Treiber läuft auf windows server 2003. Warum kommst du auf
>win95?
weil in derinem posting das betriebsystem fehlt, deshalb.

von Gast (Gast)


Lesenswert?

Hi

Also ich forder in meinen Treiber keinen SpinLock an. Arbeite nur mit 
events und semaphoren zum synchronisieren der einzelnen threads. Habe 
folgenden memdump:

ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' 
to set symbol path and load symbols.

MODULE_NAME: l151x86

FAULTING_MODULE: 80800000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  4729f738

READ_ADDRESS: unable to get nt!MmSpecialPoolStart
unable to get nt!MmSpecialPoolEnd
unable to get nt!MmPoolCodeStart
unable to get nt!MmPoolCodeEnd
 56734921

CURRENT_IRQL:  0

FAULTING_IP:
+152952f00b4dfe0
56734921 ??              ???

DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0xD1

LAST_CONTROL_TRANSFER:  from 56734921 to 8088c993

FAILED_INSTRUCTION_ADDRESS:
+152952f00b4dfe0
56734921 ??              ???

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be 
wrong.
8089a390 56734921 badb0d00 b805fddc 80a60456 nt!Kei386EoiHelper+0x28d3
8089a43c 8081e123 00000000 8a3318b0 83c50904 0x56734921
8089a46c b9860b41 b989fd40 00002b2a 8a3f77b8 nt!IoCancelIrp+0x149
8089a484 b9862e38 8a3318b0 00000000 00000000 tcpip!IPRcvComplete+0x5ea
8089a4d0 b986376a 8a3f77b8 83d40f94 00000000 tcpip!IPGetAddrType+0xbbd
8089a508 b986261e 89e33ca0 00d38b00 00000000 tcpip!IPGetAddrType+0x14ef
8089a52c f72251f9 89e32570 83d38b00 00000000 tcpip!IPGetAddrType+0x3a3
8089a550 f76abafd 8a3e4ab0 83d38b00 00000000 NDIS+0x201f9
8089a574 f76ae281 89f83720 8a3e4ab0 00000000 l151x86+0x4afd
8089a590 f7229466 89f83008 ffdffa40 89f83404 l151x86+0x7281
8089a5a8 80832110 89f83404 89f833f0 00000000 NDIS+0x24466
8089a600 8088de4f 00000000 0000000e 00000000 nt!ZwYieldExecution+0x248c
8089db40 00000000 8089db48 8089db48 8089db50 
nt!KiDispatchInterrupt+0x32f


STACK_COMMAND:  kb

FOLLOWUP_IP:
l151x86+4afd
f76abafd 8b4d08          mov     ecx,dword ptr [ebp+8]

SYMBOL_STACK_INDEX:  8

SYMBOL_NAME:  l151x86+4afd

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  l151x86.sys

BUCKET_ID:  WRONG_SYMBOLS

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

Aber ich gehe stark davon aus das ich den Fehler verursache weil das 
System ohne meinen Treiber normal läuft.

Gast

von zwieblum (Gast)


Lesenswert?

da steht ja eh schon dein problem:

READ_ADDRESS: unable to get nt!MmSpecialPoolStart
unable to get nt!MmSpecialPoolEnd
unable to get nt!MmPoolCodeStart
unable to get nt!MmPoolCodeEnd

im kontext deines treibers existieren diese funtionen nicht.

von Gast (Gast)


Lesenswert?

Hi

WIe genau meinst du das? Wenn es diese Funktion nicht geben sollte würde 
er doch gleich am Anfang abstürzen oder? Er arbeitet allerdings 1 bis 2 
Stunden ohne Probleme und plötzlich stürzt er ab.

Gast

von zwieblum (Gast)


Lesenswert?

nicht unbedingt. wenn am anfang die libs verfügbar sind, aber nach 
einiger zeit wieder entladen werden, weil der refcount auf 0 geht, dann 
ist nach einiger zeit der zugriff nicht mehr möglich.
aber das ist kaffeesudleserei. man bräuchte hier einen calltrace über 
die ganze laufzeit des treibers und vernünftige debuginfos.

von Gast (Gast)


Lesenswert?

Hi

Das große Problem dabei ist das der Absturz vom Treiber der 
Netzwerkkarte kommt und nicht von meinen Treiber. Hast du einen 
Vorschlag wie ich an vernünftige Debugmeldungen bzw Calltraces komme?

Gast

von zwieblum (Gast)


Lesenswert?

nein, keine idee. aufgrund kleiner unzulänglichkeiten wie dieser hab' 
ich mich ich mich samt firma von m$ getrennt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.