Skip to content

[Bug]: 锁屏时WOutputRenderWindowPrivate::doRender崩溃 #749

@calsys456

Description

@calsys456

SUMMARY | 问题概要

锁屏时WOutputRenderWindowPrivate::doRender概率性崩溃

LAUNCH-WAY | 启动方式

ddm

BACKEND | 启动后端

DRM

STEPS TO REPRODUCE | 复现步骤

  1. 启动treeland并登录
  2. Ctrl+Alt+del唤起Shutdown View
  3. 点击“锁定”
  4. 概率性崩溃

OBSERVED RESULT | 观察到的结果

root@april-deepin-utm-apple:~# coredumpctl debug treeland
           PID: 7183 (treeland)
           UID: 107 (dde)
           GID: 112 (dde)
        Signal: 11 (SEGV)
     Timestamp: Wed 2026-02-25 18:38:49 CST (1min 8s ago)
  Command Line: /usr/bin/treeland --lockscreen
    Executable: /usr/bin/treeland
 Control Group: /system.slice/treeland.service
          Unit: treeland.service
         Slice: system.slice
       Boot ID: 43b026e242754347880558aed45a760c
    Machine ID: 45ebfb1df2be4a579d85592f0c9468e8
      Hostname: april-deepin-utm-apple
       Storage: /var/lib/systemd/coredump/core.treeland.107.43b026e242754347880558aed45a760c.7183.1772015929000000.zst (present)
  Size on Disk: 18.2M
       Message: Process 7183 (treeland) of user 107 dumped core.

                Module libblkid.so.1 from deb util-linux-2.40.4-3deepin4.arm64
                Module libmount.so.1 from deb util-linux-2.40.4-3deepin4.arm64
                Module libsystemd.so.0 from deb systemd-255.2-4deepin19.arm64
                Module libzstd.so.1 from deb libzstd-1.5.6+dfsg-1.arm64
                Module libudev.so.1 from deb systemd-255.2-4deepin19.arm64
                Stack trace of thread 7183:
                #0  0x0000ffff86ccf920 _ZNK11QMetaObject8inheritsEPKS_ (libQt6Core.so.6 + 0x16f920)
                #1  0x0000ffff86ccf968 _ZNK11QMetaObject4castEPK7QObject (libQt6Core.so.6 + 0x16f968)
                #2  0x0070ffff8560d99c n/a (n/a + 0x0)
                #3  0x0070ffff8560d99c n/a (n/a + 0x0)
                #4  0x0011ffff8560da60 n/a (n/a + 0x0)
                #5  0x0042ffff8560da60 n/a (n/a + 0x0)
                #6  0x0060ffff8560da60 n/a (n/a + 0x0)
                #7  0x0023ffff8560da60 n/a (n/a + 0x0)
                #8  0x002cffff8560da60 n/a (n/a + 0x0)
                #9  0x001fffff8560da60 n/a (n/a + 0x0)
                #10 0x0033ffff8560da60 n/a (n/a + 0x0)
                #11 0x0034ffff8560da60 n/a (n/a + 0x0)
                #12 0x0066ffff8560da60 n/a (n/a + 0x0)
                #13 0x0030ffff8560da60 n/a (n/a + 0x0)
                #14 0x0006ffff856066ec n/a (n/a + 0x0)
                #15 0x0067ffff855a4200 n/a (n/a + 0x0)
                #16 0x007effff876f1b9c n/a (n/a + 0x0)
                #17 0x0000ffff876f3640 _ZN6Waylib6Server19WOutputRenderWindow6renderEv (libwaylibserver.so.0 + 0x4b3640)
                #18 0x0000001000000000 n/a (n/a + 0x0)
                #19 0x0000001000000000 n/a (n/a + 0x0)
                #20 0x0000ffffd5b0a430 n/a (n/a + 0x0)
                ELF object binary architecture: AARCH64

GNU gdb (Debian 16.3-1deepin1) 16.3
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/treeland...

warning: Can't open file /memfd:JSVMStack:QtQml (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:JSGCHeap:QtQml (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:JITCode:QtQml (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:xwayland-shared (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:unknown-usage:QtQml (deleted) during file-backed mapping note processing
[New LWP 7183]
[New LWP 7207]
[New LWP 7206]
[New LWP 7209]
[New LWP 7227]
[New LWP 7217]
[New LWP 7214]
[New LWP 7228]
[New LWP 7208]
[New LWP 7229]
[New LWP 7221]
[New LWP 7215]
[New LWP 7252]
[New LWP 7213]
[New LWP 7223]
[New LWP 7218]
[New LWP 7230]
[New LWP 8831]
[New LWP 7210]
[New LWP 7212]
[New LWP 7222]
[New LWP 7216]
[New LWP 7219]
[New LWP 7211]
[New LWP 7225]
[New LWP 7226]
[New LWP 7224]
[New LWP 7205]
[New LWP 7220]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/treeland --lockscreen'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000ffff86ccf920 in QMetaObject::inherits(QMetaObject const*) const () from /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
[Current thread is 1 (Thread 0xffff87239020 (LWP 7183))]
(gdb) bt
#0  0x0000ffff86ccf920 in QMetaObject::inherits(QMetaObject const*) const () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#1  0x0000ffff86ccf968 in QMetaObject::cast(QObject const*) const () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#2  0x0000ffff8560d99c [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#3  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#4  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#5  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#6  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#7  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#8  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#9  0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#10 0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#11 0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#12 0x0000ffff8560da60 [PAC] in QQuickWindowPrivate::updateChildWindowStackingOrder(QQuickItem*) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#13 0x0000ffff856066ec [PAC] in QQuickWindowPrivate::polishItems() () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#14 0x0000ffff855a4200 [PAC] in QQuickRenderControl::polishItems() () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Quick.so.6
#15 0x0000ffff876f1b9c [PAC] in Waylib::Server::WOutputRenderWindowPrivate::doRender
    (this=0xaaab12884160, needsFrameOutput=0xaaab1565fba0, outputs=..., forceRender=false, doCommit=true)
    at /root/dev/treeland/waylib/src/server/qtquick/woutputrenderwindow.cpp:1510
#16 0x0000ffff876f3640 in Waylib::Server::WOutputRenderWindow::render (this=0xaaab128823c0)
    at /root/dev/treeland/waylib/src/server/qtquick/woutputrenderwindow.cpp:1914
#17 0x0000ffff8770f6a8 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Waylib::Server::WOutputRenderWindow::*)()>::call(void (Waylib::Server::WOutputRenderWindow::*)(), Waylib::Server::WOutputRenderWindow*, void**)::{lambda()#1}::operator()() const (__closure=0xffffd5b0a2a8)
    at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:152
#18 0x0000ffff8771269c in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Waylib::Server::WOutputRenderWindow::*)()>::call(void (Waylib::Server::WOutputRenderWindow::*)(), Waylib::Server::WOutputRenderWindow*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Waylib::Server::WOutputRenderWindow::*)()>::call(void (Waylib::Server::WOutputRenderWindow::*)(), Waylib::Server::WOutputRenderWindow*, void**)::{lambda()#1}&&) (args=0xffffd5b0a3a8, fn=...) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:65
#19 0x0000ffff8770f6fc in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Waylib::Server::WOutputRenderWindow::*)()>::call(void (Waylib::Server::WOutputRenderWindow::*)(), Waylib::Server::WOutputRenderWindow*, void**)
    (f=(void (Waylib::Server::WOutputRenderWindow::*)(Waylib::Server::WOutputRenderWindow * const)) 0xffff876f35f4 <Waylib::Server::WOutputRenderWindow::render()>, o=0xaaab128823c0, arg=0xffffd5b0a3a8) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:151
#20 0x0000ffff8770c324 in QtPrivate::FunctionPointer<void (Waylib::Server::WOutputRenderWindow::*)()>::call<QtPrivate::List<>, void>(void (Waylib::Server::WOutputRenderWindow::*)(), Waylib::Server::WOutputRenderWindow*, void**)
    (f=(void (Waylib::Server::WOutputRenderWindow::*)(Waylib::Server::WOutputRenderWindow * const)) 0xffff876f35f4 <Waylib::Server::WOutputRenderWindow::render()>, o=0xaaab128823c0, arg=0xffffd5b0a3a8) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:199
#21 0x0000ffff877087e8 in QtPrivate::QCallableObject<void (Waylib::Server::WOutputRenderWindow::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0xaaab155ccee0, r=0xaaab128823c0, a=0xffffd5b0a3a8, ret=0x0)
    at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:570
#22 0x0000ffff86d1199c in ??? () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#23 0x0000ffff87847524 [PAC] in qw_output::notify_frame (this=0xaaab1565fba0)
    at /root/build/treeland/waylib/qwlroots/src/qwlroots_autogen/GZRP3O7STM/moc_qwoutput.cpp:254
#24 0x0000ffff8835938c in qw_signal_connector::callSlot0 (wl_listener=0xaaab155e3388) at /root/dev/treeland/qwlroots/src/util/qwsignalconnector.h:144
#25 0x0000ffff84a79784 in wl_signal_emit_mutable () at /usr/bin/../lib/aarch64-linux-gnu/libwayland-server.so.0
#26 0x0000ffff84a7ba64 [PAC] in wl_event_loop_dispatch_idle () at /usr/bin/../lib/aarch64-linux-gnu/libwayland-server.so.0
#27 0x0000ffff84a7bad0 [PAC] in wl_event_loop_dispatch () at /usr/bin/../lib/aarch64-linux-gnu/libwayland-server.so.0
#28 0x0000ffff876accdc [PAC] in operator() (__closure=0xaaab12c62d60) at /root/dev/treeland/waylib/src/server/kernel/wserver.cpp:108
#29 0x0000ffff876ae79c in operator() (__closure=0xffffd5b0a850) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:141
#30 0x0000ffff876ae868 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=0xffffd5b0a938, fn=...) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:65
#31 0x0000ffff876ae7dc in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Waylib::Server::WServerPrivate::init()::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0xffffd5b0a938) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:140
#32 0x0000ffff876ae738 in QtPrivate::FunctorCallable<Waylib::Server::WServerPrivate::init()::<lambda()> >::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0xffffd5b0a938) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:362
#33 0x0000ffff876ae62c in QtPrivate::QCallableObject<Waylib::Server::WServerPrivate::init()::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0xaaab12c62d50, r=0xaaab12885480, a=0xffffd5b0a938, ret=0x0)
    at /usr/include/aarch64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:572
#34 0x0000ffff86d1199c in ??? () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#35 0x0000ffff86ebc3dc [PAC] in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#36 0x0000ffff86ccd244 [PAC] in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#37 0x0000ffff86cc4f90 [PAC] in QCoreApplication::exec() () at /usr/bin/../lib/aarch64-linux-gnu/libQt6Core.so.6
#38 0x0000aaaadc8a51c4 [PAC] in main (argc=2, argv=0xffffd5b0adb8) at /root/dev/treeland/src/main.cpp:53
(gdb)

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