Hello, i'm currently stress-testing a application at work and came across this problem. The application accepts connections and pushes the created sockets to a worker thread (moveToThread), the worker thread then handles the rest. But sometimes when the socket was already closed in the thread i get a SEGFAULT. It seems something in the mainthread tries to access the socket engine.
After debugging it i saw that in the backtrace QCoreApplication::sendEvent is used, instead of postEvent. Backtrace Mainloop (stops in qabstractsocket.cpp line 741): if (readSocketNotifierStateSet && socketEngine && --> readSocketNotifierState != socketEngine->isReadNotificationEnabled()) { socketEngine->setReadNotificationEnabled(readSocketNotifierState); readSocketNotifierStateSet = false; } return true; In the Thread backtrace you can see the thread is closed ------------------------ Backtrace Thread ------------------------------ Thread 17 (Thread 0x7f8fc0df3700 (LWP 5101)): #0 0x00007f8fe0d397fd in QLocalePrivate::plus (this=0x7f8f9c010260) at tools/qlocale_p.h:228 No locals. #1 0x00007f8fe0d363a0 in QLocalePrivate::unsLongLongToString (this=0x7f8f9c010260, l=15, precision=-1, base=10, width=-1, flags=0) at tools/qlocale.cpp:3036 No locals. #2 0x00007f8fe0ddc0af in QTextStreamPrivate::putNumber (this=0x7f8f9c0140e0, number=15, negative=false) at io/qtextstream.cpp:2220 flags = 0 dd = 0x7f8f9c010260 result = {static null = {<No data fields>}, d = 0x7f8fe0f5bd60 <QArrayData::shared_null>} numberFlags = {i = 0} base = 10 #3 0x00007f8fe0ddc5f0 in QTextStream::operator<< (this=0x7f8f9c012420, i=15) at io/qtextstream.cpp:2296 d = 0x7f8f9c0140e0 __PRETTY_FUNCTION__ = "QTextStream& QTextStream::operator<<(int)" #4 0x00007f8fe17463e3 in QDebug::operator<< (this=0x7f8fc0df1cd0, t=15) at /opt/Qt/5.1.1/include/QtCore/qdebug.h:107 No locals. #5 0x00007f8fe17564f3 in Tufao::tDebug () at /home/zbenjamin/workspace.work/tufao/src/threadedhttprequestdispatcher.cpp:284 t = 0xae1440 __PRETTY_FUNCTION__ = "QDebug Tufao::tDebug()" #6 0x00007f8fe175c819 in Tufao::WorkerThreadControl::onRequestClosed (this=0x7f8fc0df2d50) at /home/zbenjamin/workspace.work/tufao/src/priv/workerthreadcontrol.cpp:46 No locals. #7 0x00007f8fe175c5bd in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Tufao::WorkerThreadControl::*)()>::call(void (Tufao::WorkerThreadControl::*)(), Tufao::WorkerThreadControl*, void**) (f=(void (Tufao::WorkerThreadControl::*)(Tufao::WorkerThreadControl * const)) 0x7f8fe175c800 <Tufao::WorkerThreadControl::onRequestClosed()>, o=0x7f8fc0df2d50, arg=0x7f8fc0df1f30) at /opt/Qt/5.1.1/include/QtCore/qobjectdefs_impl.h:508 No locals. #8 0x00007f8fe175c550 in QtPrivate::FunctionPointer<void (Tufao::WorkerThreadControl::*)()>::call<QtPrivate::List<>, void>(void (Tufao::WorkerThreadControl::*)(), Tufao::WorkerThreadControl*, void**) (f=(void (Tufao::WorkerThreadControl::*)(Tufao::WorkerThreadControl * const)) 0x7f8fe175c800 <Tufao::WorkerThreadControl::onRequestClosed()>, o=0x7f8fc0df2d50, arg=0x7f8fc0df1f30) at /opt/Qt/5.1.1/include/QtCore/qobjectdefs_impl.h:527 No locals. #9 0x00007f8fe175c4bd in QtPrivate::QSlotObject<void (Tufao::WorkerThreadControl::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x7f8f9c0132c0, r=0x7f8fc0df2d50, a=0x7f8fc0df1f30, ret=0x0) at /opt/Qt/5.1.1/include/QtCore/qobject_impl.h:147 No locals. #10 0x00007f8fe0ecc69b in QtPrivate::QSlotObjectBase::call (this=0x7f8f9c0132c0, r=0x7f8fc0df2d50, a=0x7f8fc0df1f30) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:130 No locals. #11 0x00007f8fe0ec9a02 in QMetaObject::activate (sender=0xc48dd0, signalOffset=3, local_signal_index=3, argv=0x0) at kernel/qobject.cpp:3471 obj = {d = 0x7f8f9c0132c0} receiverInSameThread = true sw = {receiver = 0x7f8fc0df2d50, previousSender = 0x0, currentSender = {sender = 0xc48dd0, signal = 6, ref = 1}, switched = true} callFunction = 0x7f8f9c0132c0 receiver = 0x7f8fc0df2d50 method_relative = 0 c = 0x7f8f9c011680 last = 0x7f8f9c011680 locker = {val = 140255935355400} connectionLists = {connectionLists = 0x1144920} list = 0xeeb188 signal_index = 6 empty_argv = {0x0} currentThreadId = 0x7f8fc0df3700 __PRETTY_FUNCTION__ = "static void QMetaObject::activate(QObject*, int, int, void**)" #12 0x00007f8fe0ec934c in QMetaObject::activate (sender=0xc48dd0, m=0x7f8fe197e4a0 <Tufao::HttpServerRequest::staticMetaObject>, local_signal_index=3, argv=0x0) at kernel/qobject.cpp:3354 No locals. #13 0x00007f8fe175d6c9 in Tufao::HttpServerRequest::close (this=0xc48dd0) at /home/zbenjamin/workspace.work/tufao-build/src/moc_httpserverrequest.cpp:193 No locals. #14 0x00007f8fe175d39c in Tufao::HttpServerRequest::qt_static_metacall (_o=0xc48dd0, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7f8fc0df2120) at /home/zbenjamin/workspace.work/tufao-build/src/moc_httpserverrequest.cpp:93 _t = 0xc48dd0 #15 0x00007f8fe0ec9afb in QMetaObject::activate (sender=0x11010b0, signalOffset=7, local_signal_index=2, argv=0x0) at kernel/qobject.cpp:3479 receiverInSameThread = true sw = {receiver = 0xc48dd0, previousSender = 0x0, currentSender = {sender = 0x11010b0, signal = 9, ref = 1}, switched = true} callFunction = 0x7f8fe175d310 <Tufao::HttpServerRequest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)> receiver = 0xc48dd0 method_relative = 3 c = 0xdefea0 last = 0xe338e0 locker = {val = 140255935355448} connectionLists = {connectionLists = 0x113e4e0} list = 0xbf3858 signal_index = 9 empty_argv = {0x0} currentThreadId = 0x7f8fc0df3700 __PRETTY_FUNCTION__ = "static void QMetaObject::activate(QObject*, int, int, void**)" #16 0x00007f8fe0ec934c in QMetaObject::activate (sender=0x11010b0, m=0x7f8fe16cd1e0 <QAbstractSocket::staticMetaObject>, local_signal_index=2, argv=0x0) at kernel/qobject.cpp:3354 No locals. #17 0x00007f8fe142276d in QAbstractSocket::disconnected (this=0x11010b0) at .moc/debug-shared/moc_qabstractsocket.cpp:366 No locals. #18 0x00007f8fe1421c42 in QAbstractSocket::disconnectFromHost (this=0x11010b0) at socket/qabstractsocket.cpp:2700 d = 0xd30ab0 previousState = QAbstractSocket::ClosingState #19 0x00007f8fe141cce7 in QAbstractSocketPrivate::canReadNotification (this=0xd30ab0) at socket/qabstractsocket.cpp:701 q = 0x11010b0 rsncrollback = {varRef = @0xd30b88, oldValue = true} newBytes = 0 hasData = false #20 0x00007f8fe1420b8a in QAbstractSocket::waitForBytesWritten (this=0x11010b0, msecs=30000) at socket/qabstractsocket.cpp:2181 readyToRead = true readyToWrite = true d = 0xd30ab0 __PRETTY_FUNCTION__ = "virtual bool QAbstractSocket::waitForBytesWritten(int)" stopWatch = {t1 = 10161, t2 = 636117446} #21 0x00007f8fe173b359 in Tufao::HttpFileServer::serveFile (fileName=..., request=..., response=...) at /home/zbenjamin/workspace.work/tufao/src/httpfileserver.cpp:243 fileInfo = {d_ptr = {d = 0x7f8f9c012920}} file = {<QFileDevice> = {<QIODevice> = {<QObject> = {_vptr.QObject = 0x7f8fe133fc50 <vtable for QFile+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe1001520 <qt_meta_stringdata_QObject>, data = 0x7f8fe1001640 <qt_meta_data_QObject>, static_metacall = 0x7f8fe0ecbff4 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7f8f9c010cb0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe104e220 <qt_meta_stringdata_Qt>, data = 0x7f8fe1057c00 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133df20 <QObject::staticMetaObject>, stringdata = 0x7f8fe1061e40 <qt_meta_stringdata_QIODevice>, data = 0x7f8fe1061f40 <qt_meta_data_QIODevice>, static_metacall = 0x7f8fe0f4f7a0 <QIODevice::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133ff00 <QIODevice::staticMetaObject>, stringdata = 0x7f8fe1061d40 <qt_meta_stringdata_QFileDevice>, data = 0x7f8fe1061d80 <qt_meta_data_QFileDevice>, static_metacall = 0x7f8fe0f4f6b4 <QFileDevice::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133fd80 <QFileDevice::staticMetaObject>, stringdata = 0x7f8fe1061c60 <qt_meta_stringdata_QFile>, data = 0x7f8fe1061c80 <qt_meta_data_QFile>, static_metacall = 0x7f8fe0f4f5c8 <QFile::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} ranges = {{p = {static shared_null = {ref = {atomic = {_q_value = -1}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f8fe0f5e950 <QListData::shared_null>}, d = 0x7f8fe0f5e950 <QListData::shared_null>}} __PRETTY_FUNCTION__ = "static void Tufao::HttpFileServer::serveFile(const QString&, Tufao::HttpServerRequest&, Tufao::HttpServerResponse&)" #22 0x00007f8fe173d445 in Tufao::HttpFileServer::handleRequest (request=..., response=..., rootDir=...) at /home/zbenjamin/workspace.work/tufao/src/httpfileserver.cpp:373 fileName = {static null = {<No data fields>}, d = 0x7f8f9c00fbf0} #23 0x00007f8fe173c7b3 in Tufao::HttpFileServer::__lambda1::operator() (__closure=0x7f8f9c003530, request=..., response=...) at /home/zbenjamin/workspace.work/tufao/src/httpfileserver.cpp:347 dir = {static null = {<No data fields>}, d = 0xae18a0} #24 0x00007f8fe173ca0d in std::_Function_handler<bool(Tufao::HttpServerRequest&, Tufao::HttpServerResponse&), Tufao::HttpFileServer::handler(const QString&)::__lambda1>::_M_invoke(const std::_Any_data &, Tufao::HttpServerRequest &, Tufao::HttpServerResponse &) (__functor=..., __args#0=..., __args#1=...) at /usr/include/c++/4.8.1/functional:2057 No locals. #25 0x00007f8fe173f64f in std::function<bool (Tufao::HttpServerRequest&, Tufao::HttpServerResponse&)>::operator()(Tufao::HttpServerRequest&, Tufao::HttpServerResponse&) const (this=0x7f8f9c0034a8, __args#0=..., __args#1=...) at /usr/include/c++/4.8.1/functional:2468 No locals. #26 0x00007f8fe173e6e4 in Tufao::HttpServerRequestRouter::handleRequest (this=0x7f8f9c0013b0, request=..., response=...) at /home/zbenjamin/workspace.work/tufao/src/httpserverrequestrouter.cpp:96 args = {<QList<QString>> = {{p = {static shared_null = {ref = {atomic = {_q_value = -1}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f8fe0f5e950 <QListData::shared_null>}, d = 0x7f8fe0f5e950 <QListData::shared_null>}}, <No data fields>} backup = {d = {data = {c = 0 '\000', uc = 0 '\000', s = 0, sc = 0 '\000', us = 0, i = 0, u = 0, l = 0, ul = 0, b = false, d = 0, f = 0, real = 0, ll = 0, ull = 0, o = 0x0, ptr = 0x0, shared = 0x0}, type = 0, is_shared = 0, is_null = 1}} match = {d = {d = 0x7f8f9c015860}} mapping = @0x7f8f9c003498: {path = {d = {d = 0x7f8f9c003240}}, method = {d = 0x7f8fe0f5bd60 <QArrayData::shared_null>}, handler = {<std::_Maybe_unary_or_binary_function<bool, Tufao::HttpServerRequest&, Tufao::HttpServerResponse&>> = {<std::binary_function<Tufao::HttpServerRequest&, Tufao::HttpServerResponse&, bool>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f8f9c003530, _M_const_object = 0x7f8f9c003530, _M_function_pointer = 0x7f8f9c003530, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f8f9c003530}, _M_pod_data = "05\000\234\217\177\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x7f8fe173ca16 <std::_Function_base::_Base_manager<Tufao::HttpFileServer::handler(const QString&)::__lambda1>::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x7f8fe173c9be <std::_Function_handler<bool(Tufao::HttpServerRequest&, Tufao::HttpServerResponse&), Tufao::HttpFileServer::handler(const QString&)::__lambda1>::_M_invoke(const std::_Any_data &, Tufao::HttpServerRequest &, Tufao::HttpServerResponse &)>}} __for_range = @0x7f8f9c0013e0: {d = 0x7f8f9c003450} __for_begin = 0x7f8f9c003498 __for_end = 0x7f8f9c0034f8 path = {static null = {<No data fields>}, d = 0xde41c0} #27 0x00007f8fe175bb87 in Tufao::WorkerThread::run (this=0xae1440) at /home/zbenjamin/workspace.work/tufao/src/priv/workerthread.cpp:117 request = {wp = {d = 0x1151eb0, value = 0xc48dd0}} response = {wp = {d = 0x1064240, value = 0xe9e8a0}} handled = true customData = 0x7f8f9c0029a0 handler = 0x7f8f9c0013c0 controller = {<QObject> = {_vptr.QObject = 0x7f8fe197ec90 <vtable for Tufao::WorkerThreadControl+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe1001520 <qt_meta_stringdata_QObject>, data = 0x7f8fe1001640 <qt_meta_data_QObject>, static_metacall = 0x7f8fe0ecbff4 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7f8f9c0033d0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe104e220 <qt_meta_stringdata_Qt>, data = 0x7f8fe1057c00 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133df20 <QObject::staticMetaObject>, stringdata = 0x7f8fe1765be0 <qt_meta_stringdata_Tufao__WorkerThreadControl>, data = 0x7f8fe1765cc0 <qt_meta_data_Tufao__WorkerThreadControl>, static_metacall = 0x7f8fe175e550 <Tufao::WorkerThreadControl::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} __PRETTY_FUNCTION__ = "virtual void Tufao::WorkerThread::run()" #28 0x00007f8fe0c99cec in QThreadPrivate::start (arg=0xae1440) at thread/qthread_unix.cpp:345 __clframe = {__cancel_routine = 0x7f8fe0c99d80 <QThreadPrivate::finish(void*)>, __cancel_arg = 0xae1440, __do_it = 1, __cancel_type = 0} thr = 0xae1440 data = 0xae1600 objectName = {static null = {<No data fields>}, d = 0x7f8fe0f5bd60 <QArrayData::shared_null>} #29 0x00007f8fe09e20a2 in start_thread () from /usr/lib/libpthread.so.0 No symbol table info available. #30 0x00007f8fdfef7a2d in clone () from /usr/lib/libc.so.6 No symbol table info available. In the main backtrace the receiver is accessed, but it belongs to another thread: ------------------------------------ Backtrace MAIN ------------------- Thread 1 (Thread 0x7f8fe1b5c740 (LWP 5077)): #0 0x00007f8fe1002050 in typeinfo name for QObjectPrivate () from /opt/Qt/5.1.1/lib/libQt5Core.so.5 No symbol table info available. #1 0x00007f8fe141cf33 in QAbstractSocketPrivate::canReadNotification (this=0xd30ab0) at socket/qabstractsocket.cpp:741 q = 0x11010b0 rsncrollback = {varRef = @0xd30b88, oldValue = false} newBytes = 76 hasData = true #2 0x00007f8fe1422e66 in QAbstractSocketPrivate::readNotification (this=0xd30ab0) at socket/qabstractsocket_p.h:77 No locals. #3 0x00007f8fe140ece5 in QAbstractSocketEngine::readNotification (this=0x15a25d0) at socket/qabstractsocketengine.cpp:156 receiver = 0xd30b80 #4 0x00007f8fe142b294 in QReadNotifier::event (this=0x15a25f0, e=0x7fff2d1ecce0) at socket/qnativesocketengine.cpp:1147 No locals. #5 0x00007f8fe0e8a18c in QCoreApplicationPrivate::notify_helper (this=0xad7ae0, receiver=0x15a25f0, event=0x7fff2d1ecce0) at kernel/qcoreapplication.cpp:984 No locals. #6 0x00007f8fe0e89e4e in QCoreApplication::notify (this=0x7fff2d1ed070, receiver=0x15a25f0, event=0x7fff2d1ecce0) at kernel/qcoreapplication.cpp:929 d = 0xad7ae0 __PRETTY_FUNCTION__ = "virtual bool QCoreApplication::notify(QObject*, QEvent*)" #7 0x00007f8fe0e89d56 in QCoreApplication::notifyInternal (this=0x7fff2d1ed070, receiver=0x15a25f0, event=0x7fff2d1ecce0) at kernel/qcoreapplication.cpp:867 threadData = 0xad7ba0 loopLevelCounter = {threadData = 0xad7ba0} result = false cbdata = {0x15a25f0, 0x7fff2d1ecce0, 0x7fff2d1ecc6f} d = 0xf67e80 #8 0x00007f8fe0e8d8bb in QCoreApplication::sendEvent (receiver=0x15a25f0, event=0x7fff2d1ecce0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:232 No locals. #9 0x00007f8fe0ef94b0 in socketNotifierSourceDispatch (source=0xada340) at kernel/qeventdispatcher_glib.cpp:109 p = 0x15a24e0 i = 54 event = {_vptr.QEvent = 0x7f8fe133ddf0 <vtable for QEvent+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe10649a0 <qt_meta_stringdata_QEvent>, data = 0x7f8fe1066320 <qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 50, posted = 0, spont = 0, m_accept = 1, reserved = 33} src = 0xada340 #10 0x00007f8fdeb6cd96 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 No symbol table info available. #11 0x00007f8fdeb6d0e8 in ?? () from /usr/lib/libglib-2.0.so.0 No symbol table info available. #12 0x00007f8fdeb6d18c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 No symbol table info available. #13 0x00007f8fe0efa163 in QEventDispatcherGlib::processEvents (this=0xad8df0, flags=...) at kernel/qeventdispatcher_glib.cpp:426 d = 0xad8e10 canWait = true savedFlags = {i = 0} result = false #14 0x00007f8fe0e86ab6 in QEventLoop::processEvents (this=0x7fff2d1ecf80, flags=...) at kernel/qeventloop.cpp:136 d = 0xb081b0 #15 0x00007f8fe0e86d99 in QEventLoop::exec (this=0x7fff2d1ecf80, flags=...) at kernel/qeventloop.cpp:212 locker = {val = 11369632} __PRETTY_FUNCTION__ = "int QEventLoop::exec(QEventLoop::ProcessEventsFlags)" ref = {d = 0xb081b0, locker = @0x7fff2d1ecf00, exceptionCaught = true} app = 0x7fff2d1ed070 d = 0xb081b0 #16 0x00007f8fe0e8a432 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1120 threadData = 0xad7ba0 __PRETTY_FUNCTION__ = "static int QCoreApplication::exec()" eventLoop = {<QObject> = {_vptr.QObject = 0x7f8fe1341670 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe1001520 <qt_meta_stringdata_QObject>, data = 0x7f8fe1001640 <qt_meta_data_QObject>, static_metacall = 0x7f8fe0ecbff4 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0xb081b0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe104e220 <qt_meta_stringdata_Qt>, data = 0x7f8fe1057c00 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133df20 <QObject::staticMetaObject>, stringdata = 0x7f8fe10644a0 <qt_meta_stringdata_QEventLoop>, data = 0x7f8fe1064500 <qt_meta_data_QEventLoop>, static_metacall = 0x7f8fe0f52aa0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = 32655 #17 0x00000000004036a4 in main (argc=1, argv=0x7fff2d1ed1e8) at ../../../src/server/main.cpp:85 a = {<QObject> = {_vptr.QObject = 0x7f8fe1341750 <vtable for QCoreApplication+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe1001520 <qt_meta_stringdata_QObject>, data = 0x7f8fe1001640 <qt_meta_data_QObject>, static_metacall = 0x7f8fe0ecbff4 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0xad7ae0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe104e220 <qt_meta_stringdata_Qt>, data = 0x7f8fe1057c00 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133df20 <QObject::staticMetaObject>, stringdata = 0x7f8fe1064620 <qt_meta_stringdata_QCoreApplication>, data = 0x7f8fe1064840 <qt_meta_data_QCoreApplication>, static_metacall = 0x7f8fe0f52bf8 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fff2d1ed070} server = {<QObject> = {_vptr.QObject = 0x7f8fe197f190 <vtable for Tufao::HttpServer+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe1001520 <qt_meta_stringdata_QObject>, data = 0x7f8fe1001640 <qt_meta_data_QObject>, static_metacall = 0x7f8fe0ecbff4 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0xadb6e0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe104e220 <qt_meta_stringdata_Qt>, data = 0x7f8fe1057c00 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f8fe133df20 <QObject::staticMetaObject>, stringdata = 0x7f8fe1764b80 <qt_meta_stringdata_Tufao__HttpServer>, data = 0x7f8fe1764d80 <qt_meta_data_Tufao__HttpServer>, static_metacall = 0x7f8fe175d06e <Tufao::HttpServer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, priv = 0xadb760} pServer = {<Tufao::ThreadedHttpRequestDispatcher> = {<QObject> = {_vptr.QObject = 0x7f8fe197ea50 <vtable for Tufao::ThreadedHttpPluginServer+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe1001520 <qt_meta_stringdata_QObject>, data = 0x7f8fe1001640 <qt_meta_data_QObject>, static_metacall = 0x7f8fe0ecbff4 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0xadc1f0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f8fe104e220 <qt_meta_stringdata_Qt>, data = 0x7f8fe1057c00 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, <Tufao::AbstractHttpServerRequestHandler> = {_vptr.AbstractHttpServerRequestHandler = 0x7f8fe197ead0 <vtable for Tufao::ThreadedHttpPluginServer+144>}, static staticMetaObject = {d = {superdata = 0x7f8fe133df20 <QObject::staticMetaObject>, stringdata = 0x7f8fe1765fa0 <qt_meta_stringdata_Tufao__ThreadedHttpRequestDispatcher>, data = 0x7f8fe1766100 <qt_meta_data_Tufao__ThreadedHttpRequestDispatcher>, static_metacall = 0x7f8fe175ea76 <Tufao::ThreadedHttpRequestDispatcher::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, priv = 0xadbaa0}, static staticMetaObject = {d = {superdata = 0x7f8fe197e7a0 <Tufao::ThreadedHttpRequestDispatcher::staticMetaObject>, stringdata = 0x7f8fe1765ec0 <qt_meta_stringdata_Tufao__ThreadedHttpPluginServer>, data = 0x7f8fe1765f40 <qt_meta_data_Tufao__ThreadedHttpPluginServer>, static_metacall = 0x7f8fe175e912 <Tufao::ThreadedHttpPluginServer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} ------------------------------------------------------------------------------ Thats where the problem might be: static gboolean socketNotifierSourceDispatch(GSource *source, GSourceFunc, gpointer) { QEvent event(QEvent::SockAct); GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source); for (int i = 0; i < src->pollfds.count(); ++i) { GPollFDWithQSocketNotifier *p = src->pollfds.at(i); if ((p->pollfd.revents & p->pollfd.events) != 0) QCoreApplication::sendEvent(p->socketNotifier, &event); } return true; // ??? don't remove, right? } sendEvent is used, but the receiver is in another thread, shouldn't it use postEvent or better shouldn't the threads eventloop do this stuff? As a note: the threads eventloop is not running when the crash occurs, maybe thats related to it somehow? Is the QObject only moved competely to the thread when its eventloop was started? I'm on Linux, Qt 5.1.1 gcc _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest