Bug 382445 - When I close chromium, the process takes 100% CPU
Summary: When I close chromium, the process takes 100% CPU
Status: RESOLVED FIXED
Alias: None
Product: plasma-browser-integration
Classification: Plasma
Component: Chrome (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR major
Target Milestone: ---
Assignee: Kai Uwe Broulik
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-07-18 01:21 UTC by Aleix Pol
Modified: 2017-07-18 08:36 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Aleix Pol 2017-07-18 01:21:43 UTC
It happens reproducibly, I attached to the process and the backtrace doesn't help much :(

(gdb)     thread apply all bt

Thread 3 (Thread 0x7fb15fb20700 (LWP 9954)):
#0  0x00007fb175675e9d in poll () from /usr/lib/libc.so.6
#1  0x00007fb16f253c09 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007fb16f253d1c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007fb1764c271f in QEventDispatcherGlib::processEvents (this=0x7fb1580008c0, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:423
#4  0x00007fb17646b26a in QEventLoop::exec (this=this@entry=0x7fb15fb1fd60, flags=..., flags@entry=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventloop.cpp:212
#5  0x00007fb1762908da in QThread::exec (this=this@entry=0x7fb178868da0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>)
    at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/thread/qthread.cpp:515
#6  0x00007fb1787f7565 in QDBusConnectionManager::run (this=0x7fb178868da0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>)
    at /home/apol/devel/frameworks/qt5/qtbase/src/dbus/qdbusconnection.cpp:178
#7  0x00007fb1762952ee in QThreadPrivate::start (arg=0x7fb178868da0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>)
    at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/thread/qthread_unix.cpp:368
#8  0x00007fb172c36049 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007fb17567ff0f in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7fb16922b700 (LWP 9952)):
#0  0x00007fb175675e9d in poll () from /usr/lib/libc.so.6
#1  0x00007fb17305c8e0 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007fb17305e679 in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007fb16b5cca59 in QXcbEventReader::run (this=0x55a37003a190) at /home/apol/devel/frameworks/qt5/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp:1322
#4  0x00007fb1762952ee in QThreadPrivate::start (arg=0x55a37003a190) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/thread/qthread_unix.cpp:368
#5  0x00007fb172c36049 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007fb17567ff0f in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7fb1786a6840 (LWP 9950)):
#0  0x00007fb175675e9d in poll () from /usr/lib/libc.so.6
#1  0x00007fb16f253c09 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007fb16f253d1c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007fb1764c271f in QEventDispatcherGlib::processEvents (this=0x55a3700711f0, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:423
#4  0x00007fb17646b26a in QEventLoop::exec (this=this@entry=0x7ffed9b817a0, flags=..., flags@entry=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventloop.cpp:212
#5  0x00007fb176473af4 in QCoreApplication::exec () at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1291
#6  0x000055a36fadcdf4 in main (argc=2, argv=0x7ffed9b81ac8) at /home/apol/devel/frameworks/plasma-browser-integration/host/main.cpp:164
Comment 1 Kai Uwe Broulik 2017-07-18 06:24:46 UTC
Are you running up-to-date master version? I had the same since updating to Chrome 59 but fixed that. It still goes crazy here when Chrome crashes instead of gracefully closing, though.
Comment 2 Fabian Vogt 2017-07-18 08:36:56 UTC
Git commit 4c2a3b16803677fe9a7f22e3cda7255cfd140815 by Fabian Vogt.
Committed on 18/07/2017 at 08:35.
Pushed by fvogt into branch 'master'.

Check for HUP/ERR/NVAL conditions on stdin

Summary:
While Qt's event loop checks for POLLHUP, it
treats it exactly like POLLIN and it's not possible
to retrieve that information from Qt. So in the
Connection read handler it needs to be checked for
again.

Test Plan:
Before this patch plasma-browser-integration-host
consumed 100% CPU after exiting the browser, 100% reproducible.
Now it quits gracefully.

Reviewers: #plasma, broulik, davidedmundson

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D6711

M  +19   -0    host/connection.cpp

https://commits.kde.org/plasma-browser-integration/4c2a3b16803677fe9a7f22e3cda7255cfd140815