Skip to content

[Bug]: 打开Wayland窗口偶现崩溃 #546

@zzxyb

Description

@zzxyb

SUMMARY | 问题概要

#0  0x00007f24b78494fb in std::__atomic_base<int>::fetch_sub (__m=std::memory_order_acq_rel, __i=1, this=0x4418000000000000, this=<optimized out>, __i=<optimized out>, __m=<optimized out>)
    at /usr/include/c++/12/bits/atomic_base.h:644
#1  QAtomicOps<int>::deref<int> (_q_value=<error reading variable: Cannot access memory at address 0x4418000000000000>, _q_value=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qatomic_cxx11.h:266
#2  QBasicAtomicInteger<int>::deref (this=0x4418000000000000, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qbasicatomic.h:48
#3  QArrayData::deref (this=0x4418000000000000, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydata.h:66
#4  QArrayDataPointer<char16_t>::deref (this=0x5600fb399680) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydatapointer.h:439
#5  QArrayDataPointer<char16_t>::~QArrayDataPointer (this=0x5600fb399680, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydatapointer.h:108
#6  QString::~QString (this=0x5600fb399680, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:1330
#7  RequiredPropertyInfo::~RequiredPropertyInfo (this=0x5600fb399680, this=<optimized out>) at ./src/qml/qml/qqmlobjectcreator_p.h:48
#8  QHashPrivate::Node<RequiredPropertyKey, RequiredPropertyInfo>::~Node (this=0x5600fb399670, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qhash.h:71
#9  QHashPrivate::Span<QHashPrivate::Node<RequiredPropertyKey, RequiredPropertyInfo> >::freeData (this=0x5600f9e17798) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qhash.h:272
#10 QHashPrivate::Span<QHashPrivate::Node<RequiredPropertyKey, RequiredPropertyInfo> >::~Span (this=0x5600f9e17798, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qhash.h:264
#11 QHashPrivate::Data<QHashPrivate::Node<RequiredPropertyKey, RequiredPropertyInfo> >::~Data (this=0x5600fa8e4810, this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qhash.h:773
#12 0x00007f24b786b938 in QHash<RequiredPropertyKey, RequiredPropertyInfo>::clear (this=0x5600f9f4af10) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qhash.h:958
#13 QQmlComponentPrivate::ConstructionState::clearRequiredProperties (this=0x5600f55e77e8) at ./src/qml/qml/qqmlcomponent_p.h:221
#14 QQmlComponentPrivate::beginCreate (this=0x5600f55e7730, context=...) at ./src/qml/qml/qqmlcomponent.cpp:1059
#15 0x00007f24b786c45e in QQmlComponent::beginCreate (context=<optimized out>, this=0x5600f60d2808) at ./src/qml/qml/qqmlcomponent.cpp:1023
#16 QQmlComponentPrivate::doBeginCreate (this=<optimized out>, q=0x5600f60d2808, context=<optimized out>) at ./src/qml/qml/qqmlcomponent.cpp:339
#17 0x00007f24b786d1c2 in QQmlComponentPrivate::createWithProperties (this=0x5600f55e7730, parent=0x0, properties=..., context=<optimized out>, behavior=QQmlComponentPrivate::CreateDefault, createFromQml=<optimized out>)
    at ./src/qml/qml/qqmlcomponent.cpp:946
#18 0x00007f24b9d7c918 in Waylib::Server::WSurfaceItemPrivate::initForDelegate (this=0x5600f9f931c0) at /home/xyb/Documents/Code/Github/treeland/waylib/src/server/qtquick/wsurfaceitem.cpp:1141
#19 0x00007f24b9d7abcf in Waylib::Server::WSurfaceItem::setDelegate (this=0x5600fa08d880, newDelegate=0x5600f60d2808) at /home/xyb/Documents/Code/Github/treeland/waylib/src/server/qtquick/wsurfaceitem.cpp:795
#20 0x00007f24ba7ab7cb in SurfaceWrapper::SurfaceWrapper (this=0x5600fac2bbe0, qmlEngine=0x5600f60d27a0, shellSurface=0x5600fb2c8ea0, type=SurfaceWrapper::Type::XdgToplevel, parent=0x0, isProxy=false)
    at /home/xyb/Documents/Code/Github/treeland/src/surface/surfacewrapper.cpp:88
#21 0x00007f24ba70fa9c in ShellHandler::onXdgToplevelSurfaceAdded (this=0x5600f56662a0, surface=0x5600fb2c8ea0) at /home/xyb/Documents/Code/Github/treeland/src/core/shellhandler.cpp:149
#22 0x00007f24ba71984f in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Waylib::Server::WXdgToplevelSurface*>, void, void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*)>::call(void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*), ShellHandler*, void**)::{lambda()#1}::operator()() const (__closure=0x7fff150ca6d0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:152
#23 0x00007f24ba71a458 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Waylib::Server::WXdgToplevelSurface*>, void, void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*)>::call(void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*), ShellHandler*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Waylib::Server::WXdgToplevelSurface*>, void, void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*)>::call(void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*), ShellHandler*, void**)::{lambda()#1}&&) (args=0x7fff150ca880, fn=...)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:65
#24 0x00007f24ba7198b0 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Waylib::Server::WXdgToplevelSurface*>, void, void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*)>::call
    (f=(void (ShellHandler::*)(ShellHandler * const, Waylib::Server::WXdgToplevelSurface *)) 0x7f24ba70fa42 <ShellHandler::onXdgToplevelSurfaceAdded(Waylib::Server::WXdgToplevelSurface*)>, o=0x5600f56662a0, arg=0x7fff150ca880)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:151
#25 0x00007f24ba718a84 in QtPrivate::FunctionPointer<void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*)>::call<QtPrivate::List<Waylib::Server::WXdgToplevelSurface*>, void>
    (f=(void (ShellHandler::*)(ShellHandler * const, Waylib::Server::WXdgToplevelSurface *)) 0x7f24ba70fa42 <ShellHandler::onXdgToplevelSurfaceAdded(Waylib::Server::WXdgToplevelSurface*)>, o=0x5600f56662a0, arg=0x7fff150ca880)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:199
#26 0x00007f24ba717b7f in QtPrivate::QCallableObject<void (ShellHandler::*)(Waylib::Server::WXdgToplevelSurface*), QtPrivate::List<Waylib::Server::WXdgToplevelSurface*>, void>::impl
    (which=1, this_=0x5600f5786440, r=0x5600f56662a0, a=0x7fff150ca880, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:570
#27 0x00007f24b93e2a1c in QtPrivate::QSlotObjectBase::call (a=0x7fff150ca880, r=0x5600f56662a0, this=0x5600f5786440, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:486
#28 doActivate<false> (sender=0x5600f576ef90, signal_index=3, argv=0x7fff150ca880) at ./src/corelib/kernel/qobject.cpp:4120
#29 0x00007f24b9cfda55 in Waylib::Server::WXdgShell::toplevelSurfaceAdded (this=0x5600f576ef90, _t1=0x5600fb2c8ea0)
    at /home/xyb/Documents/Code/Github/treeland/build/waylib/src/server/waylibserver_autogen/QEXRLBDUJQ/moc_wxdgshell.cpp:189
#30 0x00007f24b9e5a5f8 in Waylib::Server::WXdgShellPrivate::onNewXdgToplevelSurface (this=0x5600f613c8e0, toplevel=0x5600fb0c9830) at /home/xyb/Documents/Code/Github/treeland/waylib/src/server/protocols/wxdgshell.cpp:54
#31 0x00007f24b9e5abc6 in operator() (__closure=0x5600f577b220, toplevel_surface=0x5600f9d84c10) at /home/xyb/Documents/Code/Github/treeland/waylib/src/server/protocols/wxdgshell.cpp:123
#32 0x00007f24b9e5b913 in operator() (__closure=0x7fff150ca9e0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:141
#33 0x00007f24b9e5ba18 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<wlr_xdg_toplevel*>, void, Waylib::Server::WXdgShell::create(Waylib::Server::WServer*)::<lambda(wlr_xdg_toplevel*)> >::call(Waylib::Server::WXdgShell::create(Waylib::Server::WServer*)::<lambda(wlr_xdg_toplevel*)>&, void**)::<lambda()> >(void **, struct {...} &&) (args=0x7fff150cab70, fn=...)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:65
#34 0x00007f24b9e5b949 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<wlr_xdg_toplevel*>, void, Waylib::Server::WXdgShell::create(Waylib::Server::WServer*)::<lambda(wlr_xdg_toplevel*)> >::call(struct {...} &, void **) (f=..., arg=0x7fff150cab70) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:140
#35 0x00007f24b9e5b86d in QtPrivate::FunctorCallable<Waylib::Server::WXdgShell::create(Waylib::Server::WServer*)::<lambda(wlr_xdg_toplevel*)>, wlr_xdg_toplevel*>::call<QtPrivate::List<wlr_xdg_toplevel*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7fff150cab70) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:362
#36 0x00007f24b9e5b6e8 in QtPrivate::QCallableObject<Waylib::Server::WXdgShell::create(Waylib::Server::WServer*)::<lambda(wlr_xdg_toplevel*)>, QtPrivate::List<wlr_xdg_toplevel*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x5600f577b210, r=0x5600f576ef90, a=0x7fff150cab70, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:572
#37 0x00007f24b93e2a1c in QtPrivate::QSlotObjectBase::call (a=0x7fff150cab70, r=0x5600f576ef90, this=0x5600f577b210, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:486
#38 doActivate<false> (sender=0x5600f579aac0, signal_index=5, argv=0x7fff150cab70) at ./src/corelib/kernel/qobject.cpp:4120
#39 0x00007f24b9edb4ad in qw_xdg_shell::notify_new_toplevel (this=0x5600f579aac0, _t1=0x5600f9d84c10) at /home/xyb/Documents/Code/Github/treeland/build/waylib/qwlroots/src/qwlroots_autogen/GZRP3O7STM/moc_qwxdgshell.cpp:178
#40 0x00007f24ba704dd9 in qw_signal_connector::callSlot1 (wl_listener=0x5600f579c978, data=0x5600f9d84c10) at /home/xyb/Documents/Code/Github/treeland/qwlroots/src/util/qwsignalconnector.h:149
#41 0x00007f24b7312afc in wl_signal_emit_mutable () at /usr/bin/../lib/x86_64-linux-gnu/libwayland-server.so.0
#42 0x00007f24b985c5bd in create_xdg_toplevel (surface=0x5600fa11f8c0, id=30) at ../types/xdg_shell/wlr_xdg_toplevel.c:492
#43 0x00007f24b9859f60 in xdg_surface_handle_get_toplevel (client=0x5600fa3dc010, resource=0x5600fa4bbb10, id=30) at ../types/xdg_shell/wlr_xdg_surface.c:202
#44 0x00007f24b5edb01a in ??? () at /lib/x86_64-linux-gnu/libffi.so.8
#45 0x00007f24b5eda4be in ??? () at /lib/x86_64-linux-gnu/libffi.so.8
#46 0x00007f24b5edabad in ffi_call () at /lib/x86_64-linux-gnu/libffi.so.8
--Type <RET> for more, q to quit, c to continue without paging--
#47 0x00007f24b7316f46 in ??? () at /usr/bin/../lib/x86_64-linux-gnu/libwayland-server.so.0
#48 0x00007f24b7311c9a in ??? () at /usr/bin/../lib/x86_64-linux-gnu/libwayland-server.so.0
#49 0x00007f24b7314c52 in wl_event_loop_dispatch () at /usr/bin/../lib/x86_64-linux-gnu/libwayland-server.so.0
#50 0x00007f24b9d5e7ae in operator() (__closure=0x5600f576eb80) at /home/xyb/Documents/Code/Github/treeland/waylib/src/server/kernel/wserver.cpp:108
#51 0x00007f24b9d6045b in operator() (__closure=0x7fff150cb370) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:141
#52 0x00007f24b9d6050c in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Waylib::Server::WServerPrivate::init()::<lambda()> >::call(Waylib::Server::WServerPrivate::init()::<lambda()>&, void**)::<lambda()> >(void **, struct {...} &&) (args=0x7fff150cb498, fn=...) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:65
#53 0x00007f24b9d60491 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Waylib::Server::WServerPrivate::init()::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x7fff150cb498)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:140
#54 0x00007f24b9d60405 in QtPrivate::FunctorCallable<Waylib::Server::WServerPrivate::init()::<lambda()> >::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7fff150cb498)
    at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:362
#55 0x00007f24b9d6031e in QtPrivate::QCallableObject<Waylib::Server::WServerPrivate::init()::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *)
    (which=1, this_=0x5600f576eb70, r=0x5600f5665530, a=0x7fff150cb498, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:572
#56 0x00007f24b93e2a1c in QtPrivate::QSlotObjectBase::call (a=0x7fff150cb498, r=0x5600f5665530, this=0x5600f576eb70, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:486
#57 doActivate<false> (sender=0x5600f557cd00, signal_index=3, argv=0x7fff150cb498) at ./src/corelib/kernel/qobject.cpp:4120
#58 0x00007f24b958a043 in QEventDispatcherGlib::processEvents (this=0x5600f557cd00, flags=...) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:383
#59 0x00007f24b939f67a in QEventLoop::exec (this=0x7fff150cb630, flags=...) at ./src/corelib/global/qflags.h:34
#60 0x00007f24b9399768 in QCoreApplication::exec () at ./src/corelib/global/qflags.h:74
#61 0x00005600db236655 in main (argc=1, argv=0x7fff150cb8a8) at /home/xyb/Documents/Code/Github/treeland/src/main.cpp:48
(gdb) 

LAUNCH-WAY | 启动方式

lightdm

BACKEND | 启动后端

Wayland

STEPS TO REPRODUCE | 复现步骤

无固定复现步骤

OBSERVED RESULT | 观察到的结果

No response

EXPECTED RESULT | 期望的结果

No response

ADDITIONAL INFORMATION | 额外补充

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions