invalid lock sequence report

  • Hallo kls

    ich bräuchte mal deinen Support. Fourty2 bekommt diesen invalid lock sequence report:

    Das Problem ist ja wohl der Channel Lock vor dem Timer Lock bei markad.

    Mein Problem ist, dass markad keinen Channel Lock an der Stelle macht, zumindest finde ich ihn nicht. Es gibt nur eine Stelle im markad Code, der einen Channel Lock macht, der wird aber nur aus dem Konfigurations Menu aufgerufen. Außerdem ist er mit Debug Meldungen versehen, siehe hier, die wie erwartet, nicht im Log auftauchen.


    Meine Frage: Gibt es irgendwas anderes, außer "cChannels::GetChannelsRead(StateKey)" und LOCK_CHANNELS_READ, was implizit einen Channel Read Lock macht ? Wo kommt mein Lock her ?


    Das Problem ist reproduzierbar nach dem Abbruch einer Aufnahme wegen PID Änderung:

    Code
    1. Jan 3 09:41:56 vdr: [2930] changing pids of channel 1862
    2. Jan 3 09:41:56 vdr: [2934] changing pids of channel 101
    3. Jan 3 09:41:56 vdr: [2930] changing pids of channel 1862
    4. Jan 3 09:41:56 vdr: [2863] retuning: TMR, CHN Read Lock
    5. Jan 3 09:41:56 vdr: [2863] stopping recording due to modification of channel 101
    6. Jan 3 09:41:56 vdr: [3303] recording thread ended (pid=2863, tid=3303)
    7. Jan 3 09:41:56 vdr: [2863] SendCaPmts CAM 1: [1] actives in CAM: 2 -> 1 (3 pids)
    8. Jan 3 09:41:56 vdr: [2863] CAM 1: unassigned from device 2

    Weitere Details und Logs ab hier im markad Thread.

    VDR
  • Gibt es irgendwas anderes, außer "cChannels::GetChannelsRead(StateKey)" und LOCK_CHANNELS_READ

    Soweit ich das bisher verstanden habe, nicht.


    Was mir an dem Log aufgefallen ist, dort fehlen Informationen: die Fragezeichen

    /usr/bin/vdr cRecordControl::Stop(bool) calling ?? at ??:0


    Schau mal, ob in "thread.c" alle Debug-Optonen aktiv sind:

    - #define DEBUG_LOCKING

    - #define DEBUG_LOCKSEQ

    - #define DEBUG_LOCKCALL


    Dann sollten auch die Fragezeichen durch Sinnvolles ersetzt sein. Vielleicht lässt sich dann besser erkennen, wo diese Aufrufe herkommen.


    Grüße

    kamel5

    VDR 2.6.0: ASUS Prime X470-PRO, Ryzen 7 2700, 64GB, 6TB HD, GT1030, Fedora 35 Kernel 5.15 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • kls

    Wir sind jetzt ein wenig weitergekommen: Die Id 2863 im o.g. Log ist gar nicht markad, sondern VDR. Der Channel Lock kommt vom VDR, der Timer Lock von markad, in dieser Reihenfolge. So weit so schlecht.

    Eigentlich dachte ich immer, der VDR führt Plugin Methoden immer in einem eigenen Thread aus und somit hat jedes Plugin sein eigenes Lock Universum. Dem ist offensichtlich nicht so.

    Aber jetzt meine Frage: Darf der VDR einen Lock haben, wenn er eine Plugin Methode aufruft ? Ich kann mir nicht vorstellen, dass das gut ist, dann laufe ich im Plugin ja blind in einen Sequenz Fehler rein, oder ?

    VDR