[rpihddevice] OSD mit GPU-Unterstützung und Pixmap-Support

  • Kannst du etwas konkreter werden? Wann genau passiert der Absturz und mit welchem Skin? Und ohne Logs bzw. Backtrace läuft das alles auf heiteres Rätselraten raus…


    Also bei blackhole läuft's etwas stabiler, bei nopacity kann ich den Absturz ziemlich "zuverlässig" produzieren, wenn ich die Programmliste aufrufe und darin blättere (d.h. mehrere Kanallogos gleichzeitig angezeigt werden).

    Hier mal ein gdb-log (weiß nicht, ob das ausreicht):


    Wie schon geschrieben, nach einem Absturz ist der GPU-Speicher vom rpihddevice nicht freigegeben


    Der freie Speicher wird nach jedem Absturz weniger - aber irgendwann dann doch wieder mehr (und VDR läuft wieder)...

    Könnte man da ein Tool schreiben, was generell allozierten Speicher von bspw. rpihddevice in der GPU frei gibt, oder kommt man da nach dem Beenden des VDR nicht mehr dran? Das wäre viel angenehmer als nach einem Absturz booten zu müssen. Man könnte das dann sogar im Start-Skript des vdr zur Sicherheit hinter den VDR-Aufruf schreiben. Damit wäre beim Beenden des VDR sichergestellt, dass die GPU den Speicher wieder frei hat.


    /opt/vc/bin/vcdbg reloc

    liefert da schon was - genauer gesagt fast ausschließlich (Open)VG-Einträge - leider nur fast, sonst könnte vielleicht beim Start einfach der komplette GPU-Speicher gelöscht werden?

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Hmm... Manchmal ist die Lösung vielleicht zu einfach.

    Nachdem der Crash wohl im Zusammenhang mit pixmapcontainer.c aufgetreten ist habe ich erst mal bemerkt, dass das aus dem skindesigner-Plugin stammt und mal die aktuelle Version gezogen. Siehe da: bisher sieht's gut aus!

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Habe gerade einen Fehler vom Freitag korrigiert und eingecheckt . Ich vergass, dem OVG-Thread beim Kreieren von Pixmaps zu signalisieren, dass er mit dem Abarbeiten der Kommando-Queue beginnen soll. Dadurch konnte es beim Start auf einem Raspberry Pi 1 schonmal zu einem Timeout kommen, was zur Folge hatte, dass die Default-Pixmap NULL war und selbst die mitgelieferten Skin crashten. Ausserdem fühlte sich die Bedienung auch recht träge an.

    Sollte nun wieder flutschen wie zuvor… ;)

    Gruss
    Thomas

  • Hallo,

    Ich wollte mir einen VDR zum Mitnehmen ins Wohnmobil bauen und da war der Pi mit dem VDR und dem rpihddevice Plugin (vielen Dank dafür) genau das Richtige.
    Den Pi2 hab ich laut Wiki installiert und alles lief nach Plan.

    Ich musste jedoch nach einer Weile feststellen, dass öfters nach mehrmaligem hin- und herspringen im OSD (LCARS) der VDR plötzlich ausstieg. Es hilft nur noch ein Reboot.

    Lirc ist noch nicht in Betrieb, sodass ich noch die Tastatur benutze.
    Ich schaue auch nur recording.
    Die 2.5"HDD ist an einem extern gespeisten USB-Hub angeschlossen.
    Der Pi wird mit einem 2A Netzteil gespeist.
    Den DVB-T Stick habe ich zur Fehlereingrenzung rausgezogen.

    Code
    root@raspberrypi:~# /usr/local/bin/runvdr 
    /usr/local/bin/runvdr: line 73: 2387 Segmentation fault /usr/local/bin/vdr -w 60 -u pi -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh -P rpihddevice < /dev/tty9 
    Tue Mar 17 20:50:18 CET 2015 reloading DVB driver 
    Tue Mar 17 20:50:28 CET 2015 restarting VDR 
    /usr/local/bin/runvdr: line 73: 2417 Segmentation fault /usr/local/bin/vdr -w 60 -u pi -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh -P rpihddevice < /dev/tty9 
    Tue Mar 17 20:50:29 CET 2015 reloading DVB driver 
    Tue Mar 17 20:50:39 CET 2015 restarting VDR 
    /usr/local/bin/runvdr: line 73: 2443 Segmentation fault /usr/local/bin/vdr -w 60 -u pi -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh -P rpihddevice < /dev/tty9 
    Tue Mar 17 20:50:39 CET 2015 reloading DVB driver

    syslog:

    Firmware hab ich geupdated:

    Code
    uname -a 
    Linux raspberrypi 3.18.9-v7+ #768 SMP PREEMPT Sun Mar 15 19:41:56 GMT 2015 armv7l GNU/Linux

    Was kann denn da falsch laufen ?

    Danke im voraus für gegliche Hilfe.

    JLM

    VDR-neu: yaVDR0.6.0, softhddevice, Silverstone LC13, BQ SU7-350, MSI H81-P33, MSI Geforce GT730 2GB LP, Celeron G1840, 4GB Ram, SSD-30GB, HDD 2TB, DD Cine C2T2 v7+DuoFlex, SkyStar2, Atric IR-WakeupUSB eco, HomeBrew mit TSOP31236, Harmony 650
    VDR-alt: Asus A8V, Athlon64 3200+, 512MB Ram, 160GB+500GB Sata, Kernel 2.6.18, c't VDR6.2, Vdr1.6.
    DVB: 1x Hauppauge WinTV Nexus DVB-S Rev 2.2 Model-564, 1x SkyStart2, 2x Terratec Cinergy 1200 DVB-C, 1x Hauppauge WinTV PVR150 
    VDR-Mobil: Pi2 mit rpihddevice, Nova TD, 1TB 2,5"HDD.

    Einmal editiert, zuletzt von jlm1jlm (22. März 2015 um 12:39)

  • Ich musste jedoch nach einer Weile feststellen, dass öfters nach mehrmaligem hin- und herspringen im OSD (LCARS) der VDR plötzlich ausstieg. Es hilft nur noch ein Reboot.

    Hast du die Möglichkeit, einen core dump zu erstellen? Oder kannst du das Problem forcieren? Würde mich sehr interessieren! Aktuell kämpfe ich mit dem Problem, dass während eines Zap-Stresstests (zufälliges Zappen alle 1..5s) das Plugin nach etwa 2h keine Pakete mehr akzeptiert, aber crashen tut da eigentlich nichts.

    Allerdings ist es nach einem Absturz meistens erforderlich, das Raspi komplett neu zu starten, da das Plugin keine Gelegenheit mehr hatte, die allozierten Ressourcen im GPU-RAM freizugeben und zu wenig Speicher frei ist (so wie bei deinem Log). Dann schlägt auch das Kreieren der Default-Pixmap fehl und LCARS stürzt ab.

    Gruss
    Thomas

  • Würde mich sehr interessieren! Aktuell kämpfe ich mit dem Problem, dass während eines Zap-Stresstests (zufälliges Zappen alle 1..5s) das Plugin nach etwa 2h keine Pakete mehr akzeptiert, aber crashen tut da eigentlich nichts.


    Ist das ein neues Problem oder schon länger? Seit dem letzten Update (nicht nur rpihddevice) habe ich öfter freezes.

    SAT Hardware: Gibertini SE75 | DuraSat Dur-Line UK-24 | DD OctopusNET V2 Rack (Firmware 1.1.6) mit MaxS8
    Server: Asus M5A78L-M/USB3 | Sempron 145@2Cores | 8GB ECC RAM | PicoPSU | Debian Stretch 64Bit | VDR 2.4.5 mit SAT>IP, epgsearch, live, markad
    Clients: RaspberryPI 2/3 | Yocto Poky Linux (Openembedded) 3.2+git | Linux Kernel 5.4.72 | VDR 2.4.5 mit SAT>IP, RpiHDDevice, SkinDesigner, Remote, Extrecmenu, Femon, Mlist

    R.I.P: Gigaset M740 mit VDR von open7x0.org

  • Ist das ein neues Problem oder schon länger? Seit dem letzten Update (nicht nur rpihddevice) habe ich öfter freezes.


    Das untersuche ich gerade - bei der Version 0.0.11 vom 21. Januar besteht das Problem jedenfalls auch schon. Selber habe ich sowas weder im Produktiveinsatz noch bei den Tests mit dem Entwicklungssystem beobachtet. Klaus hat mich auf den Fehler aufmerksam gemacht, und mit deinem zap-Script kann ich den Fehler aber auch bei meinen Systemen reproduzieren.

    Was war denn deine vorherige Version?

    Gruss
    Thomas

  • Was war denn deine vorherige Version?


    a730cf32754a7fda6286ba8b1ff6ccaa3124ef4e vom 06.03.

    Aber wie schon geschrieben, das kann auch andere Gründe haben, da ich noch mehr aktualisiert habe. Ich werde jetzt erst mal ein downgrade auf die 06.03. Version machen.

    SAT Hardware: Gibertini SE75 | DuraSat Dur-Line UK-24 | DD OctopusNET V2 Rack (Firmware 1.1.6) mit MaxS8
    Server: Asus M5A78L-M/USB3 | Sempron 145@2Cores | 8GB ECC RAM | PicoPSU | Debian Stretch 64Bit | VDR 2.4.5 mit SAT>IP, epgsearch, live, markad
    Clients: RaspberryPI 2/3 | Yocto Poky Linux (Openembedded) 3.2+git | Linux Kernel 5.4.72 | VDR 2.4.5 mit SAT>IP, RpiHDDevice, SkinDesigner, Remote, Extrecmenu, Femon, Mlist

    R.I.P: Gigaset M740 mit VDR von open7x0.org

  • Just my 2 cents:
    - my RPI Model A (256MB RAM, GPU:128MB) running the latest kernel, vdr and rpihddevice with DISABLED osd acceleration is rock solid using skinenigmang (and it's surprisngly fast and responsive).
    - my RPI Model B (512MB RAM, GPU: 256MB) running the same software but with ENABLED osd acceleration - i have freezes now and then, mainly while zapping and/or navigating through osd menu. It even happens with simple skins like st-tng or enigmang, with skindesigner it happens more often. When it freezes, i can restart vdr from command line, but in most cases it doesn't help, i need to reboot RPI. And another strange thing is, that if i disable the osd acceleration on B, it's moving slower than the A, but it is stable.

    Software versions:

    Code
    pi@pi01 ~ $ uname -a
    Linux pi01 3.18.9+ #768 PREEMPT Sun Mar 15 18:59:03 GMT 2015 armv6l GNU/Linux
    pi@pi01 ~ $ sudo  /opt/vc/bin/vcgencmd version
    Mar 16 2015 19:38:52
    Copyright (c) 2012 Broadcom
    version 51ab816b505d1b745130562908d866915c836056 (clean) (release)
    
    
    ifuley@server:~> telnet 192.168.12.24 6419
    220 pi01 SVDRP VideoDiskRecorder 2.2.0; Thu Mar 19 10:46:11 2015; UTF-8

    Server: Raspberry PI CM4 with DVB-S2 adapter, 6x Inverto quad LNB + 3x DVB-C USB.
    3 clients RPi 3 model B + rpihddevice
    VDR user since: 2005-11-27 (#1199)

  • Hast du die Möglichkeit, einen core dump zu erstellen?

    Ich habe mal mit "ulimit -c 30000" versucht ein core dump beim crash zu bekommen, kann aber keine core datei finden.

    "ulimit -c 30000" in /etc/profile + reboot hat auch nichts gebracht obwohl dann "ulimit -c" 30000 zurückgibt.

    kannst du das Problem forcieren?

    Ja, definitiv. Mehrmaliges Drücken der M-Taste und schon crashed er.

    Edit: Mit ausgeschalteter OSD Beschleunigung kann ich die M-Taste unendlich oft drücken, ohne crash. Dies überdeckt sich mit JV16Bar's Aussage.

    VDR-neu: yaVDR0.6.0, softhddevice, Silverstone LC13, BQ SU7-350, MSI H81-P33, MSI Geforce GT730 2GB LP, Celeron G1840, 4GB Ram, SSD-30GB, HDD 2TB, DD Cine C2T2 v7+DuoFlex, SkyStar2, Atric IR-WakeupUSB eco, HomeBrew mit TSOP31236, Harmony 650
    VDR-alt: Asus A8V, Athlon64 3200+, 512MB Ram, 160GB+500GB Sata, Kernel 2.6.18, c't VDR6.2, Vdr1.6.
    DVB: 1x Hauppauge WinTV Nexus DVB-S Rev 2.2 Model-564, 1x SkyStart2, 2x Terratec Cinergy 1200 DVB-C, 1x Hauppauge WinTV PVR150 
    VDR-Mobil: Pi2 mit rpihddevice, Nova TD, 1TB 2,5"HDD.

    Einmal editiert, zuletzt von jlm1jlm (19. März 2015 um 19:58)

  • i have freezes now and then, mainly while zapping and/or navigating through osd menu. It even happens with simple skins like st-tng or enigmang, with skindesigner it happens more often.

    The zapping issue I'm currently analysing is definitely not OSD related - I disabled the OSD by commenting out the creation of the OSD-Provider, so there's not even the OpenVG thread running, but the freezes are still there.

    So it would be interesting to have some logs when you observe this behaviour.

    And another strange thing is, that if i disable the osd acceleration on B, it's moving slower than the A, but it is stable.

    That's strange - are you doing some overclocking?

    Regards,
    Thomas

  • Ich habe jetzt mit skindesigner gerade im 2Hz-Takt bestimmt 100 Mal das Menü aufgerufen und wieder geschlossen, und bei mir crasht nichts...


    Siehe hier, das war ein skindesigner-Problem das im git bereits gefixt ist. Mit älterem skindesigner-Stand einfach die devices-section aus dem skin entfernen.

    <edit>Sehe grade, dass das Problem bei jlm1jlm mit lcars auftritt, muss dann wohl eine andere Ursache haben, sorry for bothering :-)) </edit>

    Grüße, Peter

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

    Einmal editiert, zuletzt von lostinspc (20. März 2015 um 07:52)

  • That's strange - are you doing some overclocking?


    No, no overclocking at all, both running at stock 700MHz.
    My rev. B worked really well for couple of months, this annoying instability and slowness appeared for about a month ago. I always updated everything to the latest version. Anyway, the original installation on that rpi is pretty old, and I did lot of things, testing plugins, patches, etc, so maybe i should just take a new blank sd card, and reinstall evrything.
    This weekend I'm going to start a new project, to replace my main vdr-client with a new rpi 2B. I will report, how it works in the following days.
    (If anybody interested: I will have 2 piece of Atom + ION systems with SSD to sell :) )

    Server: Raspberry PI CM4 with DVB-S2 adapter, 6x Inverto quad LNB + 3x DVB-C USB.
    3 clients RPi 3 model B + rpihddevice
    VDR user since: 2005-11-27 (#1199)

  • ... Aktuell kämpfe ich mit dem Problem, dass während eines Zap-Stresstests (zufälliges Zappen alle 1..5s) das Plugin nach etwa 2h keine Pakete mehr akzeptiert, aber crashen tut da eigentlich nichts.


    Hallo Thomas,
    könnte mein Post von hier ein ähnliches Problem sein?
    Kommt aber sehr selten vor....

    Hard- + Software Konfiguration:

    Matrix-Case: Matrix-ARM-Board + FF HD 6400 + Unicable

    Debian-Buster - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad


    RaspberryPi3b+
    raspbian - vdr-2.5.6 + device.patch

    Plugins: rpihddevice - skinnopacity - osdteletext - epgsearch - markad

    Tuner: USB DVBSky S960 DVB-S2 Tuner

    Am basteln:

    Pine H64 Modell B + Sundtek USB Dual DVB-S2 @Unicable

    RasberryOS - vdr-2.5.6 - Plugins: softhddevice-drm (rella) - skinnopacity - osdteletext - epgsearch

    ——

    RockPro64 Board mit softhddevice-drm mit DD Max-S8 (8Tuner) über Unicable auf armbian - vdr-2.5.6

    Plugins: softhddevice-drm (zillerbaer) - skinnopacity - epgsearch - osdteletext

    ————————————

    Am basteln:

    Compute Module 4 on IO-Board - FF-HD-6400 über PCIe Extender + Unicable

    RasberryOS - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad

  • Hallo,

    Ich habe ein Paar weitere Tests gemacht und möchte auch ein Fehler in meinem ersten Post korrigieren nachdem ich mich mal über die verschiedenen Pi-Modelle informiert habe:
    Die geschilderten Probleme sind auf einem Pi2, nicht Pi1-B+
    Habe den Post entsprechend korrigiert.

    Da ich 2 Pi's habe, habe ich jetzt die SD-Karte mal in beiden getestet.
    Am Pi1-B gibts gar keine Crash's.
    Am Pi2-B gibts nur Crash's wenn im rpihddevice Plugin OSD Acceleration auf On ist.

    Die Ursache liegt also wahrscheinlich in der OSD Acceration in Zusammenhang mit dem Pi2.

    Das deckt sich mit Uwe's Aussage.

    Ich hoffe ich habe mit meiner falschen Information keinen irrgeführt.

    VDR-neu: yaVDR0.6.0, softhddevice, Silverstone LC13, BQ SU7-350, MSI H81-P33, MSI Geforce GT730 2GB LP, Celeron G1840, 4GB Ram, SSD-30GB, HDD 2TB, DD Cine C2T2 v7+DuoFlex, SkyStar2, Atric IR-WakeupUSB eco, HomeBrew mit TSOP31236, Harmony 650
    VDR-alt: Asus A8V, Athlon64 3200+, 512MB Ram, 160GB+500GB Sata, Kernel 2.6.18, c't VDR6.2, Vdr1.6.
    DVB: 1x Hauppauge WinTV Nexus DVB-S Rev 2.2 Model-564, 1x SkyStart2, 2x Terratec Cinergy 1200 DVB-C, 1x Hauppauge WinTV PVR150 
    VDR-Mobil: Pi2 mit rpihddevice, Nova TD, 1TB 2,5"HDD.

  • Am Pi2-B gibts nur Crash's wenn im rpihddevice Plugin OSD Acceleration auf On ist.


    Wenn es wirklich ein Crash ist, würde mich der Backtrace interessieren. Das Problem von Uwe hat mit dem OSD nichts zu tun, das ist ein Threading-Problem im OMX-Teil und kommt auch auf dem 1er-Modell vor - ich teste gerade einen entsprechenden Fix.

    Gruss
    Thomas

  • Zitat von »JV16Bar«
    And another strange thing is, that if i disable the osd acceleration on B, it's moving slower than the A, but it is stable.

    That's strange - are you doing some overclocking?

    I think, the reason for the speed difference between my rpi A and rpi B is caused by the connected displays. On my rpi A i have an old CRT television connected to the composite video output (sdtv_mode=2) while my rpi B is connected to a FullHD HDMI monitor.

    Server: Raspberry PI CM4 with DVB-S2 adapter, 6x Inverto quad LNB + 3x DVB-C USB.
    3 clients RPi 3 model B + rpihddevice
    VDR user since: 2005-11-27 (#1199)

  • I think, the reason for the speed difference between my rpi A and rpi B is caused by the connected displays. On my rpi A i have an old CRT television connected to the composite video output (sdtv_mode=2) while my rpi B is connected to a FullHD HDMI monitor.


    Well, that's pretty clear: Without GPU acceleration, the VDR has to render every single pixel and copy the resulting image to the OSD, which makes it significant slower if you use FullHD (approx. 2 MPixel) compared to SDTV (approx. 0.4 MPixel).

    On the other hand, with GPU acceleration enabled, the OSD is drawn in vectors, which is independent of the actual screen resolution. (But it might be even slower, if you draw single pixels, since every command to the OSD consumes the same amount of time - see the issue with osdteletext plugin)

    Regards,
    Thomas

Jetzt mitmachen!

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