DVD-Plugin Absturz mit VDR >= Version 1.7.8

  • Seit ich VDR in der o.a. Version installiert habe, läuft das DVD-Plugin nicht mehr. Die DVD startet, jedoch spätestens im Menü kommt es zum Segfault.

    Code
    dvd-plugin[20115]: segfault at a656a000 ip b7d42377 sp a756af58 error 6 in libc-2.10.1.so[b7ccb000+159000]


    Das DVD-Plugin ist die aktuelle CVS-Version.
    Unter VDR-1.7.7 läuft es noch tadellos.

    Dr. Brömme grübelt:
    Acht Wochen, nachdem man ihm beim Kölner Straßenkarneval einen Gratiskorn angeboten hatte,
    dämmert ihm langsam, dass er einem hinterlistigen Alaafisten aufgesessen ist.

  • gleiches problem bei mir
    ich bekomme ein
    Sep 20 13:45:07 (none) vdr: [4104] ERROR: invalid bitmap parameters (-60, 33)!
    Sep 20 13:45:08 (none) kernel: [ 5331.335939] vdr[4087]: segfault at aa329fc ip b7c1863b sp ae0ff2ec error 6 in libc-2.3.6.so[b7bb4000+111000]


    schon jemand eine Lösung gefunden ?

  • Das Problem ist wohl bekannt und hängt mit den Änderungen an der SPU-Behandlung wegen der in neueren VDR-Entwicklerversionen eingeführten dynamischen OSD-Größe zusammen.


    Als Workaround habe ich die Änderungen an den dvbspu-Dateien, die mit vdr-1.7.8 eingeführt wurden, wieder rückgängig gemacht. Da ich meinen Rechner eh mit einer FF-Karte betreibe, denke ich mir, dass dieser Eingriff nicht schadet, da hier eh keine größeren OSDs als 720x576 möglich sind. Allen anderen würde ich den Patch eher nicht empfehlen und ihnen raten, den Medienplayer von Xine/Xinleliboutput zum DVD-Abspielen zu nutzen.


    Bitte den angehängten Patch mit

    Code
    cat vdr-1.7.9-dvbspu.diff | patch -p1 -R

    auf vdr-1.7.9 anwenden und dann läufts wieder mit dem DVD-Plugin.


    Da ich überhaupt keine Ahnung vom Programmieren habe, sei hier ganz besonders eindringlich darauf hingewisen, dass das Patchen auf eigene Gefahr durchgeführt wird. Beschwert Euch also nicht bei mir, wenn Eure DVD platzt o.ä. :D

  • Man kann auch mit dem angehängten Patch für OSD-Größen, die über 576x720 hinausgehen, das neue Verhalten lassen und nur kleinere Bitmaps verhindern

  • Optimal wäre, wenn man das im DVD-Plugin fixen könnte. Ein Segfault sollte sich eigentlich eingrenzen lassen.


    Schade, dass das DVD-Plugin, wie so manch anderes Plugin, ungepflegt ist... Das scheint im VDR-Bereich wohl leider nicht selten der Fall zu sein...

  • @Mreimer: Ich glaube nicht, dass es der Weisheit letzter Schluß wäre, auf der DVD vorliegende Fenstergrößen im DVD-Plugin während der Wiedergabe zu beschneiden. Dann würde nur ein Teil angezeigt werden können. Ich möchte die DVD so sehen, wie sie erstellt wurde, das hat ja vor 1.7.8 auch funktioniert.

    vdr-2.6.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

  • Stimmt. Was mich jetzt aber doch interessiert: Geht es eventuell ganz ohne Patch, wenn man im Menü nur die richtigen Einstellungen trifft? Für mich sieht die Änderung im VDR 1.7.8 so aus, als ob hier irgendeine Einstellung im OSD als Referenz herangenommen wird...


    Perfekt ist die Änderung in 1.7.8 aber wohl in der Tat nicht. Hier sollte nachgearbeitet werden. Soweit ich weiß, ist kls im Moment aber reichlich beschäftigt. Mal etwas warten, dann sollte man ihn mal auf deinen Patch hinweisen. Sollte im VDR selbst nichts mehr geändert werden, dann muss aber wohl doch im DVD-Plugin geändert werden. Zumindest der Segfault muss dann "irgendwie" raus.

  • Zitat

    Originally posted by TomJoad
    Man kann auch mit dem angehängten Patch für OSD-Größen, die über 576x720 hinausgehen, das neue Verhalten lassen und nur kleinere Bitmaps verhindern


    Das mit


    size.x2 = min(size.x2, Setup.OSDWidth);
    size.y2 = min(size.y2, Setup.OSDHeight);


    war natürlich Quatsch, denn das ist ja die OSD-Größe, die der Benutzer sich in Prozent der "rohen" Größe eingestellt hat. Hier aber wieder die festen Größen 720 und 576 ins Spiel zu bringen gefällt mir irgendwie auch nicht so recht.


    Die SPU-Bitmaps sind ja wohl immer auf (0, 0) und die maximale OSD-Breite bezogen, also würde ich meinen, das es lediglich dieser Änderung bedürfte, um das zu fixen:



    Kann das bitte mal jemand, der das DVD-Plugin verwendet, testen?


    Klaus

  • Ich habe das gerademal mit einer DVD getraced. Der Fix von Klaus funktioniert nicht, weil die Bitmaps nicht immer auf (0,0) anfangen und dann Speicher überschrieben wird.

    Die Bitmap wird in der Größe 411120 angelegt, aber mit einem Offset von 1440 beschrieben. Es ist also dieser Offset zu berücksichtigen oder statt Width() und Height() x2(+1) und y2(+1) für die Größe zu nehmen, wenn nicht gleich wie früher die komplette Größe von 720x576 genommen wird.

    vdr-2.6.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

    Einmal editiert, zuletzt von TomJoad ()

  • Zitat

    Originally posted by TomJoad
    Ich habe das gerademal mit einer DVD getraced. Der Fix von Klaus funktioniert nicht, weil die Bitmaps nicht immer auf (0,0) anfangen und dann Speicher überschrieben wird.

    Die Bitmap wird in der Größe 411120 angelegt, aber mit einem Offset von 1440 beschrieben. Es ist also dieser Offset zu berücksichtigen oder statt Width() und Height() x2(+1) und y2(+1) für die Größe zu nehmen, wenn nicht gleich wie früher die komplette Größe von 720x576 genommen wird.


    So wie's aussieht hat wohl cDvbSpuBitmap früher immer Speicher für eine komplette Bitmap der Größe 720x576 angefordert, auch wenn 'size' kleiner war - das habe ich wohl übersehen.


    Der ganze dvbspu-Code wird vom Core-VDR sowieso nicht verwendet. Ich schlage daher vor, daß jemand, der sich dafür zuständig fühlt, diesen (ausgehend vom Stand in VDR-Version 1.7.8 mit ggf. dem jüngsten Patch von weiter oben) so fixt, daß er ohne die festen Werte für spuXres und spuYres auskommt, und nicht mehr immer eine vollständige Bitmap anfordert, sondern nur den Speicher, der auch tatsächlich gebraucht wird.


    Ich hätte auch kein Problem damit, diesen Code komplett aus VDR zu entfernen und ins DVD-Plugin zu verlagern, weiß aber nicht, ob der nicht auch von anderen Plugins verwendet wird...


    Klaus

  • Die einfachste Lösung, weil ich auch nicht weiß, ob der Offset einen funktionalen oder ästhetischen Zweck erfüllt, besteht in folgender Abwandlung des Patches von Klaus (angewendet auf die ursprüngliche Datei:


    Damit wird für die Größe angenommen, dass x1=y1=0 sind. Vielleicht kann das mal jemand mit weiteren DVDs ausprobieren. Ich hatte noch keinen negativen Effekt

    vdr-2.6.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

  • habe gerade drei DVDs kurz angetestet - läuft einwandfrei. Besten Dank an TomJoad und kls. Allerdings ist der Patch "malformed" und ich musste die Änderungen von Hand in die Sourcen basteln.


    Was auffällig war: der Cursor im Menü ist nicht ganz an der richtigen Stelle. Kann aber gut sein, dass das mit dem 1.6er VDR auch schon so war und eine völlig andere Ursache hat.


    Grüße,
    Holger

    VDR 1-3: Zotac ZBox HD-ID42, yavdr-0.5
    VDR 4: AMD5900/Asus M3N-78, yavdr-0.5
    DVB-Empfang: Netceiver
    Storage: via NFS von separatem Fileserver

    [size=10]

    Einmal editiert, zuletzt von hsteinhaus ()

  • Wo genau ist denn jetzt der Fehler?


    Kann man das DVD-Plugin so fixen, dass es direkt mit dem Patch von kls funktioniert?


    Ohne Patches funktioniert das DVD-Plugin ohnehin nicht mehr und ein Patch mehr oder weniger macht nun wirklich keinen Unterschied mehr...

  • Zitat

    Original von hsteinhaus
    Was auffällig war: der Cursor im Menü ist nicht ganz an der richtigen Stelle. Kann aber gut sein, dass das mit dem 1.6er VDR auch schon so war und eine völlig andere Ursache hat.


    Der Cursor ist das Problem, dass dem Wunsch von Klaus doch nicht so recht entsprochen werden kann.
    Es wird z.B. im DVD-Menü eine Bitmap mit 36x33 Breite x Höhe angefordert mit einem Offset x1=93,x1=118 für den Cursor. Da der Offset praktisch beliebig sein kann, sollte die SpuBitmap immer mit mindestens 720x576 angefordert werden. Im alten Code wurden dann auch die Nutzdaten mit dem richtigen Offset reingeschrieben.
    Deshalb kann ich allen nur ans Herz legen, den ersten Patch von mir zu verwenden (dvdcrash.diff) oder den 1.7.7-Code, wie von udobroemme angeregt, wieder zu aktivieren.

    Zitat

    Original von Mreimer
    Kann man das DVD-Plugin so fixen, dass es direkt mit dem Patch von kls funktioniert?


    Nein, weil die Größen und Offsets auf der DVD hinterlegt sind und der Patch von kls keine Offsets berücksichtigt.

    vdr-2.6.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

    Einmal editiert, zuletzt von TomJoad ()

  • Ich habe meinen Patch nochmal überarbeitet, so dass immer nur ein Rechteck von (0,0) bis zum rechten unteren Endpunkt reserviert wird.
    Da die Positionierung der Menübuttons immer bezogen ist auf die Standard-DVD-Auflösung, macht es für mich aber keinen Sinn, eventuell größere OSD-Einstellungen zu berücksichtigen.
    Das würde IMHO eine Skalierung aller Menüelemente erfordern (der Film selbst ist aber auch nicht skalierbar im dvd-plugin).

  • Zitat

    Original von TomJoad
    Ich habe meinen Patch nochmal überarbeitet, so dass immer nur ein Rechteck von (0,0) bis zum rechten unteren Endpunkt reserviert wird.
    Da die Positionierung der Menübuttons immer bezogen ist auf die Standard-DVD-Auflösung, macht es für mich aber keinen Sinn, eventuell größere OSD-Einstellungen zu berücksichtigen.
    Das würde IMHO eine Skalierung aller Menüelemente erfordern (der Film selbst ist aber auch nicht skalierbar im dvd-plugin).


    Wenn ich das jetzt richtig verstanden habe, geht der Patch gegen VDR-Coding nicht gegen Coding des DVD-Plugins.
    Enthält damit der VDR nach diesem Patch nicht Coding, was auf das DVD-Plugin ausgerichtet ist. Kann es nicht andere "Verwender" geben, die mit diese Restriktion nicht zu Rande kommen (z.B. ein imaginäres BlueRay-Plugin, welches eine höhere Auflösung benötigen würde)?
    Oder verstehe ich da jetzt etwas falsch?

  • Zitat

    Original von LiamHD
    Wenn ich das jetzt richtig verstanden habe, geht der Patch gegen VDR-Coding nicht gegen Coding des DVD-Plugins.
    Enthält damit der VDR nach diesem Patch nicht Coding, was auf das DVD-Plugin ausgerichtet ist. Kann es nicht andere "Verwender" geben, die mit diese Restriktion nicht zu Rande kommen (z.B. ein imaginäres BlueRay-Plugin, welches eine höhere Auflösung benötigen würde)?
    Oder verstehe ich da jetzt etwas falsch?


    Ich habe mich mit Blue-Rays noch nicht auseinandergesetzt, aber ich vermute, dass da die Datenstrukturen und damit auch die Sub-Pictures ganz anders aussehen - und damit eigenen Code erfordern. Vielleicht weiss ja jemand im Forum mehr darüber.
    Wenn das ganze in das dvd-plugin übernommen werden soll, muss das jemand machen, der Zugriff auf das entsprechende CVS hat (lordzodiac?). Aber zunächst mal wäre es ja schön, wenn das plugin überhaupt mit vdr 1.7.x läuft.

    vdr-2.6.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

  • Zitat

    Original von TomJoad
    Ich habe meinen Patch nochmal überarbeitet, so dass immer nur ein Rechteck von (0,0) bis zum rechten unteren Endpunkt reserviert wird.
    Da die Positionierung der Menübuttons immer bezogen ist auf die Standard-DVD-Auflösung, macht es für mich aber keinen Sinn, eventuell größere OSD-Einstellungen zu berücksichtigen.
    Das würde IMHO eine Skalierung aller Menüelemente erfordern (der Film selbst ist aber auch nicht skalierbar im dvd-plugin).


    Ich habe den Patch jetzt mal ausprobiert. Die gute Nachricht: Der VDR stürtzt nicht mehr ab. Allerdings hab' ich auch eine nicht so gute ("schlecht" würde ich es jetzt nicht nennen): Ich setzte zur Zeit das xine plugin als Ausgabedevice ein, um das Bild in der nativen Panel-Auflösung meines HD-ready TFTs ausgeben zu können. Hierbei wird das Video-Bild hochskaliert und auch das normale VDR-OSD in hoher Auflösung gerendert, der Selektor im DVD-Menü bleibt aber wohl unverändert, so dass der Selektor irgendwo im Bild des Menüs angezeigt wird.
    Könnte man das noch verbessern?

  • Kann mal einer der VDR-1.7-Tester prüfen, ob dieser Patch:
    http://www.linuxtv.org/piperma…2009-November/021705.html


    das Problem löst? Hintergrund: kls hat den Patch für VDR 1.7.11 übernommen.
    http://www.linuxtv.org/piperma…2009-December/021802.html


    Wenn der Patch hilft, dann geht mit 1.7.11 das DVD-Abspielen wieder. Wenn er nicht hilft, dann müsste der hier entstandene Patch dringend in die Mailingliste, dass er eine Chance hat, in 1.7.11 zu wandern.

Jetzt mitmachen!

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