vdr-dvd-cvs: deadlock when switching audio channel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

please have a look at the backtraces of the following threads:

VDR's main thread:

> (gdb) bt
> #0  0xffffe410 in __kernel_vsyscall ()
> #1  0xb7f20c1e in __lll_mutex_lock_wait () from /lib/libpthread.so.0
> #2  0xb7f1ca58 in _L_mutex_lock_86 () from /lib/libpthread.so.0
> #3  0xb7f1c47d in __pthread_mutex_lock (mutex=0xa44ceec) at pthread_mutex_lock.c:81
> #4  0x0814e111 in cMutex::Lock (this=0xa44ceec) at thread.c:191
> #5  0x080c0656 in cThread::Lock (this=0xa44cedc) at thread.h:91
> #6  0x0814e14a in cThreadLock::Lock (this=0xbfbeea90, Thread=0xa44cedc) at thread.c:392
> #7  0x0814e18e in cThreadLock (this=0xbfbeea90, Thread=0xa44cedc) at thread.c:379
> #8  0xb7a9e6d4 in cDvdPlayer::SetAudioTrack (this=0xa44ced0, Type=ttDolby, TrackId=0xa3d1a62) at player-dvd.c:2536
> #9  0x080bb367 in cDevice::SetCurrentAudioTrack (this=0xa3d11a0, Type=ttDolby) at device.c:1058
> #10 0x080e88d9 in cDisplayTracks::ProcessKey (this=0x88021d8, Key=kAudio) at menu.c:3595
> #11 0x080e3773 in cDisplayTracks::Process (Key=kAudio) at menu.c:3545
> #12 0x0815dec5 in main (argc=16, argv=0xbfbeef34) at vdr.c:1035

vdr-dvd's DvdPlayer thread:

> (gdb) bt
> #0  0x08159ef8 in Watchdog (signum=14) at vdr.c:164
> #1  <signal handler called>
> #2  0xffffe40e in __kernel_vsyscall ()
> #3  0xb7f20c1e in __lll_mutex_lock_wait () from /lib/libpthread.so.0
> #4  0xb7f1ca58 in _L_mutex_lock_86 () from /lib/libpthread.so.0
> #5  0xb7f1c47d in __pthread_mutex_lock (mutex=0xa3d224c) at pthread_mutex_lock.c:81
> #6  0x0814e111 in cMutex::Lock (this=0xa3d224c) at thread.c:191
> #7  0x0814e1e2 in cMutexLock::Lock (this=0xb18f61a0, Mutex=0xa3d224c) at thread.c:366
> #8  0x0814e226 in cMutexLock (this=0xb18f61a0, Mutex=0xa3d224c) at thread.c:353
> #9  0x080bf264 in cDevice::PlayPesPacket (this=0xa3d11a0, Data=0xafd00690 "", Length=2034, VideoOnly=false) at device.c:1274
> #10 0x080be564 in cDevice::PlayPes (this=0xa3d11a0, Data=0xafd00690 "", Length=2034, VideoOnly=false) at device.c:1410
> #11 0x081141f3 in cPlayer::PlayPes (this=0xa44ced0, Data=0xafd00690 "", Length=2034, VideoOnly=false) at player.c:29
> #12 0xb7a9fdf1 in cDvdPlayer::Action (this=0xa44ced0) at player-dvd.c:730
> #13 0x0814de6e in cThread::StartThread (Thread=0xa44cedc) at thread.c:255
> #14 0xb7f1a192 in start_thread (arg=0xb18f6b90) at pthread_create.c:296
> #15 0xb7cd902e in clone () from /lib/libc.so.6

In frame #9 of VDR's main thread, mutexCurrentAudioTrack get's 
locked, then in frame #8, cDvbPlayer's thread mutex is to be 
aquired (LOCK_THREAD).

In frame #12 vdr-dvd's DvdPlayer thread locked it's mutex 
(LOCK_THREAD), then in frame #9, mutexCurrentAudioTrack is to be 
aquired.

As both threads lock the same mutexes in opposite order a 
deadlock occurs.

As I'm not used to vdr-dvd development, I would be glad if 
someone could provide a fix for this issue.

Bye.
-- 
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl@xxxxxx

_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux