Linux Video Player Locking Up
#1
I locally build Kodi in order to do development of a PVR.

For a while now, I have been getting a consistent lockup in the video player in my Linux build.  This happens with the Leia branch, or with the current master branch.  This may have started when I updated from a previous version of Fedora, but I'm not positive about that.  This happens reliably with MPEG2 ts or h.264 MP4 (I haven't tried other stream types).  After selecting a video, there's about a 10 second delay before it starts playing, and then it plays for about 10 seconds, then freezes forever.

I'm building on Fedora 30 Workstation Edition, using rpmfusion to get the required non-free dev libraries, and using NVidia's video driver (also from rpmfusion).

There are three threads labelled VideoPlayer in the debugger.  Below are their traces (partial).  In addition, there are two threads "Vdpau Output" and "Vdpau Mixer" which are waiting on mutexes.

How can I determine what's causing this?  Would additional stack traces help?
 
Code:
#0 0x00007f62ba7b10a5 in __GI___nanosleep (requested_time=requested_time@entry=0x7f626d7f9220, remaining=remaining@entry=0x7f626d7f9220)
at ../sysdeps/unix/sysv/linux/nanosleep.c:28
28 return SYSCALL_CANCEL (nanosleep, requested_time, remaining);
(gdb) bt
#0 0x00007f62ba7b10a5 in __GI___nanosleep (requested_time=requested_time@entry=0x7f626d7f9220, remaining=remaining@entry=0x7f626d7f9220)
at ../sysdeps/unix/sysv/linux/nanosleep.c:28
#1 0x0000000000ec40b7 in std::this_thread::sleep_for<long, std::ratio<1l, 1000l> >(std::chrono::duration<long, std::ratio<1l, 1000l> > const&) (__rtime=...)
at /usr/include/c++/9/thread:378
#2 0x0000000000ec40b7 in CThread::Sleep(unsigned int) (this=this@entry=0x5c3a220, milliseconds=milliseconds@entry=10)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Thread.cpp:239
#3 0x0000000000c530ab in CVideoPlayer::Process() (this=0x5c3a1d0) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/cores/VideoPlayer/VideoPlayer.cpp:1402
 
Code:
#0 0x00007f62ba7ad77a in futex_abstimed_wait_cancelable (private=0, abstime=0x7f624a7fb1e0, expected=0, futex_word=0x551a85c)
at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1 0x00007f62ba7ad77a in __pthread_cond_wait_common (abstime=0x7f624a7fb1e0, mutex=0x5de7a40, cond=0x551a830) at pthread_cond_wait.c:539
#2 0x00007f62ba7ad77a in __pthread_cond_timedwait (cond=0x551a830, mutex=0x5de7a40, abstime=0x7f624a7fb1e0) at pthread_cond_wait.c:667
#3 0x0000000000c2da28 in __gthread_cond_timedwait (__abs_timeout=0x7f624a7fb1e0, __mutex=<optimized out>, __cond=0x551a830)
at /usr/include/c++/9/x86_64-redhat-linux/bits/gthr-default.h:872
#4 0x0000000000c2da28 in std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (__atime=..., __lock=..., this=0x551a830)
at /usr/include/c++/9/condition_variable:188
#5 0x0000000000c2da28 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (__atime=..., __lock=..., this=0x551a830)
at /usr/include/c++/9/condition_variable:108
#6 0x0000000000c2da28 in std::_V2::condition_variable_any::wait_until<XbmcThreads::CRecursiveMutex, std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(XbmcThreads::CRecursiveMutex&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (__atime=..., __lock=..., this=0x551a830) at /usr/include/c++/9/condition_variable:296
#7 0x0000000000c2da28 in std::_V2::condition_variable_any::wait_for<XbmcThreads::CRecursiveMutex, long, std::ratio<1l, 1000l> >(XbmcThreads::CRecursiveMutex&, std::chrono::duration<long, std::ratio<1l, 1000l> > const&) (__rtime=..., __lock=..., this=0x551a830) at /usr/include/c++/9/condition_variable:315
#8 0x0000000000c2da28 in XbmcThreads::ConditionVariable::wait(CCriticalSection&, unsigned long) (milliseconds=<optimized out>, lock=..., this=0x551a830)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Condition.h:46
#9 0x0000000000c2da28 in XbmcThreads::TightConditionVariable<bool volatile&>::wait<CCriticalSection>(CCriticalSection&, unsigned long)
(milliseconds=<optimized out>, lock=..., this=0x551a870) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Condition.h:99
#10 0x0000000000c2da28 in XbmcThreads::TightConditionVariable<bool volatile&>::wait<CCriticalSection>(CCriticalSection&, unsigned long)
(milliseconds=33, lock=..., this=0x551a870) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Condition.h:84
#11 0x0000000000c2da28 in CEvent::WaitMSec(unsigned int) (milliSeconds=33, this=0x551a7f0) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Event.h:79
#12 0x0000000000c2da28 in CDVDMessageQueue::Get(CDVDMsg**, unsigned int, int&)
(this=this@entry=0x551a7e8, pMsg=pMsg@entry=0x7f624a7fb288, iTimeoutInMilliSeconds=33, priority=@0x7f624a7fb274: 0)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/cores/VideoPlayer/DVDMessageQueue.cpp:210
#13 0x0000000000c83189 in CVideoPlayerVideo::GetMessage(CDVDMsg**, unsigned int, int&)
(priority=@0x7f624a7fb274: 0, iTimeoutInMilliSeconds=<optimized out>, pMsg=0x7f624a7fb288, this=0x551a530)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp:334
 
Code:
#0 0x00007f62ba7ab27c in __pthread_mutex_unlock_usercnt (mutex=mutex@entry=0x65bf208, decr=decr@entry=1) at pthread_mutex_unlock.c:40
#1 0x00007f62ba7ab37e in __GI___pthread_mutex_unlock (mutex=mutex@entry=0x65bf208) at pthread_mutex_unlock.c:356
#2 0x0000000000c2db7c in XbmcThreads::CRecursiveMutex::unlock() (this=0x65bf208) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/platform/RecursiveMutex.h:35
#3 0x0000000000c2db7c in XbmcThreads::CountingLockable<XbmcThreads::CRecursiveMutex>::unlock() (this=0x65bf208)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Lockables.h:51
#4 0x0000000000c2db7c in XbmcThreads::UniqueLock<CCriticalSection>::~UniqueLock() (this=<synthetic pointer>, __in_chrg=<optimized out>)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/Lockables.h:114
#5 0x0000000000c2db7c in CSingleLock::~CSingleLock() (this=<synthetic pointer>, __in_chrg=<optimized out>) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/threads/SingleLock.h:24
#6 0x0000000000c2db7c in CDVDMessageQueue::Get(CDVDMsg**, unsigned int, int&)
(this=this@entry=0x65bf140, pMsg=pMsg@entry=0x7f6295850da8, iTimeoutInMilliSeconds=0, priority=@0x7f6295850da4: 1)
at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/cores/VideoPlayer/DVDMessageQueue.cpp:163
#7 0x0000000000c3d905 in CVideoPlayerAudio::Process() (this=0x65bef10) at /home/matt/Dev/Kodi-Dev/xbmc/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp:253
Reply

Logout Mark Read Team Forum Stats Members Help
Video Player Locking Up0