[markad] überarbeiteter Decoder

  • Auch markad hat ein Problem mit Ubuntu 22.04, genauer gesagt mit dessen ffmpeg Version.

    Wenn man --cut und --fullencode nutzt, ist die MP2 Tonspur weg. Somit:


    Die Version 3.0.22 ist auf vdr-plugin-markad verfügbar.

    Code
    1. - fix encoding of mp2 audio with ffmpeg >= 4.4
    2. - fix some possible null pointer dereference
    3. - some minor bug fixes and optimizations, see git
    VDR
  • Die Version 3.0.23 ist auf vdr-plugin-markad verfügbar. Diesmal insbesondere Fixes für die neue ffmpeg channel layout API.

    Code
    1. - some fixes for the new ffmpeg channel layout API
    2. - adjustments for vdr 2.6 error counter
    3. - declare ffmpeg 3.2.18 from Debian 9 Stretch as deprecated
    4. - some minor bug fixes and optimizations, see git
    VDR
  • Hallo,

    ich portiere gerade den vdr samt markad plugin für OpenEmbedded-Linux (aka openatv, enigma boxen).

    vdr läuft soweit aber das markad crashed mit segmentation fault.

    Vollständiger Log und weitere Dateien sind im Anhang.

    Ausgeführt auf einer Gigablue UE 4K.

    Vieleicht hat jemand eine Idee was da schief läuft:


    Code
    1. Thu Jun 16 21:50:39 [21185] ERROR: segmentation fault
    2. Thu Jun 16 21:50:39 [21185] ERROR: [bt] Execution path:
    3. Thu Jun 16 21:50:39 [21185] ERROR: [bt] markad() [0x198ac]
    4. Thu Jun 16 21:50:39 [21185] ERROR: [bt] /lib/libc.so.6(__default_sa_restorer+0) [0xb61cb8e0]
    5. Thu Jun 16 21:50:39 [21185] ERROR: [bt] markad(_ZN6cIndex3AddEiiii+0x4c) [0x359a0]
    6. Thu Jun 16 21:50:39 [21185] ERROR: [bt] markad(_ZN8cDecoder13GetNextPacketEb+0x2d4) [0x2cb58]
    7. Thu Jun 16 21:50:39 [21185] ERROR: [bt] markad(_ZN17cMarkAdStandalone12ProcessFilesEv+0x404) [0x24624]
    8. Thu Jun 16 21:50:39 [21185] ERROR: [bt] markad(main+0x1430) [0x192a8]
    9. Thu Jun 16 21:50:39 [21185] ERROR: [bt] /lib/libc.so.6(__libc_start_main+0x158) [0xb61b7d7c]

    Files

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Erster Verdacht: Da läuft auf deinem 32 Bit System eine Variable über. Ist das Problem nur bei dieser Aufnahme oder bei allen ?

    Mal ein Versuch: Bitte in /command/debug.h den Kommentar in der Zeile "// #define DEBUG_INDEX" entfernen, neu bauen und dann die markad.log nochmals posten.

    VDR
  • Anbei die neu erstellte Logdatei mit #define DEBUG_INDEX enabled.

    Files

    • markad.log.gz

      (1.22 kB, downloaded 16 times, last: )

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Erster Verdacht: Da läuft auf deinem 32 Bit System eine Variable über. Ist das Problem nur bei dieser Aufnahme oder bei allen ?

    Mal ein Versuch: Bitte in /command/debug.h den Kommentar in der Zeile "// #define DEBUG_INDEX" entfernen, neu bauen und dann die markad.log nochmals posten.

    Hab es gerade nochmal mit einer zweiten Aufnahme probiert. Abbruch an selber Stelle wieder direkt beim ersten Packet.

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Hab es gerade nochmal mit einer zweiten Aufnahme probiert. Abbruch an selber Stelle wieder direkt beim ersten Packet.

    Das macht es einfacher, wenn es ein grundsätzliches Problem ist.

    Das knallt ja schon beim Aufruf.

    Bitte nochmals mit dem Stand ein Log erzeugen. Ich habe kein 32 Bit System mehr, das wird jetzt "stochern im Nebel".

    VDR
  • Hier die relevanten Logzeilen:

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Das sieht gut aus.

    Das "stochern in Nebel geht weiter": Vielleicht liegt es am Aufruf der Funktion mit der int64 Variable, das dein Compiler nicht mag.

    Bitte nochmals mit dem aktuellen Stand aus o.g. Branch testen.

    VDR
  • Hab mal die alte markad Version 0.1.6 mit dem patch "improvements for markad for recent ffmpeg versions" portiert.

    Die läuft auf den beiden Aufnahmen mit Parameter --cDecoder einwandfrei durch.

    Teste jetzt nochmal deinen neuen Branch.

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Mit dem neuen Branch leider nach wie vor selbes Resultat.

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Hab mal die alte markad Version 0.1.6 mit dem patch "improvements for markad for recent ffmpeg versions" portiert.

    Die läuft auf den beiden Aufnahmen mit Parameter --cDecoder einwandfrei durch.

    Klar, da gab es die Index Funktion, die bei dir crashed noch nicht.



    Mit dem neuen Branch leider nach wie vor selbes Resultat.

    Was ist denn das für ein Compilier bei dir ? Bitte nochmals mit dem aktuellen Stand testen, ich sehe immer noch nicht die Codezeile, die da den Crash verursacht.

    VDR
  • Compilierung erfolgt unter amd64 ubuntu-20.04 mit der cross-compile OE-Toolchain für die arm basierte Platform mit gcc.


    Hier der neue Log:



    "indexVector.push_back(newIndex)" crashed.

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Das ist doch in Bug im Cross Compiler ???

    Das Element wird zwar auf dem Stack allokiert, sollte aber kein Problem sein, da push_back eh das Element in den Heap kopiert. Mein Verdacht ist nun, dein Cross Compiler verhält sich hier anders.

    Teste bitte mal nochmals mit dem aktuellen Git Stand. Vorsicht: Das ist nur mal ein Quick and Diry Test und hat sicher noch einen Memory Leak drin.

    VDR
  • Mit dem neusten Git Stand selbes Ergebnis.

    Ich denke das Problem ist weder in der class vector noch im Compiler zu suchen.

    Beides sind zu fundamentale Funktionen.

    Sieht für mich eher danach aus, das der heap vorher corrupted wird und es nur den vector bzw. die recordingIndex reference trifft.

    Gibt es kein Analysetool mit dem man solche Fehler sucht?

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Ich habe mal den log zum build des markad angehängt.

    Dort meldet der gcc zum source index.cpp schon eine warning bezüglich vector.

    Vieleicht hilft das weiter?

    Files

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Vieleicht hilft das weiter?

    Ja, ich denke schon. Ich bekomme in meiner Build Umgebung keine Warning.


    Dort meldet der gcc zum source index.cpp schon eine warning bezüglich vector.

    Nein, die Warning kommt nicht aus meiner Source, sondern aus einer C++ Standard Lib, die ich include. Hier scheinen deine Libs und dein Compiler nicht zusammen zu passen. Kannst du mal mit einem älterem Compiler oder mit neueren C++ Libs testen ?

    So tief bin ich da auch nicht drin. Hat jemand eine Idee, wo man hier noch ansetzen könnte ?

    VDR
  • Puh da jetzt die Toolchain bezüglich gcc oder libs zu ändern feht mir auch das know how.

    Ob die warnings wirklich mit unserem crash in Bezug stehen ist ja auch nicht klar.

    Gibts denn keine Tools die wir hier bezüglich detection of heap corruption an den start bringen können?

    Der Fehler wird nicht im gcc oder class vector stecken. Viel zu fundamental. Un dein Code ist hier auch sauber programmiert.

    Da geht vorher was in die Hose.

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.6.1
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.6.1+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • Kannst du mal direkt auf dem Zielsystem zu kompilieren, vielleicht ändert das was.

    Die Funktion ist eine Basisfunktion und wird sicher von jedem genutzt und keiner bekommt hier einen Crash. Da muss bei dir was besonderes sein, was das Problem verursacht.

    Da geht vorher was in die Hose.

    Viel vorher gibt es nicht, das crashed ja ziemlich am Anfang.

    VDR
  • Bitte teste mal diesen Code. Da allokiere ich den Speicher für das neue Element im Vektor vor dem push_back. Mal sehen, ob das was ändert. Falls es neue Compiler Warnings bei dir gibt, bitte die auch posten.

    VDR