eFilewatcher: Fehler beim Beenden von Enigma2

  • Ich habe mir einen eFilewatch in ein Plugin eingebaut und überwache das Verzeichnis /tmp. Nun führt das aber zu Problemen beim Beenden von enigma2:

    Code
    1. Jul 13 18:02:35 dm900 enigma2[598]: [eFileMonitor] File Watcher stopped
    2. Jul 13 18:02:35 dm900 enigma2[598]: c++ exception (std::bad_alloc)
    3. Jul 13 18:02:35 dm900 enigma2[598]: 0xb13a9030(sp=0xbeec0ee0)


    Es werden auch noch ganz viele eFileEvent ausgelöst, obwohl der eFilewatch bereits beendet ist.


    Der Fehler ist weg, wenn ich die Überwachung auf /tmp/ ändere. Aber dann kriege ich keine Events mehr...könnt ihr euch das mal anschauen? Stand ist 4.3.2r5.


    Könnt ihr euch das mal anschauen?

    Gruss
    Dre


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

  • Hmm solange bis da ggf. jemand geschaut hat...


    Hast Du mal versucht den Filewatch beim e2 runterfahren zu löschen? Also es gibt ja den PluginDescriptor der auch beim beenden aufgerufen wird.



    also da wo jetzt das cec.poweroff gemacht wird könntest du quasi den filewatch auf NULL setzen... und die callbacks ggf vorher alle nullen...


    cu

  • None hatte ich schon versucht. NULL noch nicht. Das kann ich mal noch machen. Also ich mache schon ein stopWatching() beim Herunterfahren. Ich mach das bei reason == 1.


    Callback setze ich auf None.

    Gruss
    Dre


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

  • Jep, den setze ich bereits auf None. Ich vermute, dass der eFileMonitor nicht beendet wird. Aber das habe ich ja nicht unter Kontrolle, da ihr das im Core macht.

    Gruss
    Dre


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

  • Also ich hab jetzt nochmal ein bisschen weiter geforscht.


    Nehmen wir an, ich mache einen eFileWatch auf /tmp/updates.txt, dann kann ich problemlos einen Reboot machen. Nichts hängt. Allerdings wird der eFileWatch nur erstellt, wenn die Datei updates.txt bereits vorhanden ist. Sonst gibt es: [eFileWatch] ERROR watching /tmp/updates.txt. Warum muss das File bereits vorhanden sein? Theoretisch kann ich ja auch einen FileWatch auf eFileEvent.CREATE machen.


    Wird das eFileEvent ausgelöst, und ich mache event.getFullPath(), dann kriege ich /tmp/updates.txt/ zurück. D.h. ich muss immer ein [:-1] machen. Dasselbe passiert übrigens, wenn ich den eFileWatch auf /tmp mache. Dann kriege ich auch ein /tmp//updates.txt zurück. Somit wird der FileWatch also immer um einen Forward Slash ergänzt.

    Gruss
    Dre


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