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

Bug #1347924 reported by Maxim Ermilov
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
Fix Released
Critical
Chris Coulson
1.1
Won't Fix
Critical
Chris Coulson

Bug Description

attachment contains simple reproduction app

Revision history for this message
Maxim Ermilov (zaspire) wrote :
  • test Edit (1016 bytes, application/octet-stream)
Revision history for this message
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...

Revision history for this message
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)
Revision history for this message
Chris Coulson (chrisccoulson) wrote :
Changed in oxide:
status: Triaged → Fix Released
Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.