Ich nutze auf einem RPi3b Ubuntu 20.04 mit yaVDR (Raspi-Ansible). Im Prinzip funktioniert alles wunderbar, aber beim Beenden von VDR (inkl. Shutdown/Restart) hängt rpihddevice und beendet sich nicht.
Ich kann das mit manuellem vdr-Aufruf ohne sonstige Plugins reproduzieren: sobald rpihddevice dabei ist, gibt es das Problem. Bei manueller Ausführung bleibt nach einem kill (HUP/TERM) der vdr-Prozess ewig bestehen. Der Service wird dann natürlich nach einem Timeout irgendwann vom systemd hart gekillt, aber das dauert halt immer eeeeeeewig.
Im Log steht leider gar nichts.
Nov 04 13:55:17 ubuntu vdr[3445]: [3445] confirmed
Nov 04 13:55:18 ubuntu vdr[3445]: [3466] SVDRP server handler thread ended (pid=3445, tid=3466)
Nov 04 13:55:18 ubuntu vdr[3445]: [3445] saving /var/cache/vdr/cam.data
Nov 04 13:55:18 ubuntu vdr[3445]: [3445] stopping plugin: rpihddevice
Nov 04 13:55:18 ubuntu vdr[3445]: [3445] stopping plugin: satip
Nov 04 13:55:18 ubuntu vdr[3445]: [3448] SATIP poller thread ended (pid=3445, tid=3448)
Nov 04 13:55:18 ubuntu vdr[3445]: [3445] stopping plugin: dbus2vdr
Nov 04 13:55:18 ubuntu vdr[3445]: [3445] dbus2vdr: thread-pool for handling signal-emits stopped
Nov 04 13:55:18 ubuntu vdr[3445]: [3460] dbus2vdr: mainloop stopped
Nov 04 13:55:18 ubuntu vdr[3445]: [3459] rpihddevice: cAudioDecoder() thread ended
Nov 04 13:55:18 ubuntu vdr[3445]: [3459] audio decoder thread ended (pid=3445, tid=3459)
Nov 04 13:55:18 ubuntu vdr[3445]: [3467] device 1 receiver thread ended (pid=3445, tid=3467)
Nov 04 13:55:18 ubuntu vdr[3445]: [3445] saved setup to /var/lib/vdr/setup.conf
Nov 04 13:55:18 ubuntu vdr[3445]: [3451] device 1 section handler thread ended (pid=3445, tid=3451)
Nov 04 13:55:18 ubuntu vdr[3445]: [3450] SATIP#0 section handler thread ended (pid=3445, tid=3450)
Nov 04 13:55:18 ubuntu vdr[3445]: [3449] SATIP#0 tuner thread ended (pid=3445, tid=3449)
Alles anzeigen
Nach der letzten Zeile (tuner thread ended) läuft der vdr-Prozess noch, nach einem nochmaligen HUP/TERM ist er ohne weiteren Eintrag im Log weg.
Bei einem Aufruf mittels strace sehe ich, dass im "toten Zustand" (alles außer rpihhddevice hat sich beendet) anscheinend noch ein usleep oder so läuft, jedenfalls wird mir die Console mit
clock_gettime64(CLOCK_REALTIME, {tv_sec=1636028786, tv_nsec=738028582}) = 0
futex(0xbee1b040, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1636028786, tv_nsec=743028000}, FUTEX_BITSET_MATCH_ANY) = -1 ETIMEDOUT (Die Wartezeit für die Verbindung ist abgelaufen)
zugeballert.
Ggü. dem vanilla 1.0.5 scheinen ja einige Patches notwendig gewesen zu sein, ich weiß nicht, welche davon im yaVDR binary sind - wollte hier aber grundsätzlich mal fragen, ob das Problem auch bei anderen besteht oder nur bei mir.