[vdr 2.4 vdr-plugin-live] crash beim Aufruf von Timer

  • Hallo,

    ich bekomme sporadisch einen Crash beim Aufruf von "Timer" in VDR Live.

    Mein System basiert auf den Quelldateien von yavdr repository experimental und läuft unter Ubuntu 18.04.

    VDR

    vdr (2.4.0/2.4.0) - The Video Disk Recorder

    conflictcheckonly (0.0.1) - Direct access to epgsearch's conflict check menu

    dynamite (0.3.0) - attach/detach devices on the fly

    epg2vdr (1.1.98-GIT) - epg2vdr plugin

    epgsearch (2.4.0) - search the EPG for repeats and more

    epgsearchonly (0.0.1) - Direct access to epgsearch's search menu

    epgtableid0 (2.4.0) - EPG handler for events with table id 0x00

    hello (2.4.0) - A friendly greeting

    live (2.3.1) - Live Interactive VDR Environment

    osddemo (2.4.0) - Demo of arbitrary OSD setup

    pictures (2.4.0) - A simple picture viewer

    quickepgsearch (0.0.1) - Quick search for broadcasts

    satip (2.4.0) - SAT>IP Devices

    skincurses (2.4.0) - A text only skin

    status (2.4.0) - Status monitor test

    svccli (2.4.0) - Service demo client

    svcsvr (2.4.0) - Service demo server

    svdrpdemo (2.4.0) - How to add SVDRP support to a plugin

    Hier der Backtrace vom Crash:

    Backtrace

    (gdb) bt full

    #0 cSchedule::DecNumTimers (this=0x6567007565640302) at epg.c:954

    No locals.

    #1 0x00005586ed87543b in cEvent::DecNumTimers (this=0x7f8e209bb3b0) at epg.c:270

    No locals.

    #2 0x00005586ed8fa923 in cTimer::~cTimer (this=0x7f8ddc0165a0, __in_chrg=<optimized out>) at timers.c:139

    No locals.

    #3 0x00007f8e2bd9edb5 in __gnu_cxx::new_allocator<std::_List_node<cTimer> >::destroy<cTimer> (this=<optimized out>, __p=<optimized out>)

    at /usr/include/c++/7/ext/new_allocator.h:140

    No locals.

    #4 std::allocator_traits<std::allocator<std::_List_node<cTimer> > >::destroy<cTimer> (__a=..., __p=<optimized out>) at /usr/include/c++/7/bits/alloc_traits.h:487

    No locals.

    #5 std::__cxx11::_List_base<cTimer, std::allocator<cTimer> >::_M_clear (this=0x7f8e2c0db010 <vdrlive::LiveTimerManager()::instance+48>)

    at /usr/include/c++/7/bits/list.tcc:76

    __tmp = <optimized out>

    __val = <optimized out>

    __tmp = <optimized out>

    __val = <optimized out>

    __cur = <optimized out>

    __cur = <optimized out>

    __tmp = <optimized out>

    __val = <optimized out>

    #6 std::__cxx11::list<cTimer, std::allocator<cTimer> >::clear (this=0x7f8e2c0db010 <vdrlive::LiveTimerManager()::instance+48>)

    at /usr/include/c++/7/bits/stl_list.h:1406

    No locals.

    #7 vdrlive::SortedTimers::ReloadTimers (this=this@entry=0x7f8e2c0db010 <vdrlive::LiveTimerManager()::instance+48>, initial=initial@entry=false) at timers.cpp:99

    No locals.

    #8 0x00007f8e2bdffc50 in vdrlive::TimerManager::DoReloadTimers (this=0x7f8e2c0dafe0 <vdrlive::LiveTimerManager()::instance>) at ../timers.h:56

    No locals.

    #9 (anonymous namespace)::_component_::operator() (this=0x7f8dfc019500, request=..., reply=..., qparam=...) at timers.ecpp:36

    spoint = {active = true, reply = @0x7f8e157f6bb0, pos = 0}

    timersLock = {mutex = 0x7f8e2c0dafe0 <vdrlive::LiveTimerManager()::instance>, locked = true}

    timers = <optimized out>

    previousDay = "\020$\204\n\216\177\000\000\300!\204\n\216\177\000\000\200\n\000 \216\177", '\000' <repeats 26 times>, "Ф\005\061\216\177\000\000\030\243\005\061\216\177", '\000' <repeats 50 times>, "`e\356\355\206U", '\000' <repeats 82 times>...

    _cxxtools_tracer = {_impl = 0x0}

    data = {dataObject = 0x7f8e2be88660 <incomplete sequence \310>}

    timerid = ""

    action = ""

    logged_in_pointer = <optimized out>

    logged_in = <optimized out>

    timer_pointer = 0x7f8e0401f4a0

    timer = @0x7f8e0401f4a0: 0x0

    timerNotifier_pointer = 0x7f8de00077e0

    ---Type <return> to continue, or q <return> to quit---

    timerNotifier = @0x7f8de00077e0: {_vptr.TimerConflictNotifier = 0x7f8e2c0d4f00 <vtable for vdrlive::TimerConflictNotifier+16>, static CHECKINTERVAL = 5,

    lastCheck = 0, lastTimerModification = 0, conflicts = std::tr1::shared_ptr<vdrlive::TimerConflicts> (empty) = {get() = 0x0}}

    pageTitle_pointer = 0x7f8e0400d7f0

    pageTitle = "Timer"

    r = <optimized out>

    r = <optimized out>

    r = <optimized out>

    r = <optimized out>

    #10 0x00007f8e2bb192a6 in tnt::Worker::dispatch(tnt::HttpRequest&, tnt::HttpReply&) () from /usr/lib/libtntnet.so.12

    No symbol table info available.

    #11 0x00007f8e2bb1a53a in tnt::Worker::processRequest(tnt::HttpRequest&, std::iostream&, unsigned int) () from /usr/lib/libtntnet.so.12

    No symbol table info available.

    #12 0x00007f8e2bb1b1cb in tnt::Worker::run() () from /usr/lib/libtntnet.so.12

    No symbol table info available.

    #13 0x00007f8e2bb1bf0a in cxxtools::DetachedThread::exec() () from /usr/lib/libtntnet.so.12

    No symbol table info available.

    #14 0x00007f8e2b8256a4 in ?? () from /usr/lib/libcxxtools.so.9

    No symbol table info available.

    #15 0x00007f8e31dfa6db in start_thread (arg=0x7f8e157fa700) at pthread_create.c:463

    pd = 0x7f8e157fa700

    now = <optimized out>

    unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140248222770944, 7936837542506501035, 140248222768960, 0, 140248038516800, 140248239553728, -7982237476102761557,

    -7982300422334213205}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}

    not_first_call = <optimized out>

    #16 0x00007f8e3045588f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

    No locals

    Ich habe das Live Plugin in Verdacht, da sich der Fehler reproduzieren lasst, wenn man in Live nur oft genug auf "Timer" klickt. Hier ist mein Wissen aber am Ende, vielleicht kann sich das mal einer der Entwickler ansehen.

    Danke

    Thomas

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • > da sich der Fehler reproduzieren lasst, wenn man in Live nur oft genug auf "Timer" klickt.

    Habe ich getestet. Kann ich nicht reproduzieren.

    De-installiere doch mal alle Plugins außer Live und teste noch mal.

    ~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

  • Hallo Markus,

    so schnell bekomme ich den Fehler meist auch nicht reproduziert.

    Die lange Liste der Plugins ist durch das neu bauen aus den Quelldateien entstanden, der Fehler tritt auch auf mit:

    Display Spoiler

    vdr (2.4.0/2.4.0) - The Video Disk Recorder

    conflictcheckonly (0.0.1) - Direct access to epgsearch's conflict check menu

    dynamite (0.3.0) - attach/detach devices on the fly

    epg2vdr (1.1.98-GIT) - epg2vdr plugin

    epgsearch (2.4.0) - search the EPG for repeats and more

    epgsearchonly (0.0.1) - Direct access to epgsearch's search menu

    live (2.3.1) - Live Interactive VDR Environment

    quickepgsearch (0.0.1) - Quick search for broadcasts

    satip (2.4.0) - SAT>IP Devices

    Und da kann ich nicht mehr viel entfernen, sonst geht nichts mehr.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Hi,

    Warum baust du neu? Nimm doch die Pakete von ya im Bionic Repo direkt?

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    http://www.easy-vdr.de

  • Hi Stefan,

    das hatte ich zuerst auch so, das "neu bauen" war nur um zu sehen, ob sich der Fehler verändert. Das hat er nicht, es kommt der gleiche Dump raus. Was zu erwarten war …

    mfg Thomas

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Hi,

    Ok. Ist das aktuelle Live-Plugin oder eine alte Version?

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    http://www.easy-vdr.de

  • Hi,

    Die Liste ist zu lang.

    Du brachst doch nur

    live

    dann sehr of auf "Timer" drücken und warten, ob der Fehler kommt ...

    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

  • Damit wird er nicht mal mehr starten, ohne satip Plugin kein DVB Device

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Hi,

    Stimmt wahrscheinlich...

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    http://www.easy-vdr.de

  • Seit ihr sicher, dass es mit live zu tun hat? Ich setzte seit zwei Wochen yavdr ansible ein und bekomme regelmäßig einen Crash (irgendwas mit coredump), wenn ich im Bereich Timer etwas einfüge oder lösche. Nach dem Neustart vom VDR kann ich meine Aktion dann problemlos durchführen. Ich setzte allerdings noch zusätzlich epgd und epg2vdr ein. Vielleicht hat es auch damit zu tun.

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

  • Nein, sicher ist (noch) gar nichts, dazu müsste mal jemand den Backtrace analysieren. Ohne wirklich zu verstehen, was da drin steht, sieht es für so aus, dass sich in dem Moment, wo Live die Timerliste aufbaut, sich die Anzahl der vorhanden Timer aufgrund eines epg Updates reduziert. Diese Vermutung basiert auf den Codestellen, auf die der Backtrace verweist.

    epg2vdr und epgd habe ich auch. epg2vdr habe ich zur Zeit nicht in Verdacht, er kommt im Backtrace nicht vor. Trotzdem habe ich ihn gerade zum Testen entfernt und zur Zeit bekommen ich den Fehler nicht hin. Zufall oder verändertes Verhalten beim epg Update, dass dann die Fehlersituation nicht entsteht ?

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Seit ihr sicher, dass es mit live zu tun hat? Ich setzte seit zwei Wochen yavdr ansible ein und bekomme regelmäßig einen Crash (irgendwas mit coredump), wenn ich im Bereich Timer etwas einfüge oder lösche. Nach dem Neustart vom VDR kann ich meine Aktion dann problemlos durchführen. Ich setzte allerdings noch zusätzlich epgd und epg2vdr ein. Vielleicht hat es auch damit zu tun.

    So ein Verhalten habe ich auch seit ich ansible einsetze. Auch gerne mal ein vdr-restart, wenn eine Aufnahme startet oder ein epgsearch-Update stattfindet. Also ich vermute eher epgsearch als Verursacher.

    signature

    Hardware:
    Software: yavdr-ansible@softhddevice

  • Übersehe ich die eigentliche Fehlermeldung im Backtrace? Was steht im syslog dazu?

    Grob gesagt will live die Timer neu laden und löscht dafür seine interne Liste mit Timern. Dabei werden die Destruktoren der Timer aufgerufen, die sich aus dem Schedule austragen wollen, indem sie einen Counter im Event (Anzahl verknüpfter Timer) reduzieren. Und da geht irgendwas schief. Ohne in den Source gucken zu können, könnte es sein, dass der gemerkte Pointer vielleicht nicht mehr gültig ist?

    Wenn man die vdr Objekte in einer eigenen Liste speichert, kann es immer unerwartete Nebenwirkungen haben, weil einiges an Logik in Konstruktoren und Destruktoren liegt. Besser wäre es, eine eigene Klasse zu erstellen, die genau die Informationen enthält, die man benötigt. Dann muss man eben nur alle Felder entsprechend kopieren. Aber anders bekommt ihr das nicht entkoppelt.

    Oder live merkt sich gar keine Objekte und arbeitet direkt mit den vdr Objekten und Listen. Aber dann darf es sich keine Pointer merken, jedenfalls nicht außerhalb des Read-Lock. Und den sollte man immer so kurz wie möglich halten. Das macht dann aber Sortieren wieder schwerer.

    Ich rate jetzt aber nur...

    Lars

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Hallo Lars,

    vielen Dank für deinen Input.

    Im syslog steht dies:

    syslog

    Feb 2 17:44:18 VDR-Test systemd[1]: Stopping Video Disk Recorder...

    Feb 2 17:44:19 VDR-Test vdr: epg2vdr: Update thread ended (tid=1250)

    Feb 2 17:44:24 VDR-Test vdr[1239]: Error in my_thread_global_end(): 2 threads didn't exit

    Feb 2 17:44:26 VDR-Test kernel: [31755.864490] traps: vdr[21774] trap stack segment ip:55c0deaf53f8 sp:7ffda02d1660 error:0 in vdr[55c0dea1c000+1cb000]

    Feb 2 17:44:26 VDR-Test systemd[1]: Starting Apport crash forwarding receiver...

    Feb 2 17:44:26 VDR-Test systemd[1]: vdr.service: Main process exited, code=dumped, status=7/BUS

    Feb 2 17:44:26 VDR-Test systemd[1]: vdr.service: Failed with result 'core-dump'.

    Feb 2 17:44:26 VDR-Test systemd[1]: Stopped Video Disk Recorder.

    Feb 2 17:44:26 VDR-Test systemd[1]: Started Apport crash forwarding receiver.

    Feb 2 17:44:47 VDR-Test systemd[1]: vdr.service: Failed to reset devices.list: Operation not permitted

    Feb 2 17:44:47 VDR-Test systemd[1]: Starting Video Disk Recorder...

    Die Fehlermeldung habe ich wohl beim copy paste abgeschnitten:

    Display Spoiler

    Core was generated by `vdr'.

    Program terminated with signal SIGBUS, Bus error.

    #0 cSchedule::DecNumTimers (this=0x6567007565640302) at epg.c:954

    954 numTimers--;

    [Current thread is 1 (Thread 0x7f8e157fa700 (LWP 998))]

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

    Edited once, last by kfb77 (February 4, 2019 at 9:44 PM).

  • Hi,

    Evtl mal neue Live Version testen? Da wird doch gerade aktiv dran geschraubt in Hinblick auf die Wiedergabe im Browser.

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    http://www.easy-vdr.de

  • Hi Stefan,

    wo finde ich eine neuere als 2.3.1 ?

    mfg Thomas

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Hier im Forum.

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    http://www.easy-vdr.de

Participate now!

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