artsd hanging (deadlock ?)

Martin Koller m.koller at surfeu.at
Fri Jun 25 19:08:55 BST 2004


Hi list,

I submitted bug http://bugs.kde.org/show_bug.cgi?id=83976 and was told to 
contact you guys directly in the mailing list.
So here I am.

Additional info for this bug:

I see that thread 1 is waiting on thread 3

(gdb) frame 4
#4  0x409eb127 in aKode::FrameToStreamDecoder::halt (this=0x80da7e0) at 
frametostream_decoder.cpp:114
114         pthread_join(m_data->streamDecoder, 0);
Current language:  auto; currently c++
(gdb) list
109     }
110
111     void FrameToStreamDecoder::halt() {
112         m_data->halt = true;
113         m_data->buffer->flush();
114         pthread_join(m_data->streamDecoder, 0);
115     }
116
117     } // namespace
(gdb) p m_data
$1 = (aKode::FrameToStreamDecoder::private_data *) 0x8090aa8
(gdb) p *m_data
$2 = {buffer = 0x8129eb0, inDecoder = 0x80a8900, halt = false, seek_pos = -1, 
streamDecoder = 360450}

and thread 3 ...

(gdb) thread 3
[Switching to thread 3 (Thread 360450 (LWP 6327))]#0  0x4076abf1 in 
do_sigsuspend () from /lib/libc.so.6
(gdb) bt
#0  0x4076abf1 in do_sigsuspend () from /lib/libc.so.6
#1  0x4076acb9 in sigsuspend () from /lib/libc.so.6
#2  0x40609278 in __pthread_wait_for_restart_signal () 
from /lib/libpthread.so.0
#3  0x40605d18 in pthread_cond_wait at GLIBC_2.0 () from /lib/libpthread.so.0
#4  0x409ea4e8 in aKode::AudioBuffer::put (this=0x8129eb0, buf=0xbf7ffabc, 
blocking=true) at audiobuffer.h:67
#5  0x409ead2f in run_thread (arg=0x8090aa8) at frametostream_decoder.cpp:53
#6  0x40606ca3 in pthread_start_thread () from /lib/libpthread.so.0
#7  0x40822c97 in clone () from /lib/libc.so.6
(gdb) frame 4
#4  0x409ea4e8 in aKode::AudioBuffer::put (this=0x8129eb0, buf=0xbf7ffabc, 
blocking=true) at audiobuffer.h:67
67                      pthread_cond_wait(&not_full, &mutex);
(gdb) p mutex
$3 = {__m_reserved = 0, __m_count = 0, __m_owner = 0x0, __m_kind = 0, __m_lock 
= {__status = 0, __spinlock = 0}}
(gdb) list
62          bool put(AudioFrame* buf, bool blocking = true) {
63              pthread_mutex_lock(&mutex);
64              flushed = false;
65              if ((writePos+1) % length == readPos) {
66                  if (blocking) {
67                      pthread_cond_wait(&not_full, &mutex);
68                      if (flushed) goto fail;
69                  }
70                  else
71                      goto fail;
(gdb) p not_full
$4 = {__c_lock = {__status = 0, __spinlock = 0}, __c_waiting = 0xbf7ffbe0, 
__padding = '\0' <repeats 27 times>, __align = 0}


anything else I can help with ?

-- 
Best regards/Schöne Grüße

Martin    ()  ascii ribbon campaign - against html mail 
          /\                        - against microsoft attachments

       Some operating systems are called 'user friendly',
             Linux however is 'expert friendly'.



More information about the kde-multimedia mailing list