warning: Can't open file /memfd:JSGCHeap:QtQml (deleted) during file-backed mapping note processing
warning: Can't open file /memfd:JSVMStack:QtQml (deleted) during file-backed mapping note processing
warning: Can't open file /dev/shm/0a649ef4-15b7-4dfc-b27c-7ff95fe095f5 (deleted) during file-backed mapping note processing
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/usr/bin/quickshell -n -p /usr/share/omarchy/shell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask = {__val = {0}}
ret = <optimized out>
#1 0x00007fc6f7c9a243 in __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:89
No locals.
#2 0x00007fc6f7c3e5d0 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
ret = <optimized out>
#3 0x000055d2e42e3389 in qs::crash::(anonymous namespace)::signalHandler (sig=11) at /usr/src/debug/quickshell/quickshell/src/crash/handler.cpp:93
set = {__val = {18446744067267100671, 0 <repeats 15 times>}}
coredumpPid = 0
exe = {_M_elems = "\204\320'\344\322U\000\000\204\340\v\000\000\000\000\000/usr/bin/quickshell", '\000' <repeats 4060 times>}
arg = {_M_elems = {0x0, 0x0}}
env = {_M_elems = {0x7fc6f7c3e6ef "", 0x7fc6f85f9f37 <Qt::endPropertyUpdateGroup()+695> "\377\321H\213\205\220\367\377\377H\203\370\avZH\213\225\230\367\377\377H\203\340\370H\211P\bH\213\215\230\367\377\377H\205\311\017\204@\377\377\377H\213\021\203\342\aH\t\302H\211\021\351/\377\377\377f.\017\037\204", 0x55d2e43c1e85 <operator()(bool, QByteArray const&) const+1829> "", 0x55d2e43bad25 <QtPrivate::QCallableObject<qs::hyprland::ipc::HyprlandIpc::makeRequest(const QByteArray&, const std::function<void(bool, QByteArray)>&)::<lambda()>::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *)+133> "0H\213E\320H\205\300t\032\360\203(\001u\024H\213}к\020", 0x7fc6f85eeff2 <doActivate<false>(QObject*, int, void**)+1474> "\bH\211\337\350e\367\356\377H\213E\250H\205\300\017\2048\376\377\377H\213@\bH\213U\240H\213@`H\211P\030\351#\376\377\377\017\037", 0x7fc6f85ef235 <doActivate<false>(QObject*, int, void**)+2053> "8\351\300\375\377\377\017\037D", 0x7fc6f8cc820f <QAbstractSocketPrivate::canReadNotification()+415> "", 0x7fc6f8cd4691 <QReadNotifier::event(QEvent*)+97> "\020\353\326\220ff.\017\037\204", 0x7fc6f85822b7 <QCoreApplication::notifyInternal2(QObject*, QEvent*)+343> "\320\351A\377\377\377\377\025\025\003P", 0x7fc6f889a1cf <socketNotifierSourceDispatch(GSource*, GSourceFunc, gpointer)+143> "\377H\213CxH\203\300\001H\211CxH;Cp|\314H\213]\360L\211\347\350\022E\317\377H\213E\350dH+\004%(", 0x7fc6faedcc75 <g_main_dispatch+421> "\324H\215\025t\025\r", 0x7fc6faedeed6 <g_main_context_iterate_unlocked+998> "\377\351\345\375\377\377\017\037@", 0x7fc6faedf054 <g_main_context_iteration+52> "\377H\211\337A\211\304g\350\257\317\002", 0x7fc6f8896f31 <QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+113> "", 0x7fc6f858f663 <QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+419> "`A\213\004$\205\300t\334L\211\357D\213\263\200", 0x7fc6f8586859 <QCoreApplication::exec()+185> "", 0x55d2e429c5f1 <qs::launch::launch(qs::launch::LaunchArgs const&, char**, QCoreApplication*)+6849> "", 0x55d2e428c01f <qs::launch::(anonymous namespace)::launchFromCommand(qs::launch::CommandState&, QCoreApplication*)+335> "", 0x55d2e4291cef <qs::launch::runCommand(int, char**, QCoreApplication*)+11471> "\377A\211\304\351R\370\377\377H\2155\353\2014", 0x55d2e427a490 <main(int, char**)+160> "", 0x7fc6f7c27780 <__libc_start_call_main+128> "\377\211\307\350\370\230\001", 0x7fc6f7c278b8 <__libc_start_main_impl+136> "\377L\2135\310\026\037", 0x55d2e427d084 <_start+36> "", 0x0 <repeats 1001 times>, 0x7fc6c9593f80 "\003", 0x0, 0x0, 0x0, 0x0, 0x40f6ffff <error: Cannot access memory at address 0x40f6ffff>, 0x7fff7fffffff <error: Cannot access memory at address 0x7fff7fffffff>, 0xfe00000000000000 <error: Cannot access memory at address 0xfe00000000000000>, 0x650075ffffffff <error: Cannot access memory at address 0x650075ffffffff>, 0x7fc6ea3c3f00 "\210\316\323\371\306\177", 0xffffffffffffffff "", 0x0 <repeats 14 times>, 0xbff0000000000000 <error: Cannot access memory at address 0xbff0000000000000>, 0xbff0000000000000 <error: Cannot access memory at address 0xbff0000000000000>, 0x67006500720000 <error: Cannot access memory at address 0x67006500720000>, 0x20006500740061 <error: Cannot access memory at address 0x20006500740061>, 0x700061006e0073 <error: Cannot access memory at address 0x700061006e0073>, 0x74006f00680073 <error: Cannot access memory at address 0x74006f00680073>, 0x200022002e0073 <error: Cannot access memory at address 0x200022002e0073>, 0x7d <error: Cannot access memory at address 0x7d>, 0x0, 0x7fc6fa541838 "\300\377\361\371\306\177", 0x7fc6c9450500 " \024T\372\306\177", 0x7fc6c94160e0 "X\353U\372\306\177", 0x0, 0x0, 0x0, 0x30 <error: Cannot access memory at address 0x30>, 0x0, 0x0, 0x7fc6ea3c4040 "", 0x0, 0x7fc6f3a13e60 "\200\226:\352\306\177", 0x7fc6c8dde360 "\001", 0x7fc6c9450528 "", 0x7fc6c95ff000 "\003", 0x0, 0x0, 0x0, 0x0, 0x40f6ffff <error: Cannot access memory at address 0x40f6ffff>, 0x7fff7fffffff <error: Cannot access memory at address 0x7fff7fffffff>, 0xfe00000000000000 <error: Cannot access memory at address 0xfe00000000000000>, 0x690077ffffffff <error: Cannot access memory at address 0x690077ffffffff>, 0x7fc6ea3c3f00 "\210\316\323\371\306\177", 0xffffffffffffffff "", 0x0 <repeats 14 times>, 0xbff0000000000000 <error: Cannot access memory at address 0xbff0000000000000>, 0xbff0000000000000 <error: Cannot access memory at address 0xbff0000000000000>, 0x76006500640000 <error: Cannot access memory at address 0x76006500640000>, 0x2d006900750020 <error: Cannot access memory at address 0x2d006900750020>, 0x76006500720070 <error: Cannot access memory at address 0x76006500720070>, 0x29007700650069 <error: Cannot access memory at address 0x29007700650069>, 0x2c0022002e <error: Cannot access memory at address 0x2c0022002e>, 0x0, 0x0, 0x7fc6fa541838 "\300\377\361\371\306\177", 0x7fc6c9450a40 " \024T\372\306\177", 0x7fc6c9329820 "X\353U\372\306\177", 0x0, 0x0, 0x0, 0x30 <error: Cannot access memory at address 0x30>, 0x0, 0x0, 0x7fc6ea3c4040 "", 0x0, 0x7fc6f3a13e60 "\200\226:\352\306\177", 0x7fc6c8dde000 "\001", 0x7fc6c9450a68 "", 0x7fc6c95ff060 "\003", 0x0, 0x0, 0x0, 0x0, 0x40f6ffff <error: Cannot access memory at address 0x40f6ffff>, 0x7fff7fffffff <error: Cannot access memory at address 0x7fff7fffffff>, 0xfe00000000000000 <error: Cannot access memory at address 0xfe00000000000000>, 0x20002cffffffff <error: Cannot access memory at address 0x20002cffffffff>, 0x7fc6ea3c3f00 "\210\316\323\371\306\177", 0xffffffffffffffff "", 0x0 <repeats 14 times>, 0xbff0000000000000 <error: Cannot access memory at address 0xbff0000000000000>, 0xbff0000000000000 <error: Cannot access memory at address 0xbff0000000000000>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fc6de094980 "\200\n\340\335\306\177", 0x7fc6de0948c0 "\200\n\340\335\306\177", 0x7fc6de094780 "\200\n\340\335\306\177", 0x7fc6de094680 "\200\n\340\335\306\177", 0x7fc6de093f80 "\200\n\340\335\306\177", 0x7fc6de093e00 "\200\n\340\335\306\177", 0x7fc6de093d40 "\200\n\340\335\306\177", 0x7fc6de093ac0 "\200\n\340\335\306\177", 0x7fc6de093a00 "\200\n\340\335\306\177", 0x7fc6de093640 "\200\n\340\335\306\177", 0x7fc6de0933c0 "\200\n\340\335\306\177", 0x7fc6de092d00 "\200\n\340\335\306\177", 0x7fc6de092ac0 "\200\n\340\335\306\177", 0x7fc6de092a40 "\200\n\340\335\306\177", 0x7fc6de092980 "\200\n\340\335\306\177", 0x7fc6de092900 "\200\n\340\335\306\177", 0x7fc6de092880 "\200\n\340\335\306\177", 0x7fc6de092320 "\200\n\340\335\306\177", 0x7fc6de091a60 "\200\n\340\335\306\177", 0x7fc6de091820 "\200\n\340\335\306\177", 0x7fc6de0917a0 "\200\n\340\335\306\177", 0x7fc6de0916e0 "\200\n\340\335\306\177", 0x7fc6de091660 "\200\n\340\335\306\177", 0x7fc6de0915e0 "\200\n\340\335\306\177", 0x7fc6de0913e0 "\200\n\340\335\306\177", 0x7fc6de091320 "\200\n\340\335\306\177", 0x7fc6de0911e0 "\200\n\340\335\306\177", 0x7fc6de090e00 "\200\n\340\335\306\177", 0x7fc6de090d80 "\200\n\340\335\306\177", 0x7fc6de090d00 "\200\n\340\335\306\177", 0x7fc6de090c80 "\200\n\340\335\306\177", 0x7fc6de090c00 "\200\n\340\335\306\177", 0x7fc6de0909c0 "\200\n\340\335\306\177", 0x7fc6de090780 "\200\n\340\335\306\177", 0x7fc6de090700 "\200\n\340\335\306\177", 0x7fc6de0905c0 "\200\n\340\335\306\177", 0x7fc6de090540 "\200\n\340\335\306\177", 0x7fc6de090400 "\200\n\340\335\306\177", 0x7fc6de08fd80 "\200\n\340\335\306\177", 0x7fc6de08fa60 "\200\n\340\335\306\177", 0x7fc6de08ec60 "\200\n\340\335\306\177", 0x7fc6de08ebe0 "\200\n\340\335\306\177", 0x7fc6de08ea80 "\200\n\340\335\306\177", 0x7fc6de08e960 "\200\n\340\335\306\177", 0x7fc6de08e8e0 "\200\n\340\335\306\177", 0x7fc6de08e860 "\200\n\340\335\306\177", 0x7fc6de08e7e0 "\200\n\340\335\306\177", 0x7fc6de08e720 "\200\n\340\335\306\177", 0x55d2e47444b8 <vtable for QQmlPrivate::QQmlElement<Process>+16> "\220\3353\344\322U"...}}
envi = 0
infoFdStr = {_M_elems = '\000' <repeats 47 times>}
corePidStr = {_M_elems = '\000' <repeats 47 times>}
sigStr = {_M_elems = '\000' <repeats 47 times>}
populateEnv = <optimized out>
pid = <optimized out>
#4 <signal handler called>
No locals.
#5 0x00007fc6f85f9f37 in QPropertyObserverPointer::notify (this=<synthetic pointer>, propertyDataPtr=0x7fc6c940fba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qproperty_p.h:944
handlerToCall = <optimized out>
protector = {m_placeHolder = {next = {d = 2}, prev = {d = 0x7fc6c5c40280}, {binding = 0x0, changeHandler = 0x0, aliasData = 0x0}}}
next = <optimized out>
observer = 0x7fc6c5c40280
#6 QPropertyDelayedNotifications::notify (this=<optimized out>, index=2) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qproperty.cpp:167
delayed = 0x7fc6c6bd5048
observer = <optimized out>
#7 Qt::endPropertyUpdateGroup () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qproperty.cpp:292
i = 2
status = <optimized out>
groupUpdateData = <optimized out>
data = 0x7fc6c6bd5000
bindingObservers = {<QVLABase<QPropertyBindingPrivatePtr>> = {<QVLABaseBase> = {a = 256, s = 1, ptr = 0x7fffa4464b48}, <No data fields>}, <QVLAStorage<8, 8, 256>> = {array = " \024\267\310\306\177\000\000", '\376' <repeats 2040 times>}, <No data fields>}
start = <optimized out>
#8 0x000055d2e43c1e86 in qs::hyprland::ipc::HyprlandToplevel::updateFromObject (this=0x7fc6c940fb40, object=...) at /usr/src/debug/quickshell/quickshell/src/wayland/hyprland/ipc/hyprland_toplevel.cpp:86
addressStr = {d = {d = 0x7fc6c50a9630, ptr = 0x7fc6c50a9640 u"0x55d3ba451730", size = 14}}
title = {d = {d = 0x7fc6c5c449c0, ptr = 0x7fc6c5c449d0 u"<window title redacted>", size = 19}}
ok = true
address = <optimized out>
workspaceMap = {d = {d = {ptr = 0x7fc6c5c44a00}}}
workspaceName = {d = {d = 0x7fc6c50cac60, ptr = 0x7fc6c50cac70 u"8", size = 1}}
workspace = <optimized out>
#9 operator() (__closure=0x7fc6ea18a3d8, success=<optimized out>, resp=...) at /usr/src/debug/quickshell/quickshell/src/wayland/hyprland/ipc/connection.cpp:736
ok = true
exists = <optimized out>
workspace = <optimized out>
object = {d = {d = {ptr = 0x7fc6c5d63140}}}
address = <optimized out>
toplevelsIter = <optimized out>
toplevel = 0x7fc6c940fb40
entry = {<QJsonValueConstRef> = {{a = 0x7fffa4465440, o = 0x7fffa4465440, d = 0x7fffa4465440}, is_object = 0, index = 6}, <No data fields>}
__for_range = @0x7fffa4465440: {a = {<QSharedDataPointerBase<QExplicitlySharedDataPointer, QCborContainerPrivate>> = {d = {ptr = 0x7fc6ea18a440}}, <No data fields>}}
__for_begin = <optimized out>
__for_end = <optimized out>
json = {a = {<QSharedDataPointerBase<QExplicitlySharedDataPointer, QCborContainerPrivate>> = {d = {ptr = 0x7fc6ea18a440}}, <No data fields>}}
mList = @0x7fc6e1be3e68: {<QListSpecialMethods<qs::hyprland::ipc::HyprlandToplevel*>> = {<QListSpecialMethodsBase<qs::hyprland::ipc::HyprlandToplevel*>> = {<No data fields>}, <No data fields>}, d = {d = 0x7fc6c957db00, ptr = 0x7fc6c957db10, size = 13}}
this = 0x7fc6e1be3d80
#10 0x000055d2e43bad26 in std::function<void(bool, QByteArray)>::operator() (this=0x7fc6ea18a3d8, __args#0=<optimized out>, __args#1=...) at /usr/include/c++/16/bits/std_function.h:581
No locals.
#11 operator() (__closure=0x7fc6ea18a3d0) at /usr/src/debug/quickshell/quickshell/src/wayland/hyprland/ipc/connection.cpp:180
response = {d = {d = 0x0, ptr = 0x0, size = 0}, static _empty = 0 '\000'}
callback = {<std::_Maybe_unary_or_binary_function<void, bool, QByteArray>> = {<std::binary_function<bool, QByteArray, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7fc6e1be3d80, _M_const_object = 0x7fc6e1be3d80, _M_function_pointer = 0x7fc6e1be3d80, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7fc6e1be3d80}, _M_pod_data = "\200=\276\341\306\177\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x55d2e43b8e40 <std::_Function_handler<void(bool, QByteArray), qs::hyprland::ipc::HyprlandIpc::refreshToplevels()::<lambda(bool, const QByteArray&)> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x55d2e43c24d0 <std::_Function_handler<void(bool, QByteArray), qs::hyprland::ipc::HyprlandIpc::refreshToplevels()::<lambda(bool, const QByteArray&)> >::_M_invoke(const std::_Any_data &, bool &&, QByteArray &&)>}
requestSocket = 0x7fc6e9b33a50
#12 operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:117
arg = <optimized out>
f = <optimized out>
#13 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, qs::hyprland::ipc::HyprlandIpc::makeRequest(const QByteArray&, const std::function<void(bool, QByteArray)>&)::<lambda()>::<lambda()> >::call(qs::hyprland::ipc::HyprlandIpc::makeRequest(const QByteArray&, const std::function<void(bool, QByteArray)>&)::<lambda()>::<lambda()>&, void**)::<lambda()> > (args=<optimized out>, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:66
No locals.
What caused the crash
Quickshell 0.3.1 segfaults during startup in
HyprlandToplevel::updateFromObject, while a third-party bar widget creates a QML binding onHyprland.toplevels.Because the crash handler re-execs, a single startup crash looks like a burst: five processes died in eight seconds, each roughly 1.5 s after launch, until one instance got through.
What the widget does: it is a bar widget (a custom QML module in the bar's layout) that, as it loads, evaluates a binding over every toplevel and reads
address,title,workspace.nameandlastIpcObjectfor each, plusHyprland.activeToplevel.Reproduction (on this machine, every time):
omarchy-shell, Quickshell-based).Hyprland.toplevelsas it loads.Controlled experiment, four to five shell restarts per row:
What the dying instance logged last, in every case:
Reading of the evidence (inference, not proof):
HyprlandToplevel::updateFromObjectwraps its updates inQt::beginPropertyUpdateGroup()/Qt::endPropertyUpdateGroup(), andj/clientsparsing createsHyprlandToplevelobjects as it goes (connection.cpp, thej/clientscallback). A QML binding created against those toplevels while the parse is in flight appears to leave an observer that the group's finalQPropertyObserverPointer::notifythen walks into. Deferring all toplevel bindings past startup avoided it in five consecutive restarts.I could not reduce this to a standalone config. Two attempts, both running against the same live session with 9 windows and neither crashing once:
ShellRootthat bindsHyprland.toplevels(reading each toplevel'sworkspaceandlastIpcObject) after a delay, swept across 0/30/60/120/250/500/900 ms, three runs each — 21 runs, 0 crashes. At every non-zero delay the parse had already finished (windows read: 9).ShellRootwith a layer-shellPanelWindowthat callsHyprland.refreshToplevels()every 3 ms while creating, reading and destroying a toplevel-binding object every 5 ms — 6 runs, ~999 objects built per run, 0 crashes.So the trigger seems to need the real startup sequence (plugins loading into a bar during the shell's own first enumeration), not just concurrent parsing. Both attempts are attached below in case they are useful starting points.
Report file
Trimmed to the last 30 log lines before the crash, with paths, host name and third-party plugin names anonymized, per the warning in the issue template.
report.txt (trimmed, anonymized)
Configuration
The widget is public. The version that crashes is
bar/AgentPets.qmlat commit1849278; the same file after the workaround is atf1ad8fb. The binding itself lives indock/AgentSessions.qml:Model.windowListreadsaddress,pid,title,workspace.nameandlastIpcObjectfrom each toplevel.Failed standalone reproduction attempt 1
Failed standalone reproduction attempt 2
Backtrace
gdbwith debuginfod,bt -full(one window title redacted):bt -full
Versions