Forum: PC-Programmierung Page Fault Fehler


von Gast (Gast)


Lesenswert?

Hallo
Habe ein kleines Problem welches ich nicht alleine lösen kann und eure 
Hilfe brauche!

Habe folgenden Code in eine Kernelmodul welcher mir ständig eine Page 
Fault (0Eh) hervorruft:
1
void freemsg(mblk_t *mp)
2
{
3
mblk_t *tmp1, *tmp2;
4
tmp1=mp;
5
while(tmp1!=NULL)
6
{  
7
tmp2=tmp1->b_cont;
8
freeb(tmp1);
9
tmp1=tmp2;
10
}
11
}

Softice zeigt mit den Stack auf die Zeile freeb(tmp1) daher müsste der 
Fehler ja in der Zeile darüber passieren! Hat vielleicht irgendwer einen

Tip!

Danke

MFG Gast

von Gast (Gast)


Lesenswert?

sorry habe mich vorher verschrieben! Hier nochmals der code formatiert
1
void freemsg(mblk_t *mp)
2
{
3
   mblk_t *tmp1, *tmp2;
4
   tmp1=mp;
5
   while(tmp1!=NULL)
6
   {
7
      tmp2=tmp1->b_cont;
8
      freeb(tmp1);
9
      tmp1=tmp2;
10
   }
11
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und was macht das hier?

>      freeb(tmp1);

von Gast (Gast)


Lesenswert?

Das freeb ruft in einer kleinen Unterfunktion den Befehl ExFreePool auf! 
Musste jetzt aber nach einer debugrunde feststellen das der Fehler 
anscheinein immer in einen anderen Befehl auftritt. Daher dürfte es kein 
deterministisches verhalten ergeben! Bin bei der Treiberprogrammierung 
noch recht neu und daher fehlt die Erfahrung bei solchen Fehlern! Fürs 
Speicher hollen habe ich den Type pagedpool genommen! Könnte das ein 
Fehler sein? Oder macht es keinen Unterschied ob ich paged oder nonpaged 
soeicher nehme?!

MFG Gast

von *.* (Gast)


Lesenswert?

> ExFreePool

Also doch NT-Windows? xD

"Kernelmodule" hat erst mal nach Linux gerochen (meint meine Glaskugel).

von Gast (Gast)


Lesenswert?

Hallo

Habe derzeit ein grosses Problem mit Mutex. Ich habe eine Funktion zum 
initialisieren, hollen, freigeben und löschen! Wenn ich zum Testen in 
der Initalisierungsfunktion das Mutex holle und wieder freigebe geht es. 
wenn ich es allerdings in den Funktionen mache geht es nicht mehr! Kann 
mir da jemand einen tip geben wo der Fehler liegen könnte!?

MFG Gast

von mr.chip (Gast)


Lesenswert?

Dir ist schon klar, was ein Page Fault ist und wann es auftritt?

http://de.wikipedia.org/wiki/Page_fault


Page Fault treten ganz normal in jedem Programm auf und müssen nicht 
bekämpft werden.

Oder habe ich irgendwas falsch verstanden? :-)

von Uhu U. (uhu)


Lesenswert?

Kommt drauf an. Wenn eine Adresse zugegriffen wird, auf die kein 
virtueller und kein physikalischer Speicher gemappt ist, dann kann der 
Pagefault-Handler mit dem Pagefault nichts anfangen und steigt mit einer 
Fehlermeldung aus.

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.