Skip to content

Instantly share code, notes, and snippets.

@telepathine
Created September 27, 2021 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save telepathine/01bd060e5df3ece55f6b46bb63a78078 to your computer and use it in GitHub Desktop.
Save telepathine/01bd060e5df3ece55f6b46bb63a78078 to your computer and use it in GitHub Desktop.
Logs for KWin bug 439873

The setup

The debugger has been attached to the first user's session, and breakpoint has been set in DrmPipeline::~DrmPipeline with the following commands to log the deletion's origin and pipeline's address:

commands
silent
p this
bt -full 10
cont &
end

Then I switched between two users' sessions until the first one has crashed. There are logs of both the successful case and the crash.

The behaviour in the crash is drastically different and we can see triple destruction of a DrmPipeline with the same address, then its attempted use which leads to a segmentation fault.

Successful case

Pipeline address

$1 = (KWin::DrmPipeline * const) 0x55e00b5987f0

Deletion backtrace (updateOutputs)

#0  KWin::DrmPipeline::~DrmPipeline() (this=0x55e00b5987f0, __in_chrg=<optimized out>) at 
    /usr/include/c++/11.1.0/bits/atomic_base.h:479
#1  0x00007fa0e79eff0b in KWin::DrmGpu::updateOutputs() (this=this@entry=0x55e00a9f8470) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:286
        output = @0x55e00b231a88: 0x55e00b2175f0
        __for_range = @0x55e00a9f8508: {d = 0x55e00b231a70}
        __for_begin = 0x55e00b231a88
        __for_end = 0x55e00b231a90
        resources = {d = <optimized out>}
        lessees = <optimized out>
        removedConnectors = {d = 0x55e00ab816e0}
        connectedConnectors = {d = 0x55e00b399630}
        connectors = {d = 0x7fa0ed061ba6 <std::chrono::_V2::steady_clock::now()+38>}
        crtcs = {d = 0x579}
        planes = {d = 0x989ea66534029c00}
        config = {d = 0x30}
#2  0x00007fa0e79d6108 in KWin::DrmBackend::updateOutputs() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:347
        gpu = 0x55e00a9f8470
        it = 0x55e00aa63ad8
        oldOutputs = {d = <optimized out>}
#3  0x00007fa0e79d73e7 in KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:159
#4  KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:142
#5  0x00007fa0ed7ee76b in  () at /usr/lib/libQt5Core.so.5
#6  0x00007fa0f030c702 in KWin::Session::activeChanged(bool) (this=this@entry=0x55e00aa1b540, _t1=<optimized out>) 
    at /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session.cpp:150
        _a = {0x0, 0x7ffc4c2f32cc}
#7  0x00007fa0f04462b3 in KWin::LogindSession::updateActive(bool) (active=<optimized out>, this=0x55e00aa1b540) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:303
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}
#8  KWin::LogindSession::handlePropertiesChanged(QString const&, QMap<QString, QVariant> const&) 
    (this=this@entry=0x55e00aa1b540, interfaceName=<optimized out>, properties=<optimized out>) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:324
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}
#9  0x00007fa0f032b344 in KWin::LogindSession::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) 
    (_c=QMetaObject::InvokeMetaMethod, _a=0x7ffc4c2f3460, _id=1, _o=0x55e00aa1b540) at 
    /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session_logind.cpp:88
        _t = 0x55e00aa1b540

The crash

Pipeline address

$5 = (KWin::DrmPipeline * const) 0x55e00b5a8f20

Deletion backtrace (updateOutputs)

#0  KWin::DrmPipeline::~DrmPipeline() (this=0x55e00b5a8f20, __in_chrg=<optimized out>) at 
    /usr/include/c++/11.1.0/bits/atomic_base.h:479
#1  0x00007fa0e79eff0b in KWin::DrmGpu::updateOutputs() (this=this@entry=0x55e00a9f8470) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:286
        output = @0x55e00b231a88: 0x55e00b2175f0
        __for_range = @0x55e00a9f8508: {d = 0x55e00b231a70}
        __for_begin = 0x55e00b231a88
        __for_end = 0x55e00b231a90
        resources = {d = <optimized out>}
        lessees = <optimized out>
        removedConnectors = {d = 0x55e00b35fe00}
        connectedConnectors = {d = 0x55e00b4076c0}
        connectors = {d = 0x7fa0ed061ba6 <std::chrono::_V2::steady_clock::now()+38>}
        crtcs = {d = 0x5f0}
        planes = {d = 0x989ea66534029c00}
        config = {d = 0x30}
#2  0x00007fa0e79d6108 in KWin::DrmBackend::updateOutputs() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:347
        gpu = 0x55e00a9f8470
        it = 0x55e00aa63ad8
        oldOutputs = {d = <optimized out>}
#3  0x00007fa0e79d73e7 in KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:159
#4  KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:142
#5  0x00007fa0ed7ee76b in  () at /usr/lib/libQt5Core.so.5
#6  0x00007fa0f030c702 in KWin::Session::activeChanged(bool) (this=this@entry=0x55e00aa1b540, _t1=<optimized out>) 
    at /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session.cpp:150
        _a = {0x0, 0x7ffc4c2f32cc}
#7  0x00007fa0f04462b3 in KWin::LogindSession::updateActive(bool) (active=<optimized out>, this=0x55e00aa1b540) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:303
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}
#8  KWin::LogindSession::handlePropertiesChanged(QString const&, QMap<QString, QVariant> const&) 
    (this=this@entry=0x55e00aa1b540, interfaceName=<optimized out>, properties=<optimized out>) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:324
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}
#9  0x00007fa0f032b344 in KWin::LogindSession::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) 
    (_c=QMetaObject::InvokeMetaMethod, _a=0x7ffc4c2f3460, _id=1, _o=0x55e00aa1b540) at 
    /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session_logind.cpp:88
        _t = 0x55e00aa1b540

Another pipeline address

$6 = (KWin::DrmPipeline * const) 0x55e00b55a720

Deletion backtrace (findWorkingCombination)

#0  KWin::DrmPipeline::~DrmPipeline() (this=0x55e00b55a720, __in_chrg=<optimized out>) at 
    /usr/include/c++/11.1.0/bits/atomic_base.h:479
#1  0x00007fa0e79ed99e in operator()(KWin::DrmCrtc*, KWin::DrmPlane*) const 
    (__closure=__closure@entry=0x7ffc4c2f2fb0, crtc=<optimized out>, primaryPlane=0x7ffc4c2f2ef8) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:373
        pipeline = 0x55e00b55a720
        planesLeft = {d = 0x55e00b3b2090}
        allPipelines = {d = 0x55e00b5e0e50}
        ret = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        crtcsLeft = {d = 0x55e00aac52b0}
        pipelines = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        planes = {d = 0x55e00aa42650}
        crtcs = {d = 0x55e00aad0d90}
        connectors = {d = 0x55e00b525dd0}
        connector = 0x55e00b211490
        this = 0x55e00a9f8470
        connector = <optimized out>
        encoders = {d = <optimized out>}
        recurse = {__this = 0x55e00bbb7190, __connector = 0x7ffc4c2f2fa8, __connectors = {d = 0x55e00aac52b0}, 
        __crtcs = {d = 0x55e00b3b2090}, __planes = {d = 0x55e00b5e0e50}, __pipelines = {d = 0x55e00b525dd0}}
#2  0x00007fa0e79edf38 in KWin::DrmGpu::findWorkingCombination(QVector<KWin::DrmPipeline*> const&, 
    QVector<KWin::DrmConnector*>, QVector<KWin::DrmCrtc*>, QVector<KWin::DrmPlane*> const&) 
    (this=this@entry=0x55e00a9f8470, pipelines=..., connectors=..., crtcs=..., planes=...) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:384
        workingPipelines = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        plane = @0x55e00aa42668: 0x55e00aa3bc30
        __for_range = @0x7ffc4c2f3088: {d = 0x55e00aa42650}
        __for_begin = 0x55e00aa42668
        __for_end = 0x55e00aa426b0
        crtc = @0x55e00aad0da8: 0x55e00aa63980
        __for_range = @0x7ffc4c2f30b0: {d = 0x55e00aad0d90}
        __for_begin = 0x55e00aad0da8
        __for_end = 0x55e00aad0dc0
        encoder = {d = 0x55e00ab07840}
        encoderId = @0x55e00b213b88: 94
        __for_range = <synthetic pointer>: {d = <optimized out>}
        __for_begin = 0x55e00b213b88
        __for_end = 0x55e00b213b8c
        connector = <optimized out>
        encoders = {d = <optimized out>}
        recurse = {__this = 0x55e00a9f8470, __connector = 0x55e00b211490, __connectors = {d = 0x55e00b525dd0}, 
        __crtcs = {d = 0x55e00aad0d90}, __planes = {d = 0x55e00aa42650}, __pipelines = {d = 0x7fa0ed8a0aa0 
        <QArrayData::shared_null>}}
#3  0x00007fa0e79f014c in KWin::DrmGpu::updateOutputs() (this=this@entry=0x55e00a9f8470) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:307
        resources = {d = <optimized out>}
        lessees = <optimized out>
        removedConnectors = {d = 0x55e00b35fe00}
        connectedConnectors = {d = 0x55e00b4076c0}
        connectors = {d = 0x55e00b4076c0}
        crtcs = {d = 0x55e00aa42840}
        planes = {d = 0x55e00aa42650}
        config = {d = 0x30}
#4  0x00007fa0e79d6108 in KWin::DrmBackend::updateOutputs() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:347
        gpu = 0x55e00a9f8470
        it = 0x55e00aa63ad8
        oldOutputs = {d = <optimized out>}
#5  0x00007fa0e79d73e7 in KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:159
#6  KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:142
#7  0x00007fa0ed7ee76b in  () at /usr/lib/libQt5Core.so.5
#8  0x00007fa0f030c702 in KWin::Session::activeChanged(bool) (this=this@entry=0x55e00aa1b540, _t1=<optimized out>) 
    at /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session.cpp:150
        _a = {0x0, 0x7ffc4c2f32cc}
#9  0x00007fa0f04462b3 in KWin::LogindSession::updateActive(bool) (active=<optimized out>, this=0x55e00aa1b540) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:303
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}

The same pipeline address again

$7 = (KWin::DrmPipeline * const) 0x55e00b55a720

Deletion backtrace (findWorkingCombination)

#0  KWin::DrmPipeline::~DrmPipeline() (this=0x55e00b55a720, __in_chrg=<optimized out>) at 
    /usr/include/c++/11.1.0/bits/atomic_base.h:479
#1  0x00007fa0e79ed99e in operator()(KWin::DrmCrtc*, KWin::DrmPlane*) const 
    (__closure=__closure@entry=0x7ffc4c2f2fb0, crtc=<optimized out>, primaryPlane=0x7ffc4c2f2ef8) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:373
        pipeline = 0x55e00b55a720
        planesLeft = {d = 0x55e00b3305c0}
        allPipelines = {d = 0x55e00b3ec070}
        ret = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        crtcsLeft = {d = 0x55e00b220500}
        pipelines = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        planes = {d = 0x55e00aa42650}
        crtcs = {d = 0x55e00aad0d90}
        connectors = {d = 0x55e00b525dd0}
        connector = 0x55e00b211490
        this = 0x55e00a9f8470
        connector = <optimized out>
        encoders = {d = <optimized out>}
        recurse = {__this = 0x55e00bbb7190, __connector = 0x7ffc4c2f2fa8, __connectors = {d = 0x55e00b220500}, 
        __crtcs = {d = 0x55e00b3305c0}, __planes = {d = 0x55e00b3ec070}, __pipelines = {d = 0x55e00b525dd0}}
#2  0x00007fa0e79edf38 in KWin::DrmGpu::findWorkingCombination(QVector<KWin::DrmPipeline*> const&, 
    QVector<KWin::DrmConnector*>, QVector<KWin::DrmCrtc*>, QVector<KWin::DrmPlane*> const&) 
    (this=this@entry=0x55e00a9f8470, pipelines=..., connectors=..., crtcs=..., planes=...) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:384
        workingPipelines = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        plane = @0x55e00aa42680: 0x55e00aa3be20
        __for_range = @0x7ffc4c2f3088: {d = 0x55e00aa42650}
        __for_begin = 0x55e00aa42680
        __for_end = 0x55e00aa426b0
        crtc = @0x55e00aad0db0: 0x55e00aa63d50
        __for_range = @0x7ffc4c2f30b0: {d = 0x55e00aad0d90}
        __for_begin = 0x55e00aad0db0
        __for_end = 0x55e00aad0dc0
        encoder = {d = 0x55e00ab07840}
        encoderId = @0x55e00b213b88: 94
        __for_range = <synthetic pointer>: {d = <optimized out>}
        __for_begin = 0x55e00b213b88
        __for_end = 0x55e00b213b8c
        connector = <optimized out>
        encoders = {d = <optimized out>}
        recurse = {__this = 0x55e00a9f8470, __connector = 0x55e00b211490, __connectors = {d = 0x55e00b525dd0}, 
        __crtcs = {d = 0x55e00aad0d90}, __planes = {d = 0x55e00aa42650}, __pipelines = {d = 0x7fa0ed8a0aa0 
        <QArrayData::shared_null>}}
#3  0x00007fa0e79f014c in KWin::DrmGpu::updateOutputs() (this=this@entry=0x55e00a9f8470) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:307
        resources = {d = <optimized out>}
        lessees = <optimized out>
        removedConnectors = {d = 0x55e00b35fe00}
        connectedConnectors = {d = 0x55e00b4076c0}
        connectors = {d = 0x55e00b4076c0}
        crtcs = {d = 0x55e00aa42840}
        planes = {d = 0x55e00aa42650}
        config = {d = 0x30}
#4  0x00007fa0e79d6108 in KWin::DrmBackend::updateOutputs() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:347
        gpu = 0x55e00a9f8470
        it = 0x55e00aa63ad8
        oldOutputs = {d = <optimized out>}
#5  0x00007fa0e79d73e7 in KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:159
#6  KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:142
#7  0x00007fa0ed7ee76b in  () at /usr/lib/libQt5Core.so.5
#8  0x00007fa0f030c702 in KWin::Session::activeChanged(bool) (this=this@entry=0x55e00aa1b540, _t1=<optimized out>) 
    at /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session.cpp:150
        _a = {0x0, 0x7ffc4c2f32cc}
#9  0x00007fa0f04462b3 in KWin::LogindSession::updateActive(bool) (active=<optimized out>, this=0x55e00aa1b540) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:303
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}

Same pipeline address yet again...

$8 = (KWin::DrmPipeline * const) 0x55e00b55a720

Deletion backtrace (findWorkingCombination)

#0  KWin::DrmPipeline::~DrmPipeline() (this=0x55e00b55a720, __in_chrg=<optimized out>) at 
    /usr/include/c++/11.1.0/bits/atomic_base.h:479
#1  0x00007fa0e79ed99e in operator()(KWin::DrmCrtc*, KWin::DrmPlane*) const 
    (__closure=__closure@entry=0x7ffc4c2f2fb0, crtc=<optimized out>, primaryPlane=0x7ffc4c2f2ef8) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:373
        pipeline = 0x55e00b55a720
        planesLeft = {d = 0x55e00b621ee0}
        allPipelines = {d = 0x55e00b5e0e50}
        ret = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        crtcsLeft = {d = 0x55e00b5a4f40}
        pipelines = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        planes = {d = 0x55e00aa42650}
        crtcs = {d = 0x55e00aad0d90}
        connectors = {d = 0x55e00b525dd0}
        connector = 0x55e00b211490
        this = 0x55e00a9f8470
        connector = <optimized out>
        encoders = {d = <optimized out>}
        recurse = {__this = 0x55e00bbb7190, __connector = 0x7ffc4c2f2fa8, __connectors = {d = 0x55e00b5a4f40}, 
        __crtcs = {d = 0x55e00b621ee0}, __planes = {d = 0x55e00b5e0e50}, __pipelines = {d = 0x55e00b525dd0}}
#2  0x00007fa0e79edf38 in KWin::DrmGpu::findWorkingCombination(QVector<KWin::DrmPipeline*> const&, 
    QVector<KWin::DrmConnector*>, QVector<KWin::DrmCrtc*>, QVector<KWin::DrmPlane*> const&) 
    (this=this@entry=0x55e00a9f8470, pipelines=..., connectors=..., crtcs=..., planes=...) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:384
        workingPipelines = {d = 0x7fa0ed8a0aa0 <QArrayData::shared_null>}
        plane = @0x55e00aa42698: 0x55e00aa3d6a0
        __for_range = @0x7ffc4c2f3088: {d = 0x55e00aa42650}
        __for_begin = 0x55e00aa42698
        __for_end = 0x55e00aa426b0
        crtc = @0x55e00aad0db8: 0x55e00aa64100
        __for_range = @0x7ffc4c2f30b0: {d = 0x55e00aad0d90}
        __for_begin = 0x55e00aad0db8
        __for_end = 0x55e00aad0dc0
        encoder = {d = 0x55e00ab07840}
        encoderId = @0x55e00b213b88: 94
        __for_range = <synthetic pointer>: {d = <optimized out>}
        __for_begin = 0x55e00b213b88
        __for_end = 0x55e00b213b8c
        connector = <optimized out>
        encoders = {d = <optimized out>}
        recurse = {__this = 0x55e00a9f8470, __connector = 0x55e00b211490, __connectors = {d = 0x55e00b525dd0}, 
        __crtcs = {d = 0x55e00aad0d90}, __planes = {d = 0x55e00aa42650}, __pipelines = {d = 0x7fa0ed8a0aa0 
        <QArrayData::shared_null>}}
#3  0x00007fa0e79f014c in KWin::DrmGpu::updateOutputs() (this=this@entry=0x55e00a9f8470) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:307
        resources = {d = <optimized out>}
        lessees = <optimized out>
        removedConnectors = {d = 0x55e00b35fe00}
        connectedConnectors = {d = 0x55e00b4076c0}
        connectors = {d = 0x55e00b4076c0}
        crtcs = {d = 0x55e00aa42840}
        planes = {d = 0x55e00aa42650}
        config = {d = 0x30}
#4  0x00007fa0e79d6108 in KWin::DrmBackend::updateOutputs() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:347
        gpu = 0x55e00a9f8470
        it = 0x55e00aa63ad8
        oldOutputs = {d = <optimized out>}
#5  0x00007fa0e79d73e7 in KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:159
#6  KWin::DrmBackend::reactivate() (this=0x55e00aa12350) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_backend.cpp:142
#7  0x00007fa0ed7ee76b in  () at /usr/lib/libQt5Core.so.5
#8  0x00007fa0f030c702 in KWin::Session::activeChanged(bool) (this=this@entry=0x55e00aa1b540, _t1=<optimized out>) 
    at /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_session.cpp:150
        _a = {0x0, 0x7ffc4c2f32cc}
#9  0x00007fa0f04462b3 in KWin::LogindSession::updateActive(bool) (active=<optimized out>, this=0x55e00aa1b540) at 
    /home/ash/kde/src/kwin/src/session_logind.cpp:303
        active = {d = {data = {c = 1 '\001', uc = 1 '\001', s = 12545, sc = 1 '\001', us = 12545, i = 1278161153, u 
        = 1278161153, l = 140721586647297, ul = 140721586647297, b = true, d = 6.9525701590701728e-310, f = 45925380, real = 
        6.9525701590701728e-310, ll = 140721586647297, ull = 140721586647297, o = 0x7ffc4c2f3101, ptr = 0x7ffc4c2f3101, shared 
        = 0x7ffc4c2f3101}, type = 1, is_shared = 0, is_null = 0}}

The segmentation fault (note the use of the deleted pipeline in frame #2)

Thread 1 "kwin_wayland" received signal SIGSEGV, Segmentation fault.
0x00007fa0e79f7f70 in QVector<KWin::DrmObject::Property*>::operator[] (i=2, this=<optimized out>) at 
/usr/include/qt/QtCore/qvector.h:454
454	  return d->begin()[i]; }
#0  0x00007fa0e79f7f70 in QVector<KWin::DrmObject::Property*>::operator[](int) const (i=2, this=<optimized out>) at 
    /usr/include/qt/QtCore/qvector.h:454
        vrrProp = <optimized out>
        vrr = <optimized out>
#1  KWin::DrmObject::getProp<KWin::DrmCrtc::PropertyIndex>(KWin::DrmCrtc::PropertyIndex) const 
    (propIndex=KWin::DrmCrtc::PropertyIndex::VrrEnabled, this=<optimized out>) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_object.h:170
        vrrProp = <optimized out>
        vrr = <optimized out>
#2  KWin::DrmPipeline::setSyncMode(KWin::RenderLoopPrivate::SyncMode) (this=0x55e00b55a720, 
    syncMode=KWin::RenderLoopPrivate::SyncMode::Fixed) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_pipeline.cpp:450
        vrrProp = <optimized out>
        vrr = <optimized out>
#3  0x00007fa0e79e4ba5 in KWin::DrmOutput::present(QSharedPointer<KWin::DrmBuffer> const&, QRegion) 
    (this=this@entry=0x55e00b2175f0, buffer=..., damagedRegion=...) at 
    /home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_output.cpp:391
        renderLoopPrivate = <optimized out>
#4  0x00007fa0e79ff58f in KWin::EglGbmBackend::endFrame(KWin::AbstractOutput*, QRegion const&, QRegion const&) 
    (this=0x7ffc4c2f2f98, drmOutput=<optimized out>, renderedRegion=<optimized out>, damagedRegion=...)
    at /home/ash/kde/src/kwin/src/plugins/platforms/drm/egl_gbm_backend.cpp:589
        output = 
    @0x55e00b219520: {output = 0x55e00b2175f0, old = {shadowBuffer = {value = 0x0, d = 0x0}, gbmSurface = {value = 
        0x0, d = 0x0}, bufferAge = 0, damageJournal = {m_log = {<QListSpecialMethods<QRegion>> = {<No data fields>}, {p = 
        {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, 
        static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fa0ed8a15b0 
        <QListData::shared_null>}, d = 0x7fa0ed8a15b0 <QListData::shared_null>}}, m_capacity = 10}, importMode = 
        KWin::EglGbmBackend::ImportMode::Dmabuf, importSwapchain = {value = 0x0, d = 0x0}}, current = {shadowBuffer = {value = 
        0x0, d = 0x0}, gbmSurface = {value = 0x55e00b2102e0, d = 0x55e00b2102d0}, bufferAge = 3, damageJournal = {m_log = 
        {<QListSpecialMethods<QRegion>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = 
        {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, 
        begin = 0, end = 0, array = {0x0}}, d = 0x55e00b57ed50}, d = 0x55e00b57ed50}}, m_capacity = 10}, importMode = 
        KWin::EglGbmBackend::ImportMode::Dmabuf, importSwapchain = {value = 0x0, d = 0x0}}, surfaceInterface = 0x0}
        dirty = {d = 0x7fa0e001ec80, static shared_empty = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> 
        = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, qt_rgn = 0x7fa0ee130ea0}}
        buffer = {value = 0x55e00b4338f0, d = 0x55e00b4338e0}
#5  0x00007fa0e5e7173e in KWin::SceneOpenGL::paint(KWin::AbstractOutput*, QRegion const&, QList<KWin::Toplevel*> 
    const&, KWin::RenderLoop*) (this=
    0x55e00ac15110, output=0x55e00b2175f0, damage=<optimized out>, toplevels=<optimized out>, renderLoop=<optimized 
    out>) at /home/ash/kde/src/kwin/src/plugins/scenes/opengl/scene_opengl.cpp:462
        fullscreenSurface = 0x7ffc4c2f31e0
        directScanout = <optimized out>
        update = {d = 0x7fa0e001ec80}
        valid = {d = 0x55e00b585950}
        repaint = {d = 0x55e00b4b32f0}
        geo = {x1 = 0, y1 = 0, x2 = 1919, y2 = 1079}
        scaling = <optimized out>
        status = <optimized out>
#6  0x00007fa0f035ab09 in KWin::Compositor::composite(KWin::RenderLoop*) (this=0x55e00ab33480, 
    renderLoop=0x55e00b20d260) at /home/ash/kde/src/kwin/src/composite.cpp:619
        output = @0x55e00ab93770: 0x55e00b2175f0
        _duration = {d = <optimized out>}
        windows = 
            {<QListSpecialMethods<KWin::Toplevel*>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic 
            = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, 
            alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x55e00ab8db40}, d = 0x55e00ab8db40}}
        repaints = {d = 0x7fa0e001e770}
#7  0x00007fa0ed7ee76b in  () at /usr/lib/libQt5Core.so.5
#8  0x00007fa0f030fe92 in KWin::RenderLoop::frameRequested(KWin::RenderLoop*) (this=<optimized out>, _t1=<optimized 
    out>) at /home/ash/kde/build/kwin/src/kwin_autogen/EWIEGA46WW/moc_renderloop.cpp:206
        _a = {0x0, 0x7ffc4c2f33d8}
#9  0x00007fa0f0401de3 in KWin::RenderLoopPrivate::dispatch() (this=0x55e00b209f90) at 
    /home/ash/kde/src/kwin/src/renderloop.cpp:148
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment