| Summary: | discover crashes everytime | ||
|---|---|---|---|
| Product: | [Applications] Discover | Reporter: | dahunt <paddison12> |
| Component: | PackageKit | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED DOWNSTREAM | ||
| Severity: | crash | CC: | aleixpol, nate, yurapostates |
| Priority: | NOR | ||
| Version First Reported In: | 5.27.2 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: |
gdb backtrace
New crash information added by DrKonqi |
||
|
Description
dahunt
2023-03-06 20:35:12 UTC
Pasting backtrace inline for searchability:
Thread 1 (Thread 0x7ffff1458b80 (LWP 12589) "plasma-discover"):
#0 0x00007ffff5acec4b in std::__atomic_base<QMutexData*>::compare_exchange_strong(QMutexData*&, QMutexData*, std::memory_order, std::memory_order) (__m2=std::memory_order_acquire, __m1=std::memory_order_acquire, __p2=0x1, __p1=<synthetic pointer>: 0x0, this=0x7fff00008031) at /usr/include/c++/11/bits/atomic_base.h:878
current = <optimized out>
#1 std::atomic<QMutexData*>::compare_exchange_strong(QMutexData*&, QMutexData*, std::memory_order, std::memory_order) (__m2=std::memory_order_acquire, __m1=std::memory_order_acquire, __p2=0x1, __p1=<synthetic pointer>: 0x0, this=0x7fff00008031) at /usr/include/c++/11/atomic:616
current = <optimized out>
#2 QAtomicOps<QMutexData*>::testAndSetAcquire<QMutexData*>(std::atomic<QMutexData*>&, QMutexData*, QMutexData*, QMutexData**) (currentValue=<synthetic pointer>, newValue=0x1, expectedValue=0x0, _q_value=<error reading variable: Cannot access memory at address 0x7fff00008031>) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:308
current = <optimized out>
#3 QBasicAtomicPointer<QMutexData>::testAndSetAcquire(QMutexData*, QMutexData*, QMutexData*&) (currentValue=<synthetic pointer>: <optimized out>, newValue=0x1, expectedValue=0x0, this=0x7fff00008031) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:273
current = <optimized out>
#4 QBasicMutex::fastTryLock(QMutexData*&) (current=<synthetic pointer>: <optimized out>, this=0x7fff00008031) at thread/qmutex.h:128
current = <optimized out>
#5 QMutex::lock() (this=this@entry=0x7fff00008031) at thread/qmutex.cpp:232
current = <optimized out>
#6 0x00007ffff5cbe03c in std::unique_lock<QMutex>::lock() (this=<synthetic pointer>) at /usr/include/c++/11/bits/unique_lock.h:131
locker = {threadData = 0x7fff00008001, locker = {_M_device = 0x0, _M_owns = false}}
threadData = @0x7fff740ca7b8: {<QBasicAtomicPointer<QThreadData>> = {_q_value = std::atomic<QThreadData *> = { 0x7fff00008001 }}, <No data fields>}
#7 std::unique_lock<QMutex>::unique_lock(QMutex&) (__m=..., this=<synthetic pointer>) at /usr/include/c++/11/bits/unique_lock.h:69
locker = {threadData = 0x7fff00008001, locker = {_M_device = 0x0, _M_owns = false}}
threadData = @0x7fff740ca7b8: {<QBasicAtomicPointer<QThreadData>> = {_q_value = std::atomic<QThreadData *> = { 0x7fff00008001 }}, <No data fields>}
#8 (anonymous namespace)::qt_unique_lock<QMutex> (mutex=...) at ../../include/QtCore/5.15.8/QtCore/private/../../../../../src/corelib/thread/qlocking_p.h:106
locker = {threadData = 0x7fff00008001, locker = {_M_device = 0x0, _M_owns = false}}
threadData = @0x7fff740ca7b8: {<QBasicAtomicPointer<QThreadData>> = {_q_value = std::atomic<QThreadData *> = { 0x7fff00008001 }}, <No data fields>}
#9 QCoreApplicationPrivate::lockThreadPostEventList(QObject*) (object=<optimized out>) at kernel/qcoreapplication.cpp:1500
locker = {threadData = 0x7fff00008001, locker = {_M_device = 0x0, _M_owns = false}}
threadData = @0x7fff740ca7b8: {<QBasicAtomicPointer<QThreadData>> = {_q_value = std::atomic<QThreadData *> = { 0x7fff00008001 }}, <No data fields>}
#10 0x00007ffff5cbf68d in QCoreApplication::postEvent(QObject*, QEvent*, int) (receiver=0x5555573c7480, event=0x55555c0baf10, priority=0) at kernel/qcoreapplication.cpp:1546
locker = {threadData = 0x7fff00008001, locker = {_M_device = 0x0, _M_owns = false}}
data = <optimized out>
eventDeleter = {d = <optimized out>}
dispatcher = <optimized out>
#11 0x00007fffd813bd64 in () at /usr/lib/x86_64-linux-gnu/qt5/plugins/discover/packagekit-backend.so
#12 0x00007fffd814011d in () at /usr/lib/x86_64-linux-gnu/qt5/plugins/discover/packagekit-backend.so
#13 0x00007ffff5ce9ade in QObject::event(QEvent*) (this=0x555555ec10f0, e=0x555559db9af0) at kernel/qobject.cpp:1347
mce = 0x555559db9af0
sender = {previous = 0x0, receiver = 0x555555ec10f0, sender = 0x0, signal = -1}
#14 0x00007ffff776c793 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff5cbc07a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555555ec10f0, event=0x555559db9af0) at kernel/qcoreapplication.cpp:1064
selfRequired = true
result = false
cbdata = {0x555555ec10f0, 0x555559db9af0, 0x7fffffffd41f}
d = <optimized out>
threadData = 0x5555555ebc00
scopeLevelCounter = {threadData = 0x5555555ebc00}
#16 0x00007ffff5cbf167 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x5555555ebc00) at kernel/qcoreapplication.cpp:1821
e = 0x555559db9af0
pe = <optimized out>
r = <optimized out>
relocker = {m_func = {__locker = @0x7fffffffd4a0}, m_invoke = true}
event_deleter = {d = 0x555559db9af0}
locker = {_M_device = 0x5555555ebc30, _M_owns = false}
startOffset = 0
i = @0x5555555ebc24: 3591
cleanup = {receiver = 0x0, event_type = 0, data = 0x5555555ebc00, exceptionCaught = true}
#17 0x00007ffff5d16487 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55555579a380) at kernel/qeventdispatcher_glib.cpp:277
source = 0x55555579a380
#18 0x00007ffff45c7d3b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff461c6c8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007ffff45c53e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007ffff5d15ad8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55555579ed50, flags=...) at kernel/qeventdispatcher_glib.cpp:423
d = 0x555555797e00
canWait = <optimized out>
savedFlags = {i = 0}
result = <optimized out>
#22 0x00007ffff5cba99b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd700, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
d = 0x555555d6aed0
threadData = <optimized out>
locker = {val = 93824992854376}
app = <optimized out>
#23 0x00007ffff5cc2f34 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
threadData = 0x5555555ebc00
eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff5f5c8c8 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff5e8c8c0 <qt_meta_stringdata_QObject>, data = 0x7ffff5e8c7a0 <qt_meta_data_QObject>, static_metacall = 0x7ffff5cf27d0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x555555d6aed0}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff5e8f860 <qt_meta_stringdata_Qt>, data = 0x7ffff5e8c9e0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7ffff5f54140 <QObject::staticMetaObject>}, stringdata = 0x7ffff5e87040 <qt_meta_stringdata_QEventLoop>, data = 0x7ffff5e86fe0 <qt_meta_data_QEventLoop>, static_metacall = 0x7ffff5cba6b0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
returnCode = <optimized out>
#24 0x000055555556dc63 in ()
#25 0x00007ffff5229d90 in __libc_start_call_main (main=main@entry=0x55555556d340, argc=argc@entry=1, argv=argv@entry=0x7fffffffd9e8) at ../sysdeps/nptl/libc_start_call_main.h:58
self = <optimized out>
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 5435406132488649264, 140737488345576, 93824992334656, 93824992605560, 140737354125376, -5435406131378439632, -5435392501412447696}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x5555555b3008, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 1432039432}}}
not_first_call = <optimized out>
#26 0x00007ffff5229e40 in __libc_start_main_impl (main=0x55555556d340, argc=1, argv=0x7fffffffd9e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd9d8) at ../csu/libc-start.c:392
#27 0x000055555556e6a5 in ()
Unfortunately the two lines we need debug symbols for don't have them:
> #11 0x00007fffd813bd64 in () at /usr/lib/x86_64-linux-gnu/qt5/plugins/discover/packagekit-backend.so
> #12 0x00007fffd814011d in () at /usr/lib/x86_64-linux-gnu/qt5/plugins/discover/packagekit-backend.so
Could you install debug symbols for Discover's PackageKit backend and get a new backtrace? Thanks a lot!
Created attachment 157098 [details]
New crash information added by DrKonqi
plasma-discover (5.27.2) using Qt 5.15.8
Here's my backtrace from similar crash. It happens literally everytime I launch Discover from the taskbar, yet for some reason when I launched Discover from the "Updates available" notification icon it didn't crash.
-- Backtrace (Reduced):
#6 0x00007f38ef4dfccb in std::__atomic_base<QMutexData*>::compare_exchange_strong(QMutexData*&, QMutexData*, std::memory_order, std::memory_order) (__m2=std::memory_order_acquire, __m1=std::memory_order_acquire, __p2=0x1, __p1=<synthetic pointer>: <optimized out>, this=0x2825042b48643854) at /usr/include/c++/12.2.1/atomic:623
#7 std::atomic<QMutexData*>::compare_exchange_strong(QMutexData*&, QMutexData*, std::memory_order, std::memory_order) (__p2=0x1, __m1=std::memory_order_acquire, __m2=std::memory_order_acquire, __p1=<synthetic pointer>: <optimized out>, this=0x2825042b48643854) at /usr/include/c++/12.2.1/atomic:625
#8 QAtomicOps<QMutexData*>::testAndSetAcquire<QMutexData*>(std::atomic<QMutexData*>&, QMutexData*, QMutexData*, QMutexData**) (currentValue=<synthetic pointer>, newValue=0x1, expectedValue=0x0, _q_value=<error reading variable: Cannot access memory at address 0x2825042b48643854>, _q_value=<optimized out>, expectedValue=<optimized out>, newValue=<optimized out>, currentValue=<optimized out>) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:308
#9 QBasicAtomicPointer<QMutexData>::testAndSetAcquire(QMutexData*, QMutexData*, QMutexData*&) (currentValue=<synthetic pointer>: <optimized out>, newValue=0x1, expectedValue=0x0, this=0x2825042b48643854) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:273
#10 QBasicMutex::fastTryLock(QMutexData*&) (current=<synthetic pointer>: <optimized out>, this=0x2825042b48643854) at thread/qmutex.h:128
Hmmm there must have been a fix recently? it seems to be working now :/? No more crash! Me too. Today I haven't been able to reproduce the bug. Not sure why, maybe I updated something on my system yesterday that fixed the issue and the bug only existed because I didn't reboot. Looking at the pacman logs (Arch Linux) the only significant upgrade I did was systemd from 253.1-1 -> 253.1-2. The upgrade is described as "fix packaging of pkgconfig files" so maybe that caused the issue? https://github.com/archlinux/svntogit-packages/commit/05c3bbbbc81558d53cb4d57c9ab59ca688376726 Definitely could have. |