Bug 491814 - KWin crashes in KWin::X11Window::moveResizeInternal() on Xwayland window resize while closing
Summary: KWin crashes in KWin::X11Window::moveResizeInternal() on Xwayland window resi...
Status: RESOLVED DUPLICATE of bug 492213
Alias: None
Product: kwin
Classification: Plasma
Component: generic-crash (show other bugs)
Version: 6.1.4
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-08-17 11:15 UTC by kde
Modified: 2024-10-01 09:17 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
bt full (7.43 KB, text/plain)
2024-08-17 11:15 UTC, kde
Details

Note You need to log in before you can comment on or make changes to this bug.
Description kde 2024-08-17 11:15:11 UTC
Created attachment 172689 [details]
bt full

SUMMARY
While exiting IntelliJ, KWin crashed. 5 windows were being closed. I have not been able to reproduce this issue. Visually, a bit of the IntelliJ window was missing and was showing the desktop background but the rest of the window was still on screen. I said resize/close in the title because while the windows were being closed, the backtrace seems to be resizing the windows. I am using krohnkite; while it may be responsible for resizing the window, KWin shouldn't crash.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 6.1.4
KDE Frameworks Version: 6.4.0
Qt Version: 6.7.2
Kernel Version: 6.10.3-arch1-2 (64-bit)
Graphics Platform: Wayland

ADDITIONAL INFORMATION
Backtrace is attached.
Comment 1 Nate Graham 2024-08-20 16:55:14 UTC
Pasting inline for searchability:

(gdb) bt full
#0  std::__atomic_base<QObjectPrivate::Connection*>::load (this=0x71, __m=std::memory_order_acquire) at /usr/include/c++/14.1.1/bits/atomic_base.h:831
        __b = std::memory_order_acquire
        __PRETTY_FUNCTION__ = <optimized out>
        __b = <optimized out>
#1  std::atomic<QObjectPrivate::Connection*>::load (this=0x71, __m=std::memory_order_acquire) at /usr/include/c++/14.1.1/atomic:582
No locals.
#2  QAtomicOps<QObjectPrivate::Connection*>::loadAcquire<QObjectPrivate::Connection*> (_q_value=<error reading variable: Cannot access memory at address 0x71>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qatomic_cxx11.h:214
No locals.
#3  QBasicAtomicPointer<QObjectPrivate::Connection>::loadAcquire (this=0x71) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qbasicatomic.h:177
No locals.
#4  QObjectPrivate::maybeSignalConnected (this=0x7f08b9bf6b20 <main_arena+96>, signalIndex=9) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:489
        cd = 0x5ef9be25ea20
        signalVector = 0x61
#5  0x00007f08ba1a147a in doActivate<false> (sender=0x5ef9c0580730, signal_index=9, argv=0x7fff56ba1138) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:3986
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = <optimized out>
#6  0x00007f08bc9d04d2 in KWin::X11Window::moveResizeInternal (this=0x5ef9c0580730, rect=..., mode=<optimized out>) at /usr/src/debug/kwin/kwin-6.1.4/src/x11window.cpp:4420
        frameGeometry = {xp = 800, yp = 199, w = 3440, h = 1416}
        clientGeometry = {xp = 800, yp = 199, w = 3440, h = 1416}
        bufferGeometry = {xp = 800, yp = 199, w = 3440, h = 1416}
        oldBufferGeometry = {xp = 800, yp = 199, w = 3438, h = 1394}
        oldFrameGeometry = {xp = 800, yp = 199, w = 3438, h = 1394}
        oldClientGeometry = {xp = 800, yp = 199, w = 3438, h = 1394}
        oldOutput = 0x5ef9bba9f4a0
#7  0x00007f08bc96ac98 in KWin::Window::qt_metacall (this=0x5ef9c0580730, _c=QMetaObject::WriteProperty, _id=67, _a=0x7fff56ba1350) at /usr/src/debug/kwin/build/src/kwin_autogen/include/moc_window.cpp:1475
No locals.
#8  0x00007f08bc9d7ecf in KWin::X11Window::qt_metacall (this=0x5ef9c0580730, _c=QMetaObject::WriteProperty, _id=<optimized out>, _a=0x7fff56ba1350) at /usr/src/debug/kwin/build/src/kwin_autogen/include/moc_x11window.cpp:204
No locals.
#9  0x00007f08bba4a94f in QQmlPropertyData::doMetacall<(QMetaObject::Call)2> (this=<optimized out>, object=<optimized out>, idx=<optimized out>, argv=0x7fff56ba1350) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlpropertydata_p.h:360
        dynamicMetaObject = <optimized out>
#10 QQmlPropertyData::doMetacall<(QMetaObject::Call)2> (this=<optimized out>, object=<optimized out>, idx=<optimized out>, argv=0x7fff56ba1350) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlpropertydata_p.h:355
No locals.
#11 QQmlPropertyData::writeProperty (this=<optimized out>, target=<optimized out>, value=<optimized out>, flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlpropertydata_p.h:378
        status = -1
        argv = {0x5ef9bdcfe038, 0x0, 0x7fff56ba134c, 0x7fff56ba133c}
#12 0x00007f08bbafcc1a in tryConvertAndAssign (object=<optimized out>, property=..., value=..., flags=..., propertyMetaType=..., variantMetaType=..., isUrl=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlproperty.cpp:1414
        ok = 216
        f = -9.16544174e-10
        converted = {d = {static MaxInternalSize = 24, data = {data = "\020\360a\273\017\000\000\000\320\026\272V\377\177\000\000@\025\272V\377\177\000", shared = 0xfbb61f010, _forAlignment = 3.3383159612067167e-313}, is_shared = 0, is_null = 0, packedType = 34918870885816}}
        converted = <optimized out>
        jsValue = <optimized out>
        f = <optimized out>
        b = <optimized out>
        ok = <optimized out>
        i = <optimized out>
        ok = <optimized out>
        u = <optimized out>
        ok = <optimized out>
        d = <optimized out>
        ok = <optimized out>
        f = <optimized out>
        s = <optimized out>
        m = <optimized out>
#13 QQmlPropertyPrivate::write (object=0x5ef9c0580730, property=..., value=..., context=..., flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlproperty.cpp:1532
        result = <optimized out>
        propertyMetaType = <optimized out>
        variantMetaType = <optimized out>
        bindingFixer = {untypedBinding = {d = {d = 0x0}}}
        enginePriv = 0x5ef9bb6f8dd0
        isUrl = <optimized out>
#14 0x00007f08bb9c535e in QV4::QObjectWrapper::setProperty (engine=engine@entry=0x5ef9bb6fe6c0, object=object@entry=0x5ef9c0580730, property=0x5ef9bc2723e0, value=...) at /usr/include/qt6/QtCore/qflags.h:73
        v = {d = {static MaxInternalSize = 24, data = {data = "0\340Ͻ\371^", '\000' <repeats 17 times>, shared = 0x5ef9bdcfe030, _forAlignment = 5.1593657026269966e-310}, is_shared = 1, is_null = 0, packedType = 34918865807560}}
        callingQmlContext = {o = 0x5ef9bbb7abf0}
        scope = {engine = 0x5ef9bb6fe6c0, mark = 0x7f08b07bf828}
        propType = <optimized out>
        vmemo = <optimized out>
#15 0x00007f08bb9c5a6e in QV4::QObjectWrapper::setQmlProperty (engine=engine@entry=0x5ef9bb6fe6c0, qmlContext=..., object=0x5ef9c0580730, name=name@entry=0x7f08b07bf820, flags=..., flags@entry=..., value=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:567
        local = {m_flags = {otherBits = 0, isConst = 0, isVMEFunction = 0, isWritableORhasArguments = 0, isResettableORisSignal = 0, isAliasORisVMESignal = 0, isFinalORisV4Function = 0, isSignalHandler = 0, isOverridableSignal = 0, isRequiredORisCloned = 0, isConstructorORisBindable = 0, isOverridden = 0, hasMetaObject = 0, type = 0, overrideIndexIsProperty = 0}, m_coreIndex = -1, m_notifyIndex = -1, m_overrideIndex = -1, m_metaObjectOffset = -1,
          m_revision = {m_minorVersion = 0 '\000', m_majorVersion = 0 '\000'}, m_typeVersion = {m_minorVersion = 0 '\000', m_majorVersion = 0 '\000'}, m_propType = {d_ptr = 0x0}, {m_arguments = 0x0, m_staticMetaCallFunction = 0x0, m_metaObject = 0x0}}
        result = <optimized out>
#16 0x00007f08bb9c5bfb in QV4::QObjectWrapper::virtualPut (m=0x7f08b07bf810, id=..., value=..., receiver=0x7f08b07bf810) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:939
        scope = {engine = 0x5ef9bb6fe6c0, mark = 0x7f08b07bf820}
        that = 0x7f08b07bf810
        name = <optimized out>
        qmlContext = {o = 0x5ef9bbb7abf0}
#17 0x00007f08bb99d228 in QV4::Lookup::setterFallback (l=0x5ef9bbb8a980, engine=0x5ef9bb6fe6c0, object=..., value=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4lookup.cpp:591
        scope = {engine = 0x5ef9bb6fe6c0, mark = 0x7f08b07bf810}
        o = <optimized out>
        name = <optimized out>
#18 0x00007f08bb9e5dda in QV4::Runtime::SetLookupStrict::call (f=<optimized out>, base=..., index=<optimized out>, value=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1164
        engine = 0x5ef9bb6fe6c0
        l = <optimized out>
#19 0x00007f08a98cfa07 in ?? ()
No symbol table info available.
#20 0x00005ef9bbb72b80 in ?? ()
No symbol table info available.
#21 0x00007fff56ba1be0 in ?? ()
No symbol table info available.
#22 0x00005ef9bb6fe6c0 in ?? ()
No symbol table info available.
#23 0x0000000000000000 in ?? ()
No symbol table info available.
Comment 2 Vlad Zahorodnii 2024-08-21 14:24:26 UTC
Do you use any custom script? It looks like it does something wrong that it shouldn't do
Comment 3 kde 2024-08-21 17:15:51 UTC
(In reply to Vlad Zahorodnii from comment #2)
> Do you use any custom script? It looks like it does something wrong that it
> shouldn't do

Yes, I am using anametologin's krohnkite.
Comment 4 Vlad Zahorodnii 2024-08-22 08:04:38 UTC
(In reply to kde from comment #3)
> (In reply to Vlad Zahorodnii from comment #2)
> > Do you use any custom script? It looks like it does something wrong that it
> > shouldn't do
> 
> Yes, I am using anametologin's krohnkite.

Can you please report this issue to them? The script shouldn't do anything with a window after it's closed. When a window is closed, it should remove the window from its internal list and that's mostly all.

I guess we could add some guards in moveResizeInternal() to prevent kwin from crashing though
Comment 5 Vlad Zahorodnii 2024-08-22 08:04:56 UTC
> I guess we could add some guards in moveResizeInternal() to prevent kwin from crashing though

but scripts should still behave as expected
Comment 6 Vlad Zahorodnii 2024-10-01 09:17:06 UTC
*** This bug has been marked as a duplicate of bug 492213 ***