deadlock in oxide after invoking some (unrelated)c++/qt functions

Bug #1347924 reported by Maxim Ermilov on 2014-07-23
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
Critical
Chris Coulson
1.1
Critical
Chris Coulson

Bug Description

attachment contains simple reproduction app

Maxim Ermilov (zaspire) wrote :
  • test Edit (1016 bytes, application/octet-stream)
Chris Coulson (chrisccoulson) wrote :
Download full text (4.3 KiB)

The main thread blocks here:

#0 0x00007f55aeb54d09 in __pselect (nfds=102, readfds=0x7fff0ddd7a00, writefds=0x7fff0ddd7a80, exceptfds=0x0, timeout=<optimised out>, sigmask=<optimised out>)
    at ../sysdeps/unix/sysv/linux/pselect.c:77
#1 0x00007f55af5f301a in qt_safe_select (nfds=102, fdread=0x7fff0ddd7a00, fdwrite=0x7fff0ddd7a80, fdexcept=fdexcept@entry=0x0, orig_timeout=orig_timeout@entry=0x7fff0ddd79a0)
    at kernel/qcore_unix.cpp:90
#2 0x00007f55af550f9c in select_msecs (nfds=<optimised out>, fdread=<optimised out>, fdwrite=<optimised out>, timeout=<optimised out>) at io/qprocess_unix.cpp:1053
#3 0x00007f55af55296a in QProcessPrivate::waitForFinished (this=this@entry=0xec1b20, msecs=msecs@entry=30000) at io/qprocess_unix.cpp:1315
#4 0x00007f55af4fc162 in QProcess::waitForFinished (this=this@entry=0x7fff0ddd7c60, msecs=msecs@entry=30000) at io/qprocess.cpp:1831
#5 0x00007f55af503b0e in QProcess::~QProcess (this=0x7fff0ddd7c60, __in_chrg=<optimised out>) at io/qprocess.cpp:1193
#6 0x00007f55b004206e in ?? () from /usr/lib/x86_64-linux-gnu/libQt5SystemInfo.so.5
#7 0x00007f55b003fd0d in QDeviceInfo::productName() const () from /usr/lib/x86_64-linux-gnu/libQt5SystemInfo.so.5
#8 0x00000000004022e4 in main::{lambda()#1}::operator()() const ()
#9 0x0000000000402a79 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main::{lambda()#1}>::call({lambda()#1}, void**) ()
#10 0x0000000000402a5b in void QtPrivate::Functor<main::{lambda()#1}, 0>::call<QtPrivate::List<>, void>({lambda()#1}&, void*, {lambda()#1}&*) ()
#11 0x0000000000402a23 in QtPrivate::QFunctorSlotObject<main::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) ()
#12 0x00007f55af5d0d73 in call (a=0x7fff0ddd7f30, r=0x1096020, this=0x1078890) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:132
#13 QMetaObject::activate (sender=sender@entry=0x1096020, signalOffset=<optimised out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3561
#14 0x00007f55af5d17d7 in QMetaObject::activate (sender=sender@entry=0x1096020, m=m@entry=0x7f55af9e3940 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0,
    argv=argv@entry=0x0) at kernel/qobject.cpp:3444
#15 0x00007f55af63d700 in QTimer::timeout (this=this@entry=0x1096020) at .moc/moc_qtimer.cpp:189
#16 0x00007f55af5dd622 in QTimer::timerEvent (this=0x1096020, e=<optimised out>) at kernel/qtimer.cpp:255
#17 0x00007f55af5d2054 in QObject::event (this=0x1096020, e=<optimised out>) at kernel/qobject.cpp:1128
#18 0x00007f55b093ec8c in QApplicationPrivate::notify_helper (this=this@entry=0xd07350, receiver=receiver@entry=0x1096020, e=e@entry=0x7fff0ddd8340) at kernel/qapplication.cpp:3486
#19 0x00007f55b0943e56 in QApplication::notify (this=0x7fff0ddd8600, receiver=0x1096020, e=0x7fff0ddd8340) at kernel/qapplication.cpp:3236
#20 0x00007f55af5a9c2d in QCoreApplication::notifyInternal (this=0x7fff0ddd8600, receiver=0x1096020, event=0x7fff0ddd8340) at kernel/qcoreapplication.cpp:881
#21 0x00007f55af5f61ad in sendEvent (event=<optimised out>, receiver=<optimised out>) at ../../include/QtCore/.....

Read more...

Chris Coulson (chrisccoulson) wrote :

Ok, this is because we clear the SIGCHLD handler when starting Oxide

Changed in oxide:
importance: Undecided → Critical
status: New → Triaged
milestone: none → branch-1.2
assignee: nobody → Chris Coulson (chrisccoulson)
Chris Coulson (chrisccoulson) wrote :
Changed in oxide:
status: Triaged → Fix Released
Chris Coulson (chrisccoulson) wrote :

As we're switching over to trunk in utopic and this particular issue hasn't yet been reported in trusty, I'm going to wontfix this for the 1.1 branch - the change is quite a risky one

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments