[softhddevice] SegFault bei Sprung zu Schnittmarke (gelöst)

  • Soeben beim Abspielen einer Aufnahme und Sprung zur nächsten, von markad gesetzten, Schnittmarke, bekomme ich einen Segfault. Dieser ist für diese Aufnahme reproduzierbar (jedenfalls beim 2. gleichen Versuch). Ich werde es am Wochenende noch auf einem anderen VDR testen. Anbei jedoch das Log.


    SoftHDdevice Version: 0.5.1-GIT09d8588


    Backtrace:


    syslog:


    Ein bekannter, oder ggf. neuer Bug? Komme leider noch nicht dazu eine neue GIT-Version zu testen. Interesse an der Aufnahme?


    Gruss
    Marcus

    My VDRs:

    Einmal editiert, zuletzt von dad401 ()

  • Naja am Plugin liegt es nur, wenn NULL Pointer erlaubt sind.


    Code
    cSoftHdDevice::StillPicture (this=0x98bd868, data=0x0, length=0)


    Da ruft jemand StillPicture mit NULL Pointer auf. Das knallt dann sofort und immer.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Da ruft jemand StillPicture mit NULL Pointer auf. Das knallt dann sofort und immer.

    Da kann ja in diesem Fall nur der VDR sein, oder? Müsste man dann dort bereits NULL Pointer abfangen? - ich kann das ganze auch mal mit xine testen.


    Marcus

    My VDRs:

  • Kannst vorerst erstmal ein "if (!data) return;" in cSoftHdDevice::StillPicture machen.


    Da es bei meinen VDR nicht vorkommt, könnte es auch an einem Patch liegen.
    Bei vdr-xineliboutput sollte es auch knallen, da habe ich geguckt ob die dies abfragen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Mir kommen diese EInträge komisch vor:

    Code: index.php?page=Thread&postID=1066799#post1066799
    #0 cSoftHdDevice::StillPicture (this=0x98bd868, data=0x0, length=0) at softhddevice.cpp:1205
    #1 0x080ae2ba in cDevice::StillPicture (this=0x98bd868, Data=0xbfdfb22c "G\002", Length=0) at device.c:1400
    #2 0xb67319f3 in cSoftHdDevice::StillPicture (this=0x98bd868, data=0xbfdf62dc "G@", length=20492) at softhddevice.cpp:1209
    #3 0x080b81fb in cPlayer::DeviceStillPicture (this=0x9b31948, Index=10560, Still=true) at player.h:36


    Da ruft cPlayer:: DeviceStillPicture das cSoftHdDevice:: StillPicture auf und dort ist noch length=20492, im nächsten cDevice:: StillPicture ist Length=0, was dann im nachfolgenden cSoftHdDevice:: StillPicture crasht.

  • Was ruft denn überhaupt DeviceStillPicture auf? Die Fernbedienung im Live-Plugin?


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Mir kommen diese EInträge komisch vor:

    Code: index.php?page=Thread&postID=1066799#post1066799
    #0 cSoftHdDevice::StillPicture (this=0x98bd868, data=0x0, length=0) at softhddevice.cpp:1205
    #1 0x080ae2ba in cDevice::StillPicture (this=0x98bd868, Data=0xbfdfb22c "G\002", Length=0) at device.c:1400
    #2 0xb67319f3 in cSoftHdDevice::StillPicture (this=0x98bd868, data=0xbfdf62dc "G@", length=20492) at softhddevice.cpp:1209
    #3 0x080b81fb in cPlayer::DeviceStillPicture (this=0x9b31948, Index=10560, Still=true) at player.h:36


    Da ruft cPlayer:: DeviceStillPicture das cSoftHdDevice:: StillPicture auf und dort ist noch length=20492, im nächsten cDevice:: StillPicture ist Length=0, was dann im nachfolgenden cSoftHdDevice:: StillPicture crasht.


    Ist schon rightig, wenn ein TS (Transport Stream) Paket kommt, dann kann dies durch VDR nach PES gewandelt werden.


    Zitat


    ///< Data points either to TS (first byte is 0x47) or PES (first byte
    ///< is 0x00) data of the given Length. The default implementation
    ///< converts TS to PES and calls itself again, allowing a derived class
    ///< to display PES if it can't handle TS directly.

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Ich habe nun xine/xine-ui und xineliboutput getestet - hier passiert kein Absturz. Stattdessen wird zur Schnittmarke gesprungen, wobei das angezeigte Bild dem letzten Standbild vor dem Sprung entspricht.


    Ich vermute, dass es sich um eine von MarkAd falsch gesetzte Schnittmarke handelt (kein I-Frame?) - dennoch sollte der VDr nicht crashen. Problem wurde an einem weiteren System bestätigt.


    Marcus

    My VDRs:

  • Die haben einen eigenen Parser.


    Es scheint bei der Wandlung von TS -> PES zupassieren. Schreib es mal Klaus.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Die haben einen eigenen Parser.


    Es scheint bei der Wandlung von TS -> PES zupassieren. Schreib es mal Klaus.


    Ich hab's mal getestet und es wird tatsächlich StillPicture() mit NULL aufgerufen.
    Offensichtlich findet cDevice::StillPicture() keine brauchbaren Daten und legt daher auch keinen Puffer an.
    Anscheinend fangen das manche Devices ab, andere nicht. Da nirgens steht, daß Data == NULL sein kann, kann man einem Device, welches das nicht abfrägt, auch keinen Vorwurf machen ;)


    Folgende Änderung sollte das fixen:



    Ich schätze auch, daß das Problem von einer falsch gesetzten Schnittmarke kommt.
    Wenn man die erste Marke in der Testaufnahme anspringt, dann wird dort (mit einer TT S2-6400, bei der kein Absturz erfolgt, weil auf Data!=NULL geprüft wird) kein passendes Standbild angezeigt. Verschiebt man aber die Marke, dann werden passende Standbilder angezeigt.


    Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!