mikrocontroller.net

Forum: PC-Programmierung Page Fault Fehler


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
void freemsg(mblk_t *mp)
{
mblk_t *tmp1, *tmp2;
tmp1=mp;
while(tmp1!=NULL)
{  
tmp2=tmp1->b_cont;
freeb(tmp1);
tmp1=tmp2;
}
}

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry habe mich vorher verschrieben! Hier nochmals der code formatiert
void freemsg(mblk_t *mp)
{
   mblk_t *tmp1, *tmp2;
   tmp1=mp;
   while(tmp1!=NULL)
   {
      tmp2=tmp1->b_cont;
      freeb(tmp1);
      tmp1=tmp2;
   }
}

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was macht das hier?

>      freeb(tmp1);

Autor: Gast (Gast)
Datum:

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

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ExFreePool

Also doch NT-Windows? xD

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

Autor: Gast (Gast)
Datum:

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

Autor: mr.chip (Gast)
Datum:

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

Autor: Uhu Uhuhu (uhu)
Datum:

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

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.