[Announce] vdr-plugin-tvscraper 1.1.10

  • Letztere Meldung kommt aber nur, wenn bei VDR --log=3 gesetzt ist.

    Ja, ist bei mir eingestellt.

    Auch "using base directory" gibr es.

    Code
    Feb 05 09:24:27 home-05.home.de vdr[4275]: [4275] tvscraper: using base directory /etc/vdr/plugins/tvscraper/


    Die Konfiguration ist in der README.md besch

    Ja, habe ich gelesen. Da steht aber nichts zu den Verzeichnissen "epg" und "recordings". Oder habe ich da was übersehen.

    Ich habe auch bisher in die "override.conf" keine Änderungen eingetragen.


    Gestern hatte ich nochmal 2 Abstürze:

    Code
    #15 0x00007fded7bb53e7 in std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)
        (this=0x7fde7b7fdb30, p=filesystem::path "/etc/vdr/plugins/tvscraper/recordings/" = {...}, options=<optimized out>, ecptr=0x0)
        at /usr/src/debug/gcc-12.2.1-4.fc37.x86_64/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/bits/new_allocator.h:90
            skip_permission_denied = false
            ec = std::error_code = {"generic": ENOENT}
            dir = {<std::filesystem::_Dir_base> = {dirp = 0x0}, path = filesystem::path "", entry = {_M_path = filesystem::path "", _M_type = std::filesystem::file_type::none}}
    #16 0x00007fdebe2529d0 in std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&)
        (this=0x7fde7b7fdb30, __p=filesystem::path "/etc/vdr/plugins/tvscraper/recordings/" = {...}) at /usr/include/c++/12/bits/fs_dir.h:387
    #17 0x00007fdebe2348ba in deleteOutdatedRecordingImages(cTVScraperDB const*) (db=0x22a5f30) at /home/vdr/DVB/Test/vdr/PLUGINS/src/tvscraper/movieOrTv.c:996

    Das scheint aber jetzt mit Deinem letzten commit auch abgefangen zu werden.


    Das ist der Inhalt vom Verzeichnis tvscraper:

    Die Frage ist jetzt, warum gibt es überhaupt den Absturz, denn beide Verzeichnisse gibt es ja. Sie sind allerdings leer.

    Und die anderen beiden Verzeichnisse "movies" und "series" sind befüllt und werden auch aktualisiert.

    Der VDR läuft bei mir unter "root".


    Grüße

    kamel5

    VDR 2.6.3: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 37 Kernel 6.1 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Im git ist noch ein Update.


    Ich rufe directory_iterator() jetzt mit dem ec Parameter auf, damit sollte es keine Dumps mehr geben.


    Ich hätte jetzt nicht gedacht, dass ein directory_iterator eine Ausnahme erzeugt, nur weil das Verzeichnis leer ist. Ist aber so. Steht auch in der Doku :( . Habe ich jetzt gelesen ...


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Ich muss das nochmal aufwärmen.


    Abstürze habe ich keine mehr, aber wahrscheinlich erst einmal nur wegen CheckDirExists().

    Eine Sache fällt mir aber noch auf. Dazu habe ich mal in der Datei "movieOrTv.c" folgende Fehlermeldung eingebaut:

    Code
    void deleteOutdatedRecordingImages(const cTVScraperDB *db) {
    // check recording. Delete if this does not exist
    if (!CheckDirExists(config.GetBaseDirRecordings().c_str() )) {
        esyslog("tvscraper, ERROR, %s not found", config.GetBaseDirRecordings().c_str());
        return;
    }
    std::error_code ec;

    und in "tools/filesystem.c":

    Logausgabe dazu:

    Das Verzeichnis ist vorhanden, siehe weiter oben, wird aber trotzdem als Fehler ausgegeben.

    Man sieht hier, das er bei dieser Prüfung:

    "if ((statfsbuf.f_type!=0x01021994) && (statfsbuf.f_type!=0x28cd3d45)) return false;"

    "false" zurück gibt.

    OK, ich nutze zwar kein externes EPG, müsste hier aber nicht die Prüfung trotzdem positiv verlaufen?

    Warum wird auf diese beiden Dateisysteme geprüft?

    Wenn man die ausschließen will, dann wäre die Abfrage allerdings falsch.


    Grüße

    kamel5

    VDR 2.6.3: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 37 Kernel 6.1 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Hallo kamel5 ,


    Vielen Dank für Deine Analyse!


    > Abstürze habe ich keine mehr, aber wahrscheinlich erst einmal nur wegen CheckDirExists().

    Glaube ich nicht. Ich rufe ja jetzt "std::filesystem::directory_iterator(config.GetBaseDirEpg(), ec)". Und laut Manual (habe ich ja jetzt gelesen :) ) gibt es damit nur noch bei out of memory Exceptions. Probiere es doch mal aus, und lösche die "CheckDirExists()." Zeilen in "movieOrTv.c".


    Aber danke für Deine Analyse, Du hast einen Fehler gefunden.

    Ich hatte CheckDirExists() einfach von Lous übernommen, und nicht weiter geprüft. Ich habe es jetzt umbenannt, in CheckDirExistsRam. Da es prüft, ob das Verzeichnis existiert, und in einem RAM Dateisystem ist.


    Dann eine neue Methode DirExists geschrieben, die einfach nur prüft, ob das Verzeichnis existiert.

    Ein Update ist im git, aber noch relativ ungetestet.


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Probiere es doch mal aus, und lösche die "CheckDirExists()." Zeilen in "movieOrTv.c".

    Ja, das hätte ich machen können, ich wollte aber wissen, warum es bei mir nicht geht. :)


    Mit dem letzten commit gibt es keine Fehlermeldungen mehr.


    Grüße

    kamel5

    VDR 2.6.3: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 37 Kernel 6.1 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!