Actions
Bug #3440
openwtwithqt 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 about 10 years ago
- Status changed from New to InProgress
- Assignee set to Koen Deforche
- Target version set to 3.3.4
Updated by Koen Deforche about 10 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
Actions