Bug #3440
wtwithqt crash and deadlock fix
Start date:
07/07/2014
Due date:
% Done:
0%
Estimated time:
Description
Hello!
I use wtwithqt with event loop.
I got following error message with wtwithqt when Wt session was dying:
QThread: Destroyed while thread is still running 127.0.0.1 - - [2014-Jul-07 04:42:23.207523] "POST /?wtd=768l3wTrCnOZQh0p HTTP/1.1" 200 248 qtinwt: /usr/include/boost/thread/pthread/pthread_mutex_scoped_lock.hpp:26: boost::pthread::pthread_mutex_scoped_lock::pthread_mutex_sco ped_lock(pthread_mutex_t*): Assertion `!pthread_mutex_lock(m)' failed. Program received signal SIGABRT, Aborted. [Switching to Thread 0x7fffaa982700 (LWP 11715)] 0x00007ffff2e863a9 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #0 0x00007ffff2e863a9 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff2e894c8 in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007ffff2e7f4c6 in __assert_fail_base () from /lib/x86_64-linux-gnu/libc.so.6 #3 0x00007ffff2e7f572 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6 #4 0x0000000000452691 in boost::pthread::pthread_mutex_scoped_lock::pthread_mutex_scoped_lock(pthread_mutex_t*) () #5 0x0000000000452b8f in boost::condition_variable_any::notify_one() () #6 0x0000000000451fb5 in Wt::DispatchThread::signalDone() () #7 0x0000000000451e4d in Wt::DispatchThread::run() () (DispatchThread.C, line 72) #8 0x00007ffff45f4d0b in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4 #9 0x00007ffff7bc8062 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #10 0x00007ffff2f36c1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
I propose the following patch for this:
WQApplication.C, add "thread_->wait();" before "delete thread_;".
This seems to work.
Updated by Koen Deforche over 8 years ago
- Status changed from New to InProgress
- Assignee set to Koen Deforche
- Target version set to 3.3.4
Updated by Koen Deforche over 8 years ago
- Status changed from InProgress to Feedback
I can't reproduce this issue. What version of Wt are you using?
My version already has 'thread*->wait()' before 'delete thread*' ?
The wtwithqt got some fixes in Wt 3.3.3