Tut mir leid, da ist beim Kopieren was schief gegangen. Die v2 sollte keine rejects mehr haben.
[VDR-2.6.0 + epgsearch] Vermeide Wiederholung
-
-
Jau, v2 past. Ob's funktioniert kann ich Dir gegen 22h nach der Tatort-Serien-Aufnahme sagen.
EDIT:
Funktioniert leider nicht - es wird sofort die Tatort-Aufnahme auf oneHD gestartet, welche einen Timer-Konflikt erzeugt. Wenn ich versuche den neu erzeugten Timer zu löschen, crasht der vdr:
Code
Display MoreCore was generated by `/usr/bin/vdr --watchdog=60 --device=0 --device=1 --epgfile=/var/vdr/epg.data --'. Program terminated with signal SIGABRT, Aborted. #0 0x00007ff976700074 in ?? () from /lib64/libc.so.6 [Current thread is 1 (Thread 0x7ff8e8b32640 (LWP 65774))] (gdb) bt #0 0x00007ff976700074 in () at /lib64/libc.so.6 #1 0x00007ff9766b54d2 in raise () at /lib64/libc.so.6 #2 0x00007ff9766a04db in abort () at /lib64/libc.so.6 #3 0x00007ff96b3374b2 in () at /usr/lib64/libGraphicsMagick.so.3 #4 0x00007ff9766b5560 in <signal handler called> () at /lib64/libc.so.6 #5 cRecdoneThread::Action() (this=0x7ff96cc75c00 <RecdoneThread>) at recdone_thread.c:102 #6 0x00005612d898bc1d in cThread::StartThread(cThread*) (Thread=0x7ff96cc75c00 <RecdoneThread>) at thread.c:293 #7 0x00007ff9766fe3d7 in () at /lib64/libc.so.6 #8 0x00007ff97677f96c in () at /lib64/libc.so.6 (gdb)
Ich habe hier auch ein epgsearch.log (Stufe 2 - vdr crasht immer, wenn ich den Timer lösche, manuell als bereits aufgenommen kennzeichnen ändert daran nichts):
-
Den Crash kann ich bestätigen:
Code
Display More#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 tid = <optimized out> ret = 0 pd = <optimized out> old_mask = {__val = {0, 0, 0, 140137161807168, 140137161808649, 0, 140143146048706, 0, 1, 140137161808208, 15, 140137161808224, 0, 140136931134304, 140137161808768, 206158430232}} ret = <optimized out> #1 0x00007f759e5d28b3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78 #2 0x00007f759e5856a6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 ret = <optimized out> #3 0x00007f759e56f865 in __GI_abort () at abort.c:100 act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {18446744073709551615, 0 <repeats 15 times>}}, sa_flags = 0, sa_restorer = 0x0} sigs = {__val = {32, 206158430208, 140136192933888, 140137161808160, 42949672960, 0, 0, 0, 140137161808857, 0, 4, 18446744073709551615, 675994, 0, 0, 140137161807472}} #4 0x00007f759011db0b in MagickPanicSignalHandler (signo=11) at magick/magick.c:873 #5 MagickPanicSignalHandler (signo=11) at magick/magick.c:849 #6 0x00007f759e585750 in <signal handler called> () at /lib64/libc.so.6 #7 cRecdoneThread::Action() (this=0x7f75858fbcc0 <RecdoneThread>) at recdone_thread.c:102 found = true Timers = 0x6aeb00 <cTimers::timers> tiR = 0x2e80270 it = "/Video/video0/Serien/Castle/Nach_dem_Sturm/2022-01-16.19.28.57-0.rec" m_filename = 0x2ea2420 "/Video/video0/Serien/Castle/Nach_dem_Sturm/2022-01-16.19.28.57-0.rec" Timers_Lock = {stateKey = {stateLock = 0x6aeb20 <cTimers::timers+32>, write = false, state = -1, timedOut = false}, list = 0x6aeb00 <cTimers::timers>} TimersRecordingLock = {mutex = 0x7f75858fbc90 <TimersRecording+144>, locked = true} RecsDoneLock = {mutex = 0x7f75858fbbb0 <RecsDone+144>, locked = true} now = 1642360500 #8 0x00000000005a6b37 in cThread::StartThread(cThread*) (Thread=0x7f75858fbcc0 <RecdoneThread>) at thread.c:295 #9 0x00007f759e5d0a87 in start_thread (arg=<optimized out>) at pthread_create.c:435 ret = <optimized out> pd = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140137161811520, 2527055769620049683, 140137161811520, 9, 140143144798192, 0, -2451765060636381421, -2451405775438745837}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> #10 0x00007f759e655640 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Allerdings trat das bei mir nur manchmal auf. Bisher konnte ich das nur reproduzieren, wenn ich während einer bereits laufenden SuchTimer-Aufnahme die Endezeit vorgezogen habe (im Bereich des Timernachlaufs). Ein Löschen von SuchTimern habe ich noch nicht probiert.
Grüße
kamel5
-
Danke fürs Testen, ich kann das zwar bei mir nicht nachvollziehen, habe aber eine Umstellung gemacht, die den crash verhindern sollte.
Ausserdem werden mehr logs mit Loglevel 2 statt 3 geschrieben.
-
Danke fürs Testen, ich kann das zwar bei mir nicht nachvollziehen, habe aber eine Umstellung gemacht, die den crash verhindern sollte.Ausserdem werden mehr logs mit Loglevel 2 statt 3 geschrieben.Könnte die unterschiedliche source-code basis der Grund sein, warum Du das bei Dir nicht reproduzieren kannst?Codepatch -p1 --no-backup-if-mismatch --dry-run </mnt/export/data/Downloads/incoming/epgsearch-changed-handling-of-finished-recs-v3.patch checking file menu_commands.c checking file recdone.c checking file recdone.h checking file recdone_thread.c Hunk #1 FAILED at 80. Hunk #2 succeeded at 149 (offset 10 lines). 1 out of 2 hunks FAILED checking file recstatus.c
-
Bei mir ließ sich der letzte Patch problemlos einspielen, auf letzten git-Stand.
Ich habe den VDR gerade aktualisiert, mal sehen, was mit der nächsten Aufnahme passiert.
Grüße
kamel5
-
Bei mir ließ sich der letzte Patch problemlos einspielen, auf letzten git-Stand.
Ich habe den VDR gerade aktualisiert, mal sehen, was mit der nächsten Aufnahme passiert.
Grüße
kamel5
Oh, ja, Du hast recht.ich hatte Deinen "Add check errors to recdone_thread.c" commit noch drin. TomJoad: Sorry.
-
Bei mir läuft v3 seit gestern 18:30 Uhr. Heute Nacht lief die Aufnahme (Bosetti; Timerstart 18.1.2022 01:30 h) eines epgsearch Serien-Timers. epgsearch.log beginnt um So. 16.01.2022 19:21:32.
Codegrep "added rec done for" /etc/vdr/plugins/epgsearch/epgsearch.log Mo. 17.01.2022 05:22:00: added rec done for 'Inspector Barnaby~Der Stachel des Todes';Inspector Barnaby Mo. 17.01.2022 15:00:00: added rec done for 'Elementary~Kampfhähne';Elementary
Einen Crash konnte ich mit v3 bisher nicht beobachten, aber "added rec done for" gibts für den Timer nicht. Der Bosetti-Timer hatte "vermeide Wiederholungen" nicht gesetzt, aber der "added rec done for"-Eintrag hätte doch trotzdem erscheinen müssen, oder nicht? Heute Mittag habe ich einen Serientimer mit "vermeide Wiederholungen" (Elementary) und einer Woederholung der Folge morgen früh - ich berichte nach Ende der Aufnahme, ob epgsearch mit v3 ein zweites mal auf die Wiederholung anspringt, aber ich befürchte, es funktioniert noch nicht.
-
@nvertigo: Die komplette epgsearch.log von heute würde ich gerne sehen
-
Ist loglevel 2,enn ich auf loglevel 3 umstellen soll, sag Bescheid.
-
@nvertigo: Bosetti ist zwar ein Serientimer, aber AvoidRepeats steht auf No, dann wurde noch nie ein epgsearchdone.data-Eintrag erzeugt.
-
TomJoad :
Codeadler vdr # grep Elementary /etc/vdr/plugins/epgsearch/epgsearch.conf 84:Elementary:0:::2:frei:0:0:1:1:1:0:::1:0:0:1::50:99:5:10:0:0:0::1:0:1:1:0:0:0:0:0:1:0:0::1:0:0:0:0:0:0:0:0:0:90::0 adler vdr # grep "added rec done for .*Elementary" /etc/vdr/plugins/epgsearch/epgsearch.log Di. 18.01.2022 15:00:00: added rec done for 'Elementary~Zwei Ohren zu viel';Elementary adler vdr #
Dankeschön!
EDIT:
Der Vollständigkeit halber: epgsearch schlägt bei der Wiederholng von "Zwei Ohren zu viel" nicht mehr an.
-
Bei mir liefen seit gestern mit dem Patch -v3 auch einige Suchtimer. Diese wurden soweit ohne Auffälligkeiten und Abstürze durchgeführt.
Ich werde das die nächsten Tage weiter beobachten.
Grüße
kamel5
-
TomJoad ,
nachdem ich epgsearch mit Patch -v3 einige Zeit beobachtet habe, kann ich bestätigen, das es damit prinzipiell funktioniert.
Allerdings konnte ich eine Abweichung zum alten Stand feststellen:
Wenn man bei einem bereits laufenden Suchtimer die Endezeit vorzieht, wird dieser Timer nicht mehr als erledigt markiert. Das hat bisher funktioniert.
Hintergrund dazu:
Wenn man Timer-Konflikte hat und das erst feststellt, wenn eine dazu gehörende Aufnahme bereits läuft, kann man das durchaus bereinigen, indem man die Endezeit der laufenden Aufnahme und die Anfangszeit folgender Aufnahmen ändert. Das Ganze natürlich im Rahmen der Vor- und Nachlaufzeiten, so das davon ausgegangen werden kann, das eine erledigte Aufnahme zeitlich in Ordnung ist.
epgsearch müsste also seine zwischengespeicherten Timer auch anpassen, wenn ein laufender Suchtimer geändert wird.
Grüße
kamel5
-
Das Problem von kamel5 lässt sich ohne Änderung im main-vdr nicht lösen. Bei Timeränderungen werden keine timerchange-Statusmeldungen verschickt.
Das Behandeln des Aufnahmeendes musste mit 2.4 wegen der Lockgeschichten in einen extra-Thread verlegt werden. Damit konnte auch vor 2.5 nicht wirklich gewährleistet werden, dass das zugehörige Timerobjekt noch vorhanden ist.
Bei manuellem Eingriff muss man wohl auch selber dafür sorgen, dass die Aufnahme als erledigt gekennzeichnet wird.
Ich habe die Änderungen hochgeladen. Zusätzlich gibt es eine neue Konfigurationsvariable unter Suchtimer: "Erlaubte Fehler" (default: 0). Hat in 2.6 eine Aufnahme mehr als die erlaubten Fehler, wird sie nicht als erledigt eingetragen.
-
-
Ich habe mal hier etwas weiter experimentiert, auch weil ich nicht abschätzen kann, wie umfangreich eine Anpassung in epgsearch werden könnte.
Ob dieser commit funktional bedingt war, kann sicher nur kls mit Bestimmtheit sagen.
Ich habe deshalb testhalber die Funktion "bool cTimers::DeleteExpired(bool Force)" auch für den Fall "Forced" mit einer Verzögerung von 1s versehen, um das nicht unnötig lange zu verzögern. Dadurch hat epgsearch genügend Zeit, um den recdone thread abzuarbeiten. Auch damit funktioniert es problemlos.
Siehe Anhang: cTimers.DeleteExpired.diff.gz
Bei dieser Gelegenheit (und weil es zu "Vermeide Wiederholung" passt) habe ich den "recdone_thread" um die Prüfung der fehlerfreien Aufnahme erweitert.
Siehe Anhang: 0001-Add-check-errors-to-recdone_thread.c.patch.gz
Damit wird eine Aufnahme nur dann als "erledigt" markiert, wenn keine Fehler vorhanden sind.
TomJoad , vielleicht kannst Du das so oder ähnlich mit in epgsearch aufnehmen.
Grüße
kamel5
Hi TomJoad und ihr Wissenden ....
Ich bin gerade auf der Suche, warum seit ich von der reelbox auf den NUC/BM2LTS umgestiegen bin, die epgsearchdone.data nicht mehr aktualisiert wurde....vdr: [1794] epgsearch: finished: '/media/hd/recordings/WELT_Newsroom/2024.01.27-14:30-Sa/2024-01-27.14.15.21-0.rec' but 2 errors); search timer: 'WELT Newsroom'; VPS used: No [/tt]
vdr: [1794] EPGSearch: recdone thread ended (pid=1362, tid=1794) [/tt]
Dadurch dass das mcli plugin (Netceiver Empfang) und der aktuelle vdr nicht immer perfekt harmonieren, hat fast jede Aunahme ein paar Fehler. Das fällt beim Schauen auch nicht ins Gewicht...
Kann man dieses Verhalten (wenn Fehler >0 keine Eintrag in epgsearchdone.data) konfigurieren = Ev. Fehlernanzahl toleranter od. einfach abschalten ?
-
kfb77 Hast du ev. eine Idee / Erklärung ?
Aktuell bin ich überhaupt verwirrt, weil er schreibt auch dann nicht wenn 0 Fehler sind
Code
Display MoreJan 27 16:05:00 BM2LTS-MC vdr: [1362] timer 72 (22 1513-1605 'Car Pound Cops - Die Abschlepper vom Dienst~Episode 3') finished with 0 errors Jan 27 16:05:00 BM2LTS-MC vdr: [8308] recording thread ended (pid=1362, tid=8308) Jan 27 16:05:00 BM2LTS-MC vdr: [1362] buffer stats: 110168 (0%) used Jan 27 16:05:00 BM2LTS-MC vdr: [1362] timer 72 (22 1513-1605 'Car Pound Cops - Die Abschlepper vom Dienst~Episode 3') stop Jan 27 16:05:00 BM2LTS-MC vdr: [1362] removing /media/hd/recordings/Car_Pound_Cops_-_Die_Abschlepper_vom_Dienst/Episode_3/2024-01-27.15.13.22-0.rec/.timer Jan 27 16:05:00 BM2LTS-MC vdr: [1362] markad: cStatusMarkAd::Recording(): recording stopped, recording count now 0 Jan 27 16:05:00 BM2LTS-MC vdr: [1362] markad: cStatusMarkAd::Recording(): index 0, pid 8313, filename /media/hd/recordings/Car_Pound_Cops_-_Die_Abschlepper_vom_Dienst/Episode_3/2024-01-27.15.13.22-0.rec: recording stopped Jan 27 16:05:00 BM2LTS-MC vdr: [1362] markad: VPS event sequence not valid for recording <Car Pound Cops - Die Abschlepper vom Dienst~Episode 3> Jan 27 16:05:00 BM2LTS-MC vdr: [1362] markad: cStatusMarkAd::Recording(): remove recording <(null)> [/media/hd/recordings/Car_Pound_Cops_-_Die_Abschlepper_vom_Dienst/Episode_3/2024-01-27.15.13.22-0.rec] from list Jan 27 16:05:00 BM2LTS-MC vdr: [1362] executing '/media/hd/recordings after "/media/hd/recordings/Car_Pound_Cops_-_Die_Abschlepper_vom_Dienst/Episode_3/2024-01-27.15.13.22-0.rec"' Jan 27 16:05:00 BM2LTS-MC vdr: [8330] EPGSearch: recdone thread started (pid=1362, tid=8330, prio=high) Jan 27 16:05:00 BM2LTS-MC vdr[8332]: sh: 1: /media/hd/recordings: Permission denied Jan 27 16:05:00 BM2LTS-MC vdr: [1362] timer 72 (22 1513-1605 'Car Pound Cops - Die Abschlepper vom Dienst~Episode 3') set to no event Jan 27 16:05:00 BM2LTS-MC vdr: [1362] deleting timer 72 (22 1513-1605 'Car Pound Cops - Die Abschlepper vom Dienst~Episode 3') Jan 27 16:05:00 BM2LTS-MC vdr: [8330] EPGSearch: recdone thread ended (pid=1362, tid=8330) Jan 27 16:05:00 BM2LTS-MC vdr: [1442] loading /media/hd/recordings/Car_Pound_Cops_-_Die_Abschlepper_vom_Dienst/Episode_3/2024-01-27.15.13.22-0.rec/marks
setup.conf:
Code
Display Moreepgsearch.AddSubtitleToTimerMode = 2 epgsearch.AllowedErrors = 0 epgsearch.BlueKeyMode = 1 epgsearch.CheckConflictsAfterTimerProg = 1 epgsearch.CheckConflictsIntervall = 0 epgsearch.CheckConflictsIntervall2 = 15 epgsearch.CheckConflictsMinDuration = 5 epgsearch.CheckConflictsOnRecording = 0 epgsearch.CheckConflictsWithinLimit = 60 epgsearch.CheckEPGChannelgroup = 0 epgsearch.CheckEPGHours = 6 epgsearch.CheckEPGWarnByMail = 0 epgsearch.CheckEPGWarnByOSD = 1 epgsearch.CheckTimerConflicts = 1 epgsearch.CheckTimerConflictsDays = 99 epgsearch.CheckTimerConflictsPriority = 0 epgsearch.DefLifetime = 99 epgsearch.DefMarginStart = 2 epgsearch.DefMarginStop = 8 epgsearch.DefPriority = 50 epgsearch.DefRecordingDir = epgsearch.DefSearchTemplateID = 0 epgsearch.DelayThreads = 0 epgsearch.FavoritesMenuTimespan = 24 epgsearch.HideMenu = 0 epgsearch.IgnorePayTV = 0 epgsearch.MailAddress = epgsearch.MailAddressTo = epgsearch.MailAuthPass = epgsearch.MailAuthUser = epgsearch.MailNotificationConflicts = 0 epgsearch.MailNotificationSearchtimers = 0 epgsearch.MailNotificationSearchtimersHours = 0 epgsearch.MailServer = epgsearch.MailUseAuth = 0 epgsearch.MailViaScript = 1 epgsearch.MainMenuEntry = epgsearch.MaxChannelMenuNow = 66 epgsearch.NoAnnounceWhileReplay = 0 epgsearch.NoConflMsgWhileReplay = 0 epgsearch.OnePressTimerCreation = 1 epgsearch.RedKeyMode = 0 epgsearch.RemoteConflictCheck = 0 epgsearch.ReplaceOrgSchedule = 1 epgsearch.ShowChannelGroups = 1 epgsearch.ShowChannelNr = 1 epgsearch.ShowDaySeparators = 1 epgsearch.ShowEmptyChannels = 1 epgsearch.ShowFavoritesMenu = 0 epgsearch.ShowProgress = 1 epgsearch.ShowRadioChannels = 0 epgsearch.StartMenu = 1 epgsearch.SVDRPPort = 2001 epgsearch.TimeIntervallFRFF = 30 epgsearch.TimerProgRepeat = 1 epgsearch.ToggleGreenYellow = 1 epgsearch.UpdateIntervall = 40 epgsearch.UseOkForSwitch = 0 epgsearch.UserMode1Description = 20:15 epgsearch.UserMode1Time = 2015 epgsearch.UserMode1UseIt = 1 epgsearch.UserMode2Description = 21:59 epgsearch.UserMode2Time = 2159 epgsearch.UserMode2UseIt = 1 epgsearch.UserMode3Description = 22:30 epgsearch.UserMode3Time = 2230 epgsearch.UserMode3UseIt = 1 epgsearch.UserMode4Description = epgsearch.UserMode4Time = 0 epgsearch.UserMode4UseIt = 0 epgsearch.UseSearchTimers = 1 epgsearch.UseVDRTimerEditMenu = 0
2 Woran kann es zus. noch liegen. Ich habe den Suchtime angelegt, da lief die Sendung bereits und zus. hab ich das Ende mit einer negativen Nachaufzeit von -10 eingestellt, damit die Testaufnahme kürzer ist ...
-
Ich habe den Suchtime angelegt, da lief die Sendung bereits
Und wie soll sie dann vollständig sein ?
-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!