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? I'm on Linux, Qt 5.1.1 gcc _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development