[Patch] timers.c, duplikate

  • Es passiert immer wieder, daß nicht nur doppelte, sondern eine größere Anzahl von identischen (Such-)Timern angelegt werden. Die Ursachenforschung steht noch aus, allerdings denke ich, daß der VDR selbst schon echte Duplikate ablehnen bzw. gar nicht erst erzeugen sollte. Mir fällt kein vernünftiger Use-Case ein, in dem doppelte Timer irgendwie sinnvoll sein sollten.

    Das Problem lässt sich durch Hausmittel schnell nachstellen

    Code
    svdrpsend newt "1:1:2025-11-10:0441:0455:50:99:Tagesschau"
    svdrpsend newt "1:1:2025-11-10:0441:0455:50:99:Tagesschau"
    svdrpsend newt "1:1:2025-11-10:0441:0455:50:99:Tagesschau"

    Aktuell werden tatsächlich 3 Timer erstellt und mit dem Patch exakt nur einer.

    timer.c.patch.txt

  • Das Problem hatte ich auch schon, spätestens, wenn das wieder passiert, werde ich das Testen.

    Mein VDR

    VDR1 Mediaportal mit QVT-Board, Intel 810 Chipsatz, Pentium III 1,1 Ghz, 256 Mb Ram, WDC WD5000AAKB, DVB-S TT 1.5, Nova-S, Digidish 33, Gentoo Kernel 2.6.31, VDR 1.4.7
    VDR2 Asrock M3N78D, AMD Phenom II X6 1055T, 8 Gb Ram, Geforce GTX 950, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    VDR3 MC-1200, GA-B85M-HD3, Celeron G1840, Quadro P400. 4G Ram, CineS2 6, DuoFlex S2, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    TV TX-37LZD85F, AV VSX-520D - Consono 35


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Ich weiß nicht ob das hilft, aber ich bin noch mit einer ziemlich alten Version vom EPGsearch unterwegs. Die hat auch diverse Macken, aber mehrfache Timer habe das noch nie bemerkt. Der Fehler müsste also eigentlich irgendwann in den letzten 10 Jahren oder so rein gekommen sein.

    Btw. blöde Frage:
    Erzeugen die mehrfachen Timer auch mehrfach die gleiche Aufnahme oder wird das da dann irgendwo unterbunden?

    Gruss
    SHF

    Mein (neuer) VDR:

    Software:
    Debian Wheezy mit Kernel 3.14
    VDR 2.0.7 & div. Plugins aus YaVDR-Paketen
    noad 0.8.6

    Hardware:
    MSI C847MS-E33, onboard 2x1,1GHz Sandybridge Celeron 847, 4GiB RAM
    32GB SSD (System), 4TB 3,5" WD-Red HDD (Video)
    TT FF DVB-S 1.5 FullTS-Mod PWM-Vreg-Mod, DVB-Sky 852 Dual DVB-S2
    Das ganze im alten HP Vectra VLi8-Gehäuse versorgt von:
    PicoPSU-160-XT und Meanwell EPP-150 im ATX-NT-Gehäuse

  • Die mehrfachen Timer werden durch epgd erzeugt. Durch mein letztes Plugin konnte ich schön sehen, daß jede Stunde neue Timer erzeugt wurden. Und wenn ich mal eine Zeitlang die Timer nicht im Auge hatte, gab es extrem viele und die einzige (bequeme) Lösung war das Stoppen des VDR und das manuelle Löschen der Timer aus der timers.conf.

    Da dies alles remote timer sind, war der Start der VDR Client auch eher anspruchsvoll. Bis das OSD bedienbar wurde, dauerte es Minuten. Ich bin mir aber sicher, daß es irgendwo noch eine Bremse gibt,

    Mehrfache Aufnahmen wären mir nicht aufgefallen.

    Mit dem Patch habe ich zumindest mit den Timern Ruhe. Es gibt nicht mehr, als notwendig.

  • Den Fall mit den Remote-Timern hatte ich bisher nicht, aber ich habe es mal probiert:
    - Timer auf dem Server angelegt
    - Client zeigt den RemoteTimer an
    - Timer auf dem Client angelegt (wird angelegt, da RemoteTimer wohl nicht berücksichtigt werden)
    - Versucht, den Timer vom Client auf den Server zu schieben. Dabei kam die Fehlermeldung sinngemäß "Fehler beim Ansprechen des entfernten Timers).

    Also habe ich 2 identische Timer: Einen jeweils auf dem Server und auf dem Client. Jetzt weiß ich nicht, ob das richtig oder falsch ist. Für beides gibt es Argumente.

  • Es gibt doch etwas, was gegen diesen Patch spricht: an der Aufrufstelle von cTimers::Add() wird davon ausgegangen, dass der Timer in den "Besitz" der Liste übergeht. Wird er das durch diesen Patch im Falle eines bereits vorhandenen solchen Timers nicht, dann gibt es niemanden, der diesen später löscht, also haben wir ein Memory-Leak.

    Falls das Problem nur bei über SVDRP neu angelegten Timern besteht, könnte man das in cSVDRPServer::CmdNEWT() entsprechend einbauen. Da dein Testcase NEWT macht, gehe ich mal davon aus und werde das dort ändern.

  • Der Patch ist elegant und funktioniert ziemlich gut. Besonders gefällt mir, daß man den schon vorhandenen Timer zurückbekommt :)

    Code
    # svdrpsend newt "1:1:2025-11-15:1958:2025:50:99:Tagesschau:<epgd><timerid>28405</timerid></epgd>"
    220 client1 SVDRP VideoDiskRecorder 2.7.4; Sat Nov 15 13:42:41 2025; UTF-8
    550 1 1:C-1-1051-10301:2025-11-15:1958:2025:50:99:Tagesschau:<epgd><timerid>28405</timerid></epgd>
    221 client1 closing connection
    
    
    vdr: [2699107] SVDRP client1 < 127.0.0.1:50960 attempted to add timer 0 (1 1958-2025 'Tagesschau')
    vdr: [2699107] SVDRP client1 < 127.0.0.1:50960 timer already exists as 1 (1 1958-2025 'Tagesschau')

Participate now!

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