LINE 147 descriptor not found in descriptor cache

  • FATAL error: 147 descriptor not found in descriptor cache ...:


    Diese Meldung bekam ich gestern erstmals zu sehen. Nach dem betaetigen irgendeiner Taste wird die Box neu gestartet. Nur leider bleibt das Problem bestehen, die box wird unbenutzbar!


    Es handelt sich um Zeile 147 in epgcache.cpp.


    Also habe ich den epgcache manuell von der Platte geloescht.
    Danach geht alles wieder bestens, aber ohne Netzwerk und PC waere die Sache sehr schwer geworden.


    Zunaechst sollte die Fehlermeldung meiner Meinung nach das Wort "epgcache" enthalten. Und zweitens sollte der Cache vor dem reboot automatisch geloescht werden, wenn dieser Fehler (aus welchem Grund auch immer) aufgetreten ist.

  • der fehler tritt in den gespeicherten daten (epg.dat) auf und ist nicht in der epgcache.cpp zu finden.


    der eFatal wird beim aufruf der funktion const eit_event_struct* eventData::get() const oder eventData::~eventData() (also dem destructor) geschmissen.


    der fehler dürfte aber wohl eher mit fehlerhaften daten zu tun haben.


    vielleicht solltest du mal noch deine image-version angeben.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Zitat

    Originally posted by dre
    der fehler tritt in den gespeicherten daten (epg.dat) auf und ist nicht in der epgcache.cpp zu finden.


    Das kann schon sein, ich habe mir das noch nicht genauer angeschaut.
    Ich habe leider die md5 Pruefsumme des epg.dat nicht ueberprueft, sondern die Datei gleich geloescht. Beim naechsten Mal werde ich sie aufheben.


    Zitat


    der eFatal wird beim aufruf der funktion const eit_event_struct* eventData::get() const oder eventData::~eventData() (also dem destructor) geschmissen.


    der fehler dürfte aber wohl eher mit fehlerhaften daten zu tun haben.


    Auch das mag durchaus sein. Da aber die Daten doch von aussen kommen sollte man sich keinesfalls auf irgendwelche Konsistenz verlassen (siehe letzten Oktober ;)).


    Gerade bemerke ich, dass der md5-Check in epgcache.cpp ungeeignet ist, um etwaige Plattenfehler auszuschliessen, da das md5 erst durch ruecklesen der Datei bestimmt wird. Angenommen, es tritt beim Schreiben ein Fehler auf, die Datei kann aber ohne I/O error wieder gelesen werden, dann stimmt die md5 wunderbar, es kommen aber trotzdem fehlerhafte Daten an...


    Ich bleibe dabei: wenn dieser fatale Fehler auftritt, sollte die epg.dat auf jeden Fall prophylaktisch geloescht werden. Sonst wird die Box ohne Netzwerkzugriff unbenutzbar.


    Zitat

    vielleicht solltest du mal noch deine image-version angeben.


    CVS, Stand von Ende Dezember

  • die frage ist mehr: was löste bei dir den fehler aus? löschen kann nicht die lösung sein. man sollte schon versuchen zu eruieren, was den fehler auslöst.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Jetzt endlich weiss ich, was den Fehler ausloest. Das Problem ist leicht reproduzierbar, wenn man die Festplatte mit einer Aufnahme vollkommen fuellt. Sodann kann die epg.dat nur noch erfolgreich geschrieben werden, wenn die Groesse der epg.dat abnimmt. Ist die epg.dat beim Auffuellen der Platte zufaellig schon relativ klein, dann schlaegt das schreiben der aktualisierten epg.dat spaeter fehl (es wird zu wenig geschrieben). Aus den von mir bereits erlaeuterten Gruenden wird die .md5 Pruefsumme trotzdem "valide" erstellt und beim naechsten Start kommt der fatale Fehler.


    Es gibt einen kruden Test im Quellcode, ob noch genuegend Platz auf der Platte ist. Dieser funktioniert offensichtlich nicht und das kann ich leider nicht erklaeren. Aber ich wuerde trotzdem dafuer plaedieren, den angehaengten patch anzuwenden damit das Szenario wie oben beschrieben nicht passieren kann.

  • Es gibt einen kruden Test im Quellcode, ob noch genuegend Platz auf der Platte ist. Dieser funktioniert offensichtlich nicht und das kann ich leider nicht erklaeren.



    ich habe den Patch auf der dbox2 angewandt, zumindest sind die lästigen reboots jetzt weg, die Funktionlität kann ich aber nicht prüfen da ich keine HD in meiner dbox2 habe, im Code ist die Abfrage bei weniger als 50 MB die Datei gar nicht anzulegen, im /tmp (RAM) geht schonmal gar nicht (etwa 10 MB frei), habe es dann versucht über nfs, da habe ich 80 GB frei, die Datei wird trotzdem nicht angelegt, bin da überfragt, der Patch bleibt aber bei mir, da ich keine reboots mehr habe fals man die Option in EPG Settings aktiviert




    mrvica




    edit: sorry, die Datei epg.dat wurde doch auf dem nfs Laufwerk angelegt, zwar nicht gleich, deswegen konnte ich sie nicht gleich erkennen, auch die Datei epg.dat.md5 war da, könnte dann doch alles in Ordnung sein, würde sagen, ins CVS einfliessen lassen

    Einmal editiert, zuletzt von mr_vica ()