Bug 470980 - Assert resolving eglDestroyImageKHR
Summary: Assert resolving eglDestroyImageKHR
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: git master
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: qt6
: 434686 473665 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-06-13 13:56 UTC by Justin Zobel
Modified: 2024-02-26 15:41 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.0.1
Sentry Crash Report:
justin.zobel: NVIDIA+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Justin Zobel 2023-06-13 13:56:01 UTC
#0  0x00007f61d268f6d4 in __pthread_kill_implementation () at /lib64/libc.so.6
#1  0x00007f61d263e71e in raise () at /lib64/libc.so.6
#2  0x00007f61d262687f in abort () at /lib64/libc.so.6
#3  0x00007f61d4d9ab4f in egl_provider_resolver (name=name@entry=0x7f61d4dc0bfc <entrypoint_strings+988> "eglDestroyImageKHR", providers=providers@entry=0x7f61d4dc07a4 <providers.23.lto_priv>, entrypoints=entrypoints@entry=0x7f61d4dc0798 <entrypoints.22.lto_priv>) at src/egl_generated_dispatch.c:3911
#4  0x00007f61d4d9e0ea in epoxy_eglDestroyImageKHR_resolver () at src/egl_generated_dispatch.c:4264
#5  epoxy_eglDestroyImageKHR_global_rewrite_ptr (dpy=0x55f9412b7930, image=0x55f94108cde1) at src/egl_generated_dispatch.c:5059
#6  0x00007f61d2fddd24 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffce97ebcc0, r=0x55f9413913a0, this=0x55f9410de340) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#7  doActivate<false>(QObject*, int, void**) (sender=0x55f941e53200, signal_index=0, argv=0x7ffce97ebcc0) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobject.cpp:3992
#8  0x00007f61d2fd47a7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55f941e53200, m=m@entry=0x7f61d34042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffce97ebcc0) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobject.cpp:4052
#9  0x00007f61d2fd4861 in QObject::destroyed(QObject*) (this=this@entry=0x55f941e53200, _t1=<optimized out>, _t1@entry=0x55f941e53200) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#10 0x00007f61d2fdb602 in QObject::~QObject() (this=0x55f941e53200, __in_chrg=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobject.cpp:1014
#11 0x00007f61d5e0550e in KWaylandServer::LinuxDmaBufV1ClientBuffer::~LinuxDmaBufV1ClientBuffer() () at /lib64/libkwin.so.5
#12 0x00007f61d2d5c791 in destroy_resource (element=0x55f9410ddf10, data=data@entry=0x0, flags=0) at ../src/wayland-server.c:732
#13 0x00007f61d2d5e72a in wl_resource_destroy (resource=<optimized out>) at ../src/wayland-server.c:749
#14 0x00007f61d105bbe6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#15 0x00007f61d10584bf in ffi_call_int (cif=cif@entry=0x7ffce97ebff0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#16 0x00007f61d105b18e in ffi_call (cif=cif@entry=0x7ffce97ebff0, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffce97ec0c0) at ../src/x86/ffi64.c:710
#17 0x00007f61d2d59843 in wl_closure_invoke (closure=closure@entry=0x55f9421a2570, target=<optimized out>, target@entry=0x55f9410ddf10, opcode=opcode@entry=0, data=<optimized out>, data@entry=0x55f941a94e50, flags=2) at ../src/connection.c:1025
#18 0x00007f61d2d5e0b4 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x55f941a94e50) at ../src/wayland-server.c:438
#19 0x00007f61d2d5c8e2 in wl_event_loop_dispatch (loop=0x55f940f67960, timeout=<optimized out>) at ../src/event-loop.c:1027
#20 0x00007f61d6076ee9 in KWaylandServer::Display::dispatchEvents() () at /lib64/libkwin.so.5
#21 0x00007f61d2fddd24 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffce97ec700, r=0x55f940f67600, this=0x55f9418b3dc0) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#22 doActivate<false>(QObject*, int, void**) (sender=0x55f9418ee1c0, signal_index=3, argv=0x7ffce97ec700) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobject.cpp:3992
#23 0x00007f61d2fd47a7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55f9418ee1c0, m=m@entry=0x7f61d340a0a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffce97ec700) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qobject.cpp:4052
#24 0x00007f61d2fedc2d in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x55f9418ee1c0, _t1=..., _t2=<optimized out>, _t3=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:231
#25 0x00007f61d2fee42b in QSocketNotifier::event(QEvent*) (this=0x55f9418ee1c0, e=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qsocketnotifier.cpp:326
#26 0x00007f61d41c0b08 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55f9418ee1c0, e=0x7ffce97ec850) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/widgets/kernel/qapplication.cpp:3287
#27 0x00007f61d2f7c358 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55f9418ee1c0, event=0x7ffce97ec850) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qcoreapplication.cpp:1115
#28 0x00007f61d2f7c55d in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qcoreapplication.cpp:1533
#29 0x00007f61d30fcc1e in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=this@entry=0x55f940f76ca0) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:268
#30 0x00007f61d30fd547 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:477
#31 0x00007f61d3d434c2 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#32 0x00007f61d2f88ee3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffce97eca10, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/global/qflags.h:34
#33 0x00007f61d2f84b8d in QCoreApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/corelib/global/qflags.h:74
#34 0x00007f61d37f85cd in QGuiApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/gui/kernel/qguiapplication.cpp:1894
#35 0x00007f61d41c0a79 in QApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc39.x86_64/src/widgets/kernel/qapplication.cpp:2566
#36 0x000055f93faa3371 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwin-5.27.80^20230612.160951.b9da04b-15.fc39.x86_64/src/main_wayland.cpp:613
Comment 1 David Edmundson 2023-06-13 18:31:47 UTC
Does it happen consistently? 
If so can you upgrade/downgrade mesa or the nvidia driver
Comment 2 Justin Zobel 2023-06-14 03:55:12 UTC
Sadly I can't.
Comment 3 Kai Uwe Broulik 2023-08-01 18:41:24 UTC
You're not using Aurorae window decoration (e.g. Plastique), are you?
Comment 4 Justin Zobel 2023-08-04 02:06:37 UTC
Nope, just standard default Breeze.
Comment 5 Vlad Zahorodnii 2023-08-30 13:19:39 UTC
*** Bug 473665 has been marked as a duplicate of this bug. ***
Comment 6 Vlad Zahorodnii 2023-08-30 13:20:02 UTC
*** Bug 434686 has been marked as a duplicate of this bug. ***
Comment 7 Vlad Zahorodnii 2023-08-30 13:26:11 UTC
Can you confirm whether this crash happens after updating the system?
Comment 8 Landgraf132 2023-08-30 14:39:51 UTC
(In reply to Vlad Zahorodnii from comment #7)
> Can you confirm whether this crash happens after updating the system?

The bug appears constantly, without updating the system. Began to appear after connecting a new second highDPI monitor. The first launch went well, after the restart there was a crash. If I remove the kscreen settings, the launch will again be normal until the reboot.
Comment 9 Justin Zobel 2023-10-23 23:06:36 UTC
I haven't seen this crash for quite a while.
Comment 10 Landgraf132 2023-10-24 10:32:24 UTC
(In reply to Justin Zobel from comment #9)
> I haven't seen this crash for quite a while.

I have 100% reproducibility. Wayland session is completely unusable for me.
Comment 11 Nate Graham 2023-10-24 13:53:20 UTC
Landgraf132@yandex.ru, are you using Plasma 6 from current git master, and is the backtrace of your crash identical to this one?
Comment 12 Bug Janitor Service 2023-11-08 03:45:53 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 13 Bug Janitor Service 2023-11-23 03:45:45 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!
Comment 14 Vlad Zahorodnii 2024-02-26 13:48:50 UTC
Git commit 13c092d6718ab40d2e2d96d8d49611731e5051a0 by Vlad Zahorodnii.
Committed on 26/02/2024 at 13:31.
Pushed by vladz into branch 'master'.

Fix a crash in eglDestroyImageKHR()

Apparently, libepoxy requires a current EGL display in order to resolve
EGL functions. This is unexpected as most of the EGL functions require no
current opengl context.

This change makes kwin bypass libepoxy for problematic cases.

M  +25   -15   src/opengl/egldisplay.cpp
M  +13   -1    src/opengl/egldisplay.h
M  +1    -1    src/opengl/eglimagetexture.cpp
M  +3    -3    src/platformsupport/scenes/opengl/abstract_egl_backend.cpp

https://invent.kde.org/plasma/kwin/-/commit/13c092d6718ab40d2e2d96d8d49611731e5051a0
Comment 15 Vlad Zahorodnii 2024-02-26 13:58:21 UTC
Git commit 4ae0f0cd654ce3e2a4d885062bddf612f7579f97 by Vlad Zahorodnii.
Committed on 26/02/2024 at 13:49.
Pushed by vladz into branch 'Plasma/6.0'.

Fix a crash in eglDestroyImageKHR()

Apparently, libepoxy requires a current EGL display in order to resolve
EGL functions. This is unexpected as most of the EGL functions require no
current opengl context.

This change makes kwin bypass libepoxy for problematic cases.


(cherry picked from commit 13c092d6718ab40d2e2d96d8d49611731e5051a0)

M  +25   -15   src/opengl/egldisplay.cpp
M  +13   -1    src/opengl/egldisplay.h
M  +1    -1    src/opengl/eglimagetexture.cpp
M  +3    -3    src/platformsupport/scenes/opengl/abstract_egl_backend.cpp

https://invent.kde.org/plasma/kwin/-/commit/4ae0f0cd654ce3e2a4d885062bddf612f7579f97