www.mikrocontroller.net

Forum: PC-Programmierung Fremdtreiberabsturz


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du hast windows 95 laufen, oder?

Autor: Gast (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fehler kann alles Mögliche sein.

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

Autor: zwieblum (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: zwieblum (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.