Application: kwin_x11 (5.14.5) Qt Version: 5.12.0 Frameworks Version: 5.53.0 Operating System: Linux 4.19.12-1-ck x86_64 Distribution: "Arch Linux" -- Information about the crash: The script is below: ``` NUM=$(qdbus org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript /home/beojan/.local/share/plasmashell/minimize.js Minimize) qdbus org.kde.KWin /$NUM org.kde.kwin.Scripting.run qdbus org.kde.KWin /Scripting org.kde.kwin.Scripting.unloadScript Minimize ``` And the KWin script is: ``` workspace.activeClient.minimized = true; ``` The crash can be reproduced sometimes. -- Backtrace: Application: KWin (kwin_x11), signal: Segmentation fault Using host libthread_db library "/usr/lib/libthread_db.so.1". [Current thread is 1 (Thread 0x7f0463fe7840 (LWP 28362))] Thread 7 (Thread 0x7f04609ea700 (LWP 8746)): [KCrash Handler] #6 0x00007f046bc36b60 in QRingBuffer::chop(long long) () at /usr/lib/libQt5Core.so.5 #7 0x00007f046bcc45f2 in QIODevicePrivate::read(char*, long long, bool) () at /usr/lib/libQt5Core.so.5 #8 0x00007f046bcc51fe in QIODevice::readAll() () at /usr/lib/libQt5Core.so.5 #9 0x00007f046cfe105f in () at /usr/lib/libkwin.so.5 #10 0x00007f046cfe2341 in () at /usr/lib/libkwin.so.5 #11 0x00007f046bbc39a1 in () at /usr/lib/libQt5Core.so.5 #12 0x00007f046bbbf9cc in () at /usr/lib/libQt5Core.so.5 #13 0x00007f046a9a6a9d in start_thread () at /usr/lib/libpthread.so.0 #14 0x00007f046d22cb23 in clone () at /usr/lib/libc.so.6 Thread 6 (Thread 0x7f0445f38700 (LWP 28495)): #0 0x00007f046a9acafc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f046b6a928c in () at /usr/lib/libQt5Script.so.5 #2 0x00007f046b6a92a9 in () at /usr/lib/libQt5Script.so.5 #3 0x00007f046a9a6a9d in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f046d22cb23 in clone () at /usr/lib/libc.so.6 Thread 5 (Thread 0x7f0447fff700 (LWP 28493)): #0 0x00007f046a9acafc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f0458b80c24 in () at /usr/lib/dri/i965_dri.so #2 0x00007f0458b80948 in () at /usr/lib/dri/i965_dri.so #3 0x00007f046a9a6a9d in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f046d22cb23 in clone () at /usr/lib/libc.so.6 Thread 4 (Thread 0x7f045b4f0700 (LWP 28491)): #0 0x00007f046d221d16 in ppoll () at /usr/lib/libc.so.6 #1 0x00007f046bdcd46b in qt_safe_poll(pollfd*, unsigned long, timespec const*) () at /usr/lib/libQt5Core.so.5 #2 0x00007f046bdce94b in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #3 0x00007f046bd7a58c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #4 0x00007f046bbbe5c9 in QThread::exec() () at /usr/lib/libQt5Core.so.5 #5 0x00007f046a166b89 in () at /usr/lib/libQt5Qml.so.5 #6 0x00007f046bbbf9cc in () at /usr/lib/libQt5Core.so.5 #7 0x00007f046a9a6a9d in start_thread () at /usr/lib/libpthread.so.0 #8 0x00007f046d22cb23 in clone () at /usr/lib/libc.so.6 Thread 3 (Thread 0x7f04612ee700 (LWP 28413)): #0 0x00007f046d221d16 in ppoll () at /usr/lib/libc.so.6 #1 0x00007f046bdcd46b in qt_safe_poll(pollfd*, unsigned long, timespec const*) () at /usr/lib/libQt5Core.so.5 #2 0x00007f046bdce94b in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #3 0x00007f046bd7a58c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #4 0x00007f046bbbe5c9 in QThread::exec() () at /usr/lib/libQt5Core.so.5 #5 0x00007f0469bd3ba6 in () at /usr/lib/libQt5DBus.so.5 #6 0x00007f046bbbf9cc in () at /usr/lib/libQt5Core.so.5 #7 0x00007f046a9a6a9d in start_thread () at /usr/lib/libpthread.so.0 #8 0x00007f046d22cb23 in clone () at /usr/lib/libc.so.6 Thread 2 (Thread 0x7f046367b700 (LWP 28412)): #0 0x00007f046d221c21 in poll () at /usr/lib/libc.so.6 #1 0x00007f046bae3630 in () at /usr/lib/libxcb.so.1 #2 0x00007f046bae52db in xcb_wait_for_event () at /usr/lib/libxcb.so.1 #3 0x00007f0463b7196b in () at /usr/lib/libQt5XcbQpa.so.5 #4 0x00007f046bbbf9cc in () at /usr/lib/libQt5Core.so.5 #5 0x00007f046a9a6a9d in start_thread () at /usr/lib/libpthread.so.0 #6 0x00007f046d22cb23 in clone () at /usr/lib/libc.so.6 Thread 1 (Thread 0x7f0463fe7840 (LWP 28362)): #0 0x00007f046a9acafc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f046bae383b in () at /usr/lib/libxcb.so.1 #2 0x00007f046bae4fef in () at /usr/lib/libxcb.so.1 #3 0x00007f046bae5103 in xcb_wait_for_reply () at /usr/lib/libxcb.so.1 #4 0x00007f0460a97ea0 in KWin::X11Cursor::doGetPos() () at /usr/lib/qt/plugins/org.kde.kwin.platforms/KWinX11Platform.so #5 0x00007f046cef192a in KWin::Cursor::pos() () at /usr/lib/libkwin.so.5 #6 0x00007f046cf45ee0 in KWin::Screens::current() const () at /usr/lib/libkwin.so.5 #7 0x00007f046cf967f4 in KWin::Toplevel::isOnActiveScreen() const () at /usr/lib/libkwin.so.5 #8 0x00007f046cf5e2e0 in KWin::Workspace::takeActivity(KWin::AbstractClient*, QFlags<KWin::Workspace::ActivityFlag>) () at /usr/lib/libkwin.so.5 #9 0x00007f046cec5520 in KWin::Workspace::delayFocus() () at /usr/lib/libkwin.so.5 #10 0x00007f046bda628c in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5 #11 0x00007f046bdb2418 in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib/libQt5Core.so.5 #12 0x00007f046bda6b1b in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5 #13 0x00007f046c743e34 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5 #14 0x00007f046c74b671 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5 #15 0x00007f046bd7b8f9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5 #16 0x00007f046bdd0955 in QTimerInfoList::activateTimers() () at /usr/lib/libQt5Core.so.5 #17 0x00007f046bdcea9e in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #18 0x00007f0463b72d4f in () at /usr/lib/libQt5XcbQpa.so.5 #19 0x00007f046bd7a58c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #20 0x00007f046bd82896 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5 #21 0x00007f046d2feb26 in kdemain () at /usr/lib/libkdeinit5_kwin_x11.so #22 0x00007f046d155223 in __libc_start_main () at /usr/lib/libc.so.6 #23 0x000055c8e55ae05e in _start () [Inferior 1 (process 28362) detached] Possible duplicates by query: bug 383401. Reported using DrKonqi
Please attach /home/beojan/.local/share/plasmashell/minimize.js
oh, it was inline, sorry
Use of a thread isn't guarded properly. Marking as confirmed. Will fix.
Git commit ba7aecfe53d765e0f94626ed00010a40284b99c0 by David Edmundson. Committed on 09/01/2019 at 23:37. Pushed by davidedmundson into branch 'master'. [scripting] Avoid threading issues when loading from a file Summary: KWin::Script::loadScriptFromFile ran in it's own thread and accessed member variables of KWin::Script without any guards. Potentially script could be destroyed whilst the file is loading. Rather than adding mutexes everywhere, this patch scopes the QFile object to be local to the threaded function making it independent. Test Plan: Ran a script from a file Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18126 M +8 -8 scripting/scripting.cpp M +3 -6 scripting/scripting.h https://commits.kde.org/kwin/ba7aecfe53d765e0f94626ed00010a40284b99c0
Git commit 47be4be0209fd786b19c5066b96c8550a08c8746 by David Edmundson. Committed on 22/02/2019 at 14:40. Pushed by davidedmundson into branch 'master'. [scripting] Make DBus invokable run method return result after execution Summary: In 403038 the user expected the DBus call to run to finish before processing the next request. For a singleshot script that makes a lot of sense, otherwise you have no idea when it finishes. This also allows us to return errors. Test Plan: NUM=$(qdbus org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript /noFile.js Minimize) qdbus org.kde.KWin /$NUM org.kde.kwin.Scripting.run Error: org.kde.kwin.Scripting.FileError Could not open /noFile.js Running a real script behaved effectively the same as before. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18127 M +1 -0 autotests/CMakeLists.txt M +2 -0 autotests/tabbox/CMakeLists.txt M +20 -0 scripting/scripting.cpp M +5 -1 scripting/scripting.h https://commits.kde.org/kwin/47be4be0209fd786b19c5066b96c8550a08c8746