Hallo zusammen,
nachdem das Lock-Problem mit Markad vermutlich (siehe [markad] überarbeiteter Decoder) gelöst ist, tritt nun eine Race-Condition / Deadlock unter folgenden Bedingungen auf:
1. VDR zeigt Programm A
2. VDR zeichnet auf Programm B auf
3. VDR startet weitere Aufnahme auf (ggf. notwendig) verschlüsseltem Programm, für das A umgeschaltet werden muß
Die Situation ist reproduzierbar (liegt aber möglicherweise an einem Patch )
Letzte Log-Einträge ("Umschalt"-Timer per Live Plugin gesetzt):
Code
Jan 5 10:26:41 vdr: [3722] live: UpdateTimer() timerId '0'
Jan 5 10:26:41 vdr: [3722] live: UpdateTimer() remote '(null)'
Jan 5 10:26:41 vdr: [3722] live: UpdateTimer() oldRemote '(null)'
Jan 5 10:26:41 vdr: [3722] live: UpdateTimer() builder '[..Aufnahme..]'
Jan 5 10:26:42 vdr: [3690] live: DoInsertTimer() add local timer
Jan 5 10:26:42 vdr: [3690] live: local timer 56 ([..Aufnahme..]) added
Jan 5 10:26:42 vdr: [3690] timer 56 (Kanal Zeit ...)
Jan 5 10:26:42 vdr: [3737] VAAPI: video: reset start
Jan 5 10:26:42 vdr: [3737] VAAPI: video: set clock --:--:--.---
Jan 5 10:26:42 vdr: [3690] VAAPI: video: set closing
Jan 5 10:26:42 vdr: [3690] VAAPI: video: set clock --:--:--.---
Jan 5 10:26:42 vdr: [3690] VAAPI: video: reset start
Jan 5 10:26:42 vdr: [3690] VAAPI: video: set clock --:--:--.---
Jan 5 10:26:42 vdr: [3737] VAAPI: video/vaapi: closing eof
Jan 5 10:26:42 vdr: [3690] SendCaPmts CAM 1: [1] actives in CAM: 2 -> 1 (3 pids)
Jan 5 10:26:42 vdr: [3704] VAAPI: audio/alsa: using pass-through device 'hdmi:CARD=PCH,DEV=2,AES0=0x06'
Jan 5 10:26:42 vdr: [3704] VAAPI: audio/alsa: start delay 336ms
-- race --
Display More
Backtrace
Code
#0 __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:103
#1 0x00007f85fd4c8714 in __GI___pthread_mutex_lock (mutex=mutex@entry=0x562fffe219c0) at ../nptl/pthread_mutex_lock.c:80
#2 0x0000562fff2f45a9 in cMutex::Lock (this=0x562fffe219c0) at thread.c:224
#3 0x0000562fff2f4d30 in cThread::Lock (this=<optimized out>) at thread.h:94
#4 cThreadLock::Lock (this=0x7ffcd1f78030, Thread=<optimized out>) at thread.c:430
#5 0x0000562fff251fdc in cDevice::SetCamSlot (this=0x562fffe219a0, CamSlot=CamSlot@entry=0x0) at device.c:450
#6 0x0000562fff23df02 in cCamSlot::Assign (this=0x56301a406b10, Device=0x0, Query=<optimized out>) at ci.c:2546
#7 0x0000562fff2543c0 in cDevice::Detach (Receiver=0x56301a530ec0, this=0x562fffe219a0) at device.c:1844
#8 cDevice::Detach (this=0x562fffe219a0, Receiver=0x56301a530ec0) at device.c:1823
#9 0x0000562fff25453b in cDevice::DetachAllReceivers (this=this@entry=0x562fffe219a0) at device.c:1867
#10 0x0000562fff2625e8 in cDvbDevice::DetachAllReceivers (this=0x562fffe219a0) at dvbdevice.c:2369
#11 0x0000562fff2553d9 in cDevice::GetDevice (Channel=Channel@entry=0x562fffb95110, Priority=50, LiveView=LiveView@entry=false, Query=Query@entry=false) at device.c:359
#12 0x0000562fff298098 in cRecordControls::Start (Timers=0x562fff3e23c0 <cTimers::timers>, Timer=0x56301b4be000, Pause=<optimized out>) at menu.c:5705
#13 0x0000562fff2332e5 in main (argc=<optimized out>, argv=<optimized out>) at vdr.c:1133
Display More
("gdb info threads" im nächsten Post)
Was muß ich machen, um die Ursache zu finden?
Stefan