Hallo,
ich habe jetzt zum zweiten Mal mit VDR 1.6.0 während der Navigation im Menü einen Deadlock bekommen. Diesmal konnte ich einen Backtrace erstellen:
Code
(gdb) bt
#0 0x00007f35c4105434 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f35c4100cf0 in _L_lock_102 () from /lib64/libpthread.so.0
#2 0x00007f35c41005de in pthread_mutex_lock () from /lib64/libpthread.so.0
#3 0x00000000004e3e59 in cMutex::Lock (this=0x754360) at thread.c:192
#4 0x00000000004e3e84 in cThreadLock::Lock (this=0x7fff2d855170, Thread=0x80) at thread.h:90
#5 0x00000000004bdb79 in cRecordings::TotalFileSizeMB (this=0x754320) at recording.c:1132
#6 0x00000000004f32c0 in VideoDiskSpace (FreeMB=0x7fff2d85525c, UsedMB=0x80) at videodir.c:189
#7 0x0000000000491c63 in cFreeDiskSpace::HasChanged (ForceCheck=<value optimized out>) at menu.c:75
#8 0x0000000000494f4f in cMenuRecordings::SetFreeDiskDisplay (this=0x1015aa0, Force=96) at menu.c:2126
#9 0x0000000000497b59 in cMenuRecordings::Set (this=0x1015aa0, Refresh=false) at menu.c:2195
#10 0x0000000000497cc0 in cMenuRecordings (this=0x1015aa0, Base=0x9ff090 "tmpvdr~Quarks & Co", Level=2, OpenSubMenus=false) at menu.c:2108
#11 0x0000000000497e66 in cMenuRecordings::Open (this=0x132cef0, OpenSubMenus=255) at menu.c:2218
#12 0x0000000000497f13 in cMenuRecordings::Play (this=0x132cef0) at menu.c:2229
#13 0x00000000004a4bf8 in cMenuRecordings::ProcessKey (this=0x132cef0, Key=kOk) at menu.c:2360
#14 0x00000000004afecc in cOsdMenu::ProcessKey (this=0x1cb3b60, Key=kOk) at osdbase.c:531
#15 0x00000000004a4ac0 in cMenuRecordings::ProcessKey (this=0x754360, Key=128) at menu.c:2348
#16 0x00000000004afecc in cOsdMenu::ProcessKey (this=0xd68d10, Key=kOk) at osdbase.c:531
#17 0x000000000049be50 in cMenuMain::ProcessKey (this=0xd68d10, Key=kOk) at menu.c:3355
#18 0x00000000004f0212 in main (argc=<value optimized out>, argv=<value optimized out>) at vdr.c:1097
(gdb)
Alles anzeigen
Wie man sieht, ist das beim Öffnen eines Unterverzeichnisses im Aufnahmenmenü passiert als VDR den Speicherplatz neu bestimmen will.
Ok, die Zeilennummern stimmen nicht ganz mit dem Originalquellcode überein weil ein paar Patches drin sind, aber das grundsätzliche Verhalten/Problem sollte das nicht beeinflussen, da wohl immer wenn ein neuer Diskspacecheck gemacht wird der Recordingsthread erneut aufgerufen wird und der schon gelocked ist. Oder sehe ich das falsch?
FireFly