Bug 439134 - Texture bound too early
Summary: Texture bound too early
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: core (show other bugs)
Version: git master
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
: 439041 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-06-24 22:28 UTC by Aleix Pol
Modified: 2021-07-12 14:54 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Aleix Pol 2021-06-24 22:28:48 UTC
Opening a bug so not to forget.

#0  0x00007f1044ec2d22 in raise () at /usr/lib/libc.so.6
#1  0x00007f1044eac90e in abort () at /usr/lib/libc.so.6
#2  0x00007f10457ecbb1 in qt_message_fatal (message=<synthetic pointer>..., context=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.cpp:1914
#3  QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7ffdfcda19b8, msg=msg@entry=0x7f1045aed000 "ASSERT: \"%s\" in file %s, line %d") at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.cpp:893
#4  0x00007f10457ebfe2 in qt_assert(char const*, char const*, int) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qglobal.cpp:3358
#5  0x00007f10486868c4 in KWin::GLTexture::bind() (this=0x559d17f6fab0) at /home/apol/devel/frameworks/kwin/src/libkwineffects/kwingltexture.cpp:422
#6  0x00007f104868605e in KWin::GLTexture::GLTexture(QImage const&, unsigned int) (this=0x559d17f6fab0, image=..., target=3553) at /home/apol/devel/frameworks/kwin/src/libkwineffects/kwingltexture.cpp:86
#7  0x00007f103dc1d9aa in KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7::operator()() const (this=0x559d18556a30) at /home/apol/devel/frameworks/kwin/src/plugins/scenes/opengl/scene_opengl.cpp:307
#8  0x00007f103dc28386 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7>::call(KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7&, void**) (f=..., arg=0x7ffdfcda1e70) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:146
#9  0x00007f103dc28351 in QtPrivate::Functor<KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7, 0>::call<QtPrivate::List<>, void>(KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7&, void*, void**) (f=..., arg=0x7ffdfcda1e70) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:256
#10 0x00007f103dc282f1 in QtPrivate::QFunctorSlotObject<KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x559d18556a20, r=0x559d16952a50, a=0x7ffdfcda1e70, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:443
#11 0x00007f1045a42133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdfcda1e70, r=0x559d16952a50, this=0x559d18556a20) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#12 doActivate<false>(QObject*, int, void**) (sender=0x559d1654ed90, signal_index=3, argv=0x7ffdfcda1e70) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#13 0x00007f104899bd70 in KWin::Cursors::currentCursorChanged(KWin::Cursor*) (this=0x559d1654ed90, _t1=0x559d165c2950) at src/kwin_autogen/EWIEGA46WW/moc_cursor.cpp:385
#14 0x00007f1048a2e569 in KWin::Cursors::emitCurrentCursorChanged() (this=0x559d1654ed90) at /home/apol/devel/frameworks/kwin/src/cursor.cpp:81
#15 0x00007f1048a3a048 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::Cursors::*)()>::call(void (KWin::Cursors::*)(), KWin::Cursors*, void**) (f=(void (KWin::Cursors::*)(KWin::Cursors * const)) 0x7f1048a2e550 <KWin::Cursors::emitCurrentCursorChanged()>, o=0x559d1654ed90, arg=0x7ffdfcda2060)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:152
#16 0x00007f1048a39fad in QtPrivate::FunctionPointer<void (KWin::Cursors::*)()>::call<QtPrivate::List<>, void>(void (KWin::Cursors::*)(), KWin::Cursors*, void**) (f=(void (KWin::Cursors::*)(KWin::Cursors * const)) 0x7f1048a2e550 <KWin::Cursors::emitCurrentCursorChanged()>, o=0x559d1654ed90, arg=0x7ffdfcda2060)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:185
#17 0x00007f1048a39ef2 in QtPrivate::QSlotObject<void (KWin::Cursors::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x559d165c1990, r=0x559d1654ed90, a=0x7ffdfcda2060, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:418
#18 0x00007f1045a42133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdfcda2060, r=0x559d1654ed90, this=0x559d165c1990) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#19 doActivate<false>(QObject*, int, void**) (sender=0x559d165c2950, signal_index=5, argv=0x7ffdfcda2060) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#20 0x00007f104899b845 in KWin::Cursor::cursorChanged() (this=0x559d165c2950) at src/kwin_autogen/EWIEGA46WW/moc_cursor.cpp:217
#21 0x00007f1048a2efed in KWin::Cursor::updateCursor(QImage const&, QPoint const&) (this=0x559d165c2950, image=..., hotspot=...) at /home/apol/devel/frameworks/kwin/src/cursor.cpp:180
#22 0x00007f1048b68087 in KWin::PointerInputRedirection::init()::$_0::operator()() const (this=0x559d1723e330) at /home/apol/devel/frameworks/kwin/src/pointer_input.cpp:120
#23 0x00007f1048b67fd6 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::PointerInputRedirection::init()::$_0>::call(KWin::PointerInputRedirection::init()::$_0&, void**) (f=..., arg=0x7ffdfcda22a0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:146
#24 0x00007f1048b67fa1 in QtPrivate::Functor<KWin::PointerInputRedirection::init()::$_0, 0>::call<QtPrivate::List<>, void>(KWin::PointerInputRedirection::init()::$_0&, void*, void**) (f=..., arg=0x7ffdfcda22a0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:256
#25 0x00007f1048b67f41 in QtPrivate::QFunctorSlotObject<KWin::PointerInputRedirection::init()::$_0, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x559d1723e320, r=0x559d165c2950, a=0x7ffdfcda22a0, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:443
#26 0x00007f1045a42133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdfcda22a0, r=0x559d165c2950, this=0x559d1723e320) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#27 doActivate<false>(QObject*, int, void**) (sender=0x559d16661a80, signal_index=3, argv=0x7ffdfcda22a0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#28 0x00007f10489af2e2 in KWin::CursorImage::changed() (this=0x559d16661a80) at src/kwin_autogen/EWIEGA46WW/moc_pointer_input.cpp:311
#29 0x00007f1048b66452 in KWin::CursorImage::updateServerCursor() (this=0x559d16661a80) at /home/apol/devel/frameworks/kwin/src/pointer_input.cpp:1103
#30 0x00007f1048b6f0f8 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::CursorImage::*)()>::call(void (KWin::CursorImage::*)(), KWin::CursorImage*, void**) (f=(void (KWin::CursorImage::*)(KWin::CursorImage * const)) 0x7f1048b661d0 <KWin::CursorImage::updateServerCursor()>, o=0x559d16661a80, arg=0x7ffdfcda2590)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:152
#31 0x00007f1048b6f05d in QtPrivate::FunctionPointer<void (KWin::CursorImage::*)()>::call<QtPrivate::List<>, void>(void (KWin::CursorImage::*)(), KWin::CursorImage*, void**) (f=(void (KWin::CursorImage::*)(KWin::CursorImage * const)) 0x7f1048b661d0 <KWin::CursorImage::updateServerCursor()>, o=0x559d16661a80, arg=0x7ffdfcda2590)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:185
#32 0x00007f1048b6efa2 in QtPrivate::QSlotObject<void (KWin::CursorImage::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x559d18439270, r=0x559d16661a80, a=0x7ffdfcda2590, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:418
#33 0x00007f1045a42133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdfcda2590, r=0x559d16661a80, this=0x559d18439270) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#34 doActivate<false>(QObject*, int, void**) (sender=0x559d165bdff0, signal_index=3, argv=0x7ffdfcda2590) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#35 0x00007f1045a42133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdfcda2660, r=0x559d165bdff0, this=0x559d170ba1b0) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#36 doActivate<false>(QObject*, int, void**) (sender=0x559d1704da90, signal_index=6, argv=0x7ffdfcda2660) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#37 0x00007f10465e0656 in KWaylandServer::CursorPrivate::update(KWaylandServer::SurfaceInterface*, unsigned int, QPoint const&) (this=0x559d1721a780, s=<optimized out>, s@entry=0x559d17bb3b80, serial=<optimized out>, serial@entry=31932, p=...) at /home/apol/devel/frameworks/kwayland-server/src/server/pointer_interface.cpp:323
#38 0x00007f10465e0301 in KWaylandServer::PointerInterfacePrivate::pointer_set_cursor(QtWaylandServer::wl_pointer::Resource*, unsigned int, wl_resource*, int, int) (this=0x559d167404d0, resource=0x559d1812eac0, serial=0, surface_resource=<optimized out>, hotspot_x=4, hotspot_y=4)
    at /home/apol/devel/frameworks/kwayland-server/src/server/pointer_interface.cpp:98
#39 0x00007f1043c19acd in  () at /usr/lib/libffi.so.7
#40 0x00007f1043c1903a in  () at /usr/lib/libffi.so.7
#41 0x00007f1046529124 in  () at /usr/lib/libwayland-server.so.0
#42 0x00007f104652457c in  () at /usr/lib/libwayland-server.so.0
#43 0x00007f104652707a in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#44 0x00007f10465c5a94 in KWaylandServer::Display::dispatchEvents() (this=<optimized out>) at /home/apol/devel/frameworks/kwayland-server/src/server/display.cpp:107
#45 0x00007f1045a42133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdfcda2e60, r=0x559d165467c0, this=0x559d17320900) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#46 doActivate<false>(QObject*, int, void**) (sender=0x559d17335970, signal_index=3, argv=0x7ffdfcda2e60) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#47 0x00007f1045a3b5ff in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x559d17335970, m=m@entry=0x7f1045cdc140 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdfcda2e60) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3946
#48 0x00007f1045a4561f in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x559d17335970, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178
#49 0x00007f1045a45e1b in QSocketNotifier::event(QEvent*) (this=0x559d17335970, e=0x7ffdfcda2f80) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qsocketnotifier.cpp:302
#50 0x00007f104685f6cf in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x559d17335970, e=0x7ffdfcda2f80) at /home/apol/devel/frameworks/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3632
#51 0x00007f1045a0b9ca in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x559d17335970, event=0x7ffdfcda2f80) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1064
#52 0x00007f1045a6039b in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=0x559d16507210) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:304
#53 0x00007f1045a607fb in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:511
#54 0x0000559d1572649d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp:63
#55 0x00007f1045a0a3cb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffdfcda3110, flags=..., flags@entry=...) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qflags.h:69
#56 0x00007f1045a126b0 in QCoreApplication::exec() () at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qflags.h:121
#57 0x0000559d156eb764 in main(int, char**) (argc=5, argv=0x7ffdfcda3bb8) at /home/apol/devel/frameworks/kwin/src/main_wayland.cpp:719
Comment 1 Vlad Zahorodnii 2021-06-25 09:11:16 UTC
I think the problem is that the cursor texture is created without opengl context current.
Comment 2 Aleix Pol 2021-07-05 16:13:25 UTC
Still have the crash

#0  0x00007f5d49fcfd22 in raise () at /usr/lib/libc.so.6
#1  0x00007f5d49fb990e in abort () at /usr/lib/libc.so.6
#2  0x00007f5d4a8d9bb1 in qt_message_fatal (message=<synthetic pointer>..., context=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.cpp:1914
#3  QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7ffdf10d94d8, msg=msg@entry=0x7f5d4abda000 "ASSERT: \"%s\" in file %s, line %d") at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.cpp:893
#4  0x00007f5d4a8d8fe2 in qt_assert(char const*, char const*, int) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qglobal.cpp:3358
#5  0x00007f5d4d740f64 in KWin::GLTexture::bind() (this=0x564d12c77b50) at /home/apol/devel/frameworks/kwin/src/libkwineffects/kwingltexture.cpp:422
#6  0x00007f5d4d7406fe in KWin::GLTexture::GLTexture(QImage const&, unsigned int) (this=0x564d12c77b50, image=..., target=3553) at /home/apol/devel/frameworks/kwin/src/libkwineffects/kwingltexture.cpp:86
#7  0x00007f5d3ed2c5ba in KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7::operator()() const (this=0x564d12cc3eb0) at /home/apol/devel/frameworks/kwin/src/plugins/scenes/opengl/scene_opengl.cpp:307
#8  0x00007f5d3ed36f96 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7>::call(KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7&, void**) (f=..., arg=0x7ffdf10d9990) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:146
#9  0x00007f5d3ed36f61 in QtPrivate::Functor<KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7, 0>::call<QtPrivate::List<>, void>(KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7&, void*, void**) (f=..., arg=0x7ffdf10d9990) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:256
#10 0x00007f5d3ed36f01 in QtPrivate::QFunctorSlotObject<KWin::SceneOpenGL2::paintCursor(QRegion const&)::$_7, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x564d12cc3ea0, r=0x564d11651b80, a=0x7ffdf10d9990, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:443
#11 0x00007f5d4ab2f133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdf10d9990, r=0x564d11651b80, this=0x564d12cc3ea0) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#12 doActivate<false>(QObject*, int, void**) (sender=0x564d112da190, signal_index=3, argv=0x7ffdf10d9990) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#13 0x00007f5d4da37210 in KWin::Cursors::currentCursorChanged(KWin::Cursor*) (this=0x564d112da190, _t1=0x564d114593c0) at src/kwin_autogen/EWIEGA46WW/moc_cursor.cpp:385
#14 0x00007f5d4dac9829 in KWin::Cursors::setCurrentCursor(KWin::Cursor*) (this=0x564d114593c0, cursor=0x564d11499740) at /home/apol/devel/frameworks/kwin/src/cursor.cpp:74
#15 0x00007f5d4dad5308 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::Cursors::*)()>::call(void (KWin::Cursors::*)(), KWin::Cursors*, void**) (f=(void (KWin::Cursors::*)(KWin::Cursors * const)) 0x7f5d4dac9810 <KWin::Cursors::setCurrentCursor(KWin::Cursor*)+464>, o=0x564d112da190, arg=0x7ffdf10d9b80)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:151
#16 0x00007f5d4dad526d in QtPrivate::QSlotObject<void (KWin::Cursors::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=0, this_=0x7f5d4dac9810 <KWin::Cursors::setCurrentCursor(KWin::Cursor*)+464>, r=0x0, a=0x7f5d4dac9810 <KWin::Cursors::setCurrentCursor(KWin::Cursor*)+464>, ret=0x564d112da190)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:425
#17 0x00007f5d4dad51b2 in QtPrivate::QSlotObject<void (KWin::Cursors::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x564d11458690, r=0x564d112da190, a=0x7ffdf10d9b80, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:413
#18 0x00007f5d4ab2f133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdf10d9b80, r=0x564d112da190, this=0x564d11458690) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#19 doActivate<false>(QObject*, int, void**) (sender=0x564d114593c0, signal_index=5, argv=0x7ffdf10d9b80) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#20 0x00007f5d4da36ce5 in KWin::Cursor::cursorChanged() (this=0x564d114593c0) at src/kwin_autogen/EWIEGA46WW/moc_cursor.cpp:217
#21 0x00007f5d4daca2ad in KWin::Cursor::setPos(int, int) (this=0x7ffdf10d9c50, x=22093, y=289772480) at /home/apol/devel/frameworks/kwin/src/cursor.cpp:173
#22 0x00007f5d4dc01a27 in KWin::PointerInputRedirection::init()::$_0::operator()() const (this=0x564d11fb7980) at /home/apol/devel/frameworks/kwin/src/pointer_input.cpp:120
#23 0x00007f5d4dc01976 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::PointerInputRedirection::init()::$_0>::call(KWin::PointerInputRedirection::init()::$_0&, void**) (f=..., arg=0x7ffdf10d9dc0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:146
#24 0x00007f5d4dc01941 in QtPrivate::Functor<KWin::PointerInputRedirection::init()::$_0, 0>::call<QtPrivate::List<>, void>(KWin::PointerInputRedirection::init()::$_0&, void*, void**) (f=..., arg=0x7ffdf10d9dc0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:256
#25 0x00007f5d4dc018e1 in QtPrivate::QFunctorSlotObject<KWin::PointerInputRedirection::init()::$_0, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x564d11fb7970, r=0x564d114593c0, a=0x7ffdf10d9dc0, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:443
#26 0x00007f5d4ab2f133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdf10d9dc0, r=0x564d114593c0, this=0x564d11fb7970) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#27 doActivate<false>(QObject*, int, void**) (sender=0x564d113c0a00, signal_index=3, argv=0x7ffdf10d9dc0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#28 0x00007f5d4da4a672 in KWin::CursorImage::changed() (this=0x564d113c0a00) at src/kwin_autogen/EWIEGA46WW/moc_pointer_input.cpp:311
#29 0x00007f5d4dbfff12 in KWin::CursorImage::updateServerCursor() (this=0x564d113c0a00) at /home/apol/devel/frameworks/kwin/src/pointer_input.cpp:1129
#30 0x00007f5d4dc08b48 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::CursorImage::*)()>::call(void (KWin::CursorImage::*)(), KWin::CursorImage*, void**) (f=(void (KWin::CursorImage::*)(KWin::CursorImage * const)) 0x7f5d4dbffc90 <KWin::CursorImage::updateServerCursor()>, o=0x564d113c0a00, arg=0x7ffdf10da0b0)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:152
#31 0x00007f5d4dc08aad in QtPrivate::FunctionPointer<void (KWin::CursorImage::*)()>::call<QtPrivate::List<>, void>(void (KWin::CursorImage::*)(), KWin::CursorImage*, void**) (f=(void (KWin::CursorImage::*)(KWin::CursorImage * const)) 0x7f5d4dbffc90 <KWin::CursorImage::updateServerCursor()>, o=0x564d113c0a00, arg=0x7ffdf10da0b0)
    at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:185
#32 0x00007f5d4dc089f2 in QtPrivate::QSlotObject<void (KWin::CursorImage::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x564d12db8580, r=0x564d113c0a00, a=0x7ffdf10da0b0, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:418
#33 0x00007f5d4ab2f133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdf10da0b0, r=0x564d113c0a00, this=0x564d12db8580) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#34 doActivate<false>(QObject*, int, void**) (sender=0x564d11343210, signal_index=3, argv=0x7ffdf10da0b0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#35 0x00007f5d4ab2f133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdf10da180, r=0x564d11343210, this=0x564d12020660) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#36 doActivate<false>(QObject*, int, void**) (sender=0x564d1201f920, signal_index=6, argv=0x7ffdf10da180) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#37 0x00007f5d4b6c8f36 in KWaylandServer::CursorPrivate::update(KWaylandServer::SurfaceInterface*, unsigned int, QPoint const&) (this=0x564d11d94e00, s=<optimized out>, s@entry=0x564d11f807e0, serial=<optimized out>, serial@entry=8679, p=...) at /home/apol/devel/frameworks/kwayland-server/src/server/pointer_interface.cpp:323
#38 0x00007f5d4b6c8be1 in KWaylandServer::PointerInterfacePrivate::pointer_set_cursor(QtWaylandServer::wl_pointer::Resource*, unsigned int, wl_resource*, int, int) (this=0x564d114a2b10, resource=0x564d11deb900, serial=0, surface_resource=<optimized out>, hotspot_x=4, hotspot_y=4)
    at /home/apol/devel/frameworks/kwayland-server/src/server/pointer_interface.cpp:98
#39 0x00007f5d48d1bacd in  () at /usr/lib/libffi.so.7
#40 0x00007f5d48d1b03a in  () at /usr/lib/libffi.so.7
#41 0x00007f5d4b61677b in wl_closure_invoke (closure=0x564d12c7e200, flags=2, target=<optimized out>, opcode=0, data=<optimized out>) at ../src/connection.c:1018
#42 0x00007f5d4b611223 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x564d128c0d00) at ../src/wayland-server.c:431
#43 0x00007f5d4b61496c in wl_event_loop_dispatch (loop=<optimized out>, timeout=<optimized out>) at ../src/event-loop.c:1027
#44 0x00007f5d4b6ae344 in KWaylandServer::Display::dispatchEvents() (this=<optimized out>) at /home/apol/devel/frameworks/kwayland-server/src/server/display.cpp:109
#45 0x00007f5d4ab2f133 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdf10da980, r=0x564d112f3640, this=0x564d112cb0d0) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#46 doActivate<false>(QObject*, int, void**) (sender=0x564d1203d7e0, signal_index=3, argv=0x7ffdf10da980) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#47 0x00007f5d4ab285ff in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x564d1203d7e0, m=m@entry=0x7f5d4adc9140 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdf10da980) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3946
#48 0x00007f5d4ab3261f in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x564d1203d7e0, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178
#49 0x00007f5d4ab32e1b in QSocketNotifier::event(QEvent*) (this=0x564d1203d7e0, e=0x7ffdf10daaa0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qsocketnotifier.cpp:302
#50 0x00007f5d4b9496cf in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x564d1203d7e0, e=0x7ffdf10daaa0) at /home/apol/devel/frameworks/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3632
#51 0x00007f5d4aaf89ca in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x564d1203d7e0, event=0x7ffdf10daaa0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1064
#52 0x00007f5d4ab4d39b in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=0x564d11295790) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:304
#53 0x00007f5d4ab4d7fb in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:511
#54 0x0000564d10c6749d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp:63
#55 0x00007f5d4aaf73cb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffdf10dac30, flags=..., flags@entry=...) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qflags.h:69
#56 0x00007f5d4aaff6b0 in QCoreApplication::exec() () at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qflags.h:121
#57 0x0000564d10c2c764 in main(int, char**) (argc=5, argv=0x7ffdf10db6d8) at /home/apol/devel/frameworks/kwin/src/main_wayland.cpp:719
Comment 3 Bug Janitor Service 2021-07-12 09:57:00 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/1165
Comment 4 Zamundaaa 2021-07-12 10:30:35 UTC
*** Bug 439041 has been marked as a duplicate of this bug. ***
Comment 5 Aleix Pol 2021-07-12 13:15:50 UTC
Git commit 23129c09cebd5fc0220156934100d54f606d3b13 by Aleix Pol Gonzalez, on behalf of Aleix Pol.
Committed on 12/07/2021 at 13:15.
Pushed by apol into branch 'master'.

SceneOpenGL2::paintCursor make sure the OpenGL context is current

Instead of painting right away when Cursors::currentCursorChanged is
emitted, mark as dirty and call again when paintCursor is called.

M  +2    -1    src/libkwineffects/kwingltexture.cpp
M  +23   -13   src/plugins/scenes/opengl/scene_opengl.cpp
M  +1    -0    src/plugins/scenes/opengl/scene_opengl.h

https://invent.kde.org/plasma/kwin/commit/23129c09cebd5fc0220156934100d54f606d3b13