Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault on startup with NVIDIA drivers #17

Open
mirai-toto opened this issue Aug 24, 2024 · 8 comments
Open

Segfault on startup with NVIDIA drivers #17

mirai-toto opened this issue Aug 24, 2024 · 8 comments

Comments

@mirai-toto
Copy link

I'm encountering a segfault error at startup with the application. modrinth-app-wrapped killed by SIGSEGV
Unfortunately, there are no meaningful logs available in the var/spool/abrt/ccpp-2024-08-24-20:33:29.238536-24243.
Details:

Tested OS:
    Fedora 40 (Gnome)
    Bazzite
GPU: Nvidia
Tried: Switching to X11 (no effect)

Notes:

The issue persists across both operating systems.
The AppImage and Windows exe versions work without problems.
@FelixBrakel
Copy link

Same here, crashes on both Nvidia 555 and 560.

@FelixBrakel
Copy link

FelixBrakel commented Aug 28, 2024

#0  ___pthread_mutex_lock (mutex=0x0) at pthread_mutex_lock.c:80
        type = <optimized out>
        __PRETTY_FUNCTION__ = "___pthread_mutex_lock"
        id = <optimized out>
#1  0x000076eda2848dd9 in _dbus_platform_rmutex_lock (mutex=<optimized out>) at ../../dbus/dbus-sysdeps-pthread.c:159
        tmp = <optimized out>
#2  0x000076eda283aeab in _dbus_lock (lock=lock@entry=_DBUS_LOCK_bus) at ../../dbus/dbus-threads.c:348
#3  0x000076eda281e880 in internal_bus_get (type=DBUS_BUS_SYSTEM, private=0, error=0x7ffebcb37170) at ../../dbus/dbus-bus.c:431
        address = <optimized out>
        connection = 0x0
        bd = <optimized out>
        address_type = <optimized out>
        __func__ = "internal_bus_get"
#4  0x000076ed3e87545f in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#5  0x000076ed3e875711 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#6  0x000076ed3e87eb8a in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#7  0x000076ed3e8777ad in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#8  0x000076ed3e8779a9 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#9  0x000076ed3e7ee567 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#10 0x000076ed3e7ee8d5 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#11 0x000076ed3e7eea27 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#12 0x000076ed3e80b5ed in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#13 0x000076ed3e80b775 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libnvidia-eglcore.so.560.35.03
#14 0x000076ed8d043a62 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libEGL_nvidia.so.0
#15 0x000076ed8d048e54 in ??? () at /usr/lib/x86_64-linux-gnu/GL/nvidia-560-35-03/lib/libEGL_nvidia.so.0
#16 0x000076eda976c93c in gdk_wayland_gl_context_realize (context=0x638cec67c440 [GdkWaylandGLContext], error=0x7ffebcb38320)
    at ../gdk/wayland/gdkglcontext-wayland.c:176
        context_wayland = 0x638cec67c440 [GdkWaylandGLContext]
        display = 0x638cec5b9e90 [GdkWaylandDisplay]
        share = 0x0
        display_wayland = 0x638cec5b9e90 [GdkWaylandDisplay]
        ctx = <optimized out>
        context_attribs = {12541, 1, 12440, 3, 12539, 2, 12540, 0, 12344, 8, 12321, 8, 12344, 32766, -1451966850, 30445}
        major = 3
        minor = 2
        flags = <optimized out>
        debug_bit = <optimized out>
        forward_bit = 0
        legacy_bit = <optimized out>
        use_es = <optimized out>
        i = <optimized out>
        __func__ = "gdk_wayland_gl_context_realize"
        _g_boolean_var_10 = <optimized out>
#17 0x000076eda973834f in gdk_gl_context_realize (context=0x638cec67c440 [GdkWaylandGLContext], error=error@entry=0x7ffebcb38320)
    at ../gdk/gdkglcontext.c:796
        priv = <optimized out>
        __func__ = "gdk_gl_context_realize"
#18 0x000076eda9744107 in gdk_window_get_paint_gl_context (window=window@entry=0x638cec68cfc0 [GdkWaylandWindow], error=error@entry=0x0)
    at ../gdk/gdkwindow.c:2880
        internal_error = 0x0
        _pp = <optimized out>
        _ptr = <optimized out>
#19 0x000076eda974424e in gdk_window_create_gl_context (window=0x638cec68cfc0 [GdkWaylandWindow], error=0x0) at ../gdk/gdkwindow.c:2919
        paint_context = <optimized out>
        __func__ = "gdk_window_create_gl_context"
#20 0x000076edacd0050e in WebCore::PlatformDisplayWayland::gtkEGLDisplay (this=0x76ed990700c0)
    at /run/build/webkit2gtk-4.0/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:112
        context = {m_ptr = <optimized out>}
        window = 0x638cec6b5d70 [GtkWindow]
#21 WebCore::PlatformDisplayWayland::gtkEGLDisplay (this=0x76ed990700c0)
    at /run/build/webkit2gtk-4.0/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:99
        window = <optimized out>
        context = {m_ptr = <optimized out>}
#22 0x000076edacd00574 in WebCore::PlatformDisplayWayland::initializeEGLDisplay (this=0x76ed990700c0)
    at /run/build/webkit2gtk-4.0/Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:131
        extensions = <optimized out>
#23 0x000076edacc1871c in WebCore::PlatformDisplay::eglExtensions (this=0x76ed990700c0)
    at /run/build/webkit2gtk-4.0/Source/WebCore/platform/graphics/PlatformDisplay.cpp:312
#24 0x000076edaadc8f7c in operator() (__closure=<optimized out>)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp:82
        disableDMABuf = <optimized out>
        platformExtensions = 0x638cec782320 "EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_pla"...
        forceSHM = <optimized out>
        eglExtensions = <optimized out>
#25 std::__invoke_impl<void, WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode()::<lambda()> > (__f=<optimized out>)
--Type <RET> for more, q to quit, c to continue without paging--
    at /usr/include/c++/13.2.0/bits/invoke.h:61
#26 std::__invoke<WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode()::<lambda()> > (__fn=<optimized out>)
    at /usr/include/c++/13.2.0/bits/invoke.h:96
#27 operator() (__closure=<optimized out>) at /usr/include/c++/13.2.0/mutex:900
        __f = <optimized out>
        __f = <optimized out>
#28 operator() (__closure=0x0) at /usr/include/c++/13.2.0/mutex:836
#29 _FUN () at /usr/include/c++/13.2.0/mutex:836
#30 0x000076eda6ea71b3 in __pthread_once_slow
    (once_control=0x76edae977728 <WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode()::onceFlag>, init_routine=0x76eda52efda0 <std::__once_proxy()>) at pthread_once.c:116
        __cancel_routine = 0x76eda6ea7250 <clear_once_control>
        __clframe = {__cancel_routine = 0x76eda6ea7250 <clear_once_control>, __cancel_arg = 0x76edae977728 <WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode()::onceFlag>, __do_it = 1, __buffer = {__routine = 0x76eda6ea7210 <__pthread_cleanup_combined_routine_voidptr>, __arg = 0x7ffebcb38410, __canceltype = 0, __prev = 0x0}}
        val = <optimized out>
        newval = <optimized out>
#31 0x000076edaadc95e1 in __gthread_once
    (__func=<optimized out>, __once=0x76edae977728 <WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode()::onceFlag>)
    at /usr/include/c++/13.2.0/x86_64-unknown-linux-gnu/bits/gthr-default.h:700
#32 std::call_once<WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode()::<lambda()> > (__once=..., __f=...)
    at /usr/include/c++/13.2.0/mutex:907
        __e = <optimized out>
        __callable = {____f = @0x7ffebcb3848f}
        __exec = {<No data fields>}
        __callable = {____f = <optimized out>}
        __exec = {<No data fields>}
        __e = <optimized out>
#33 WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode ()
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp:65
        mode = {m_storage = 2 '\002'}
        onceFlag = {_M_once = 1}
#34 WebKit::AcceleratedBackingStoreDMABuf::checkRequirements ()
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp:90
#35 0x000076edaadc8ce3 in WebKit::AcceleratedBackingStore::checkRequirements ()
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.cpp:68
#36 0x000076edaadd256b in WebKit::HardwareAccelerationManager::HardwareAccelerationManager
    (this=0x76edae977748 <WebKit::HardwareAccelerationManager::singleton()::manager>)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/HardwareAccelerationManager.cpp:55
        disableCompositing = <optimized out>
        forceCompositing = <optimized out>
        disableCompositing = <optimized out>
        forceCompositing = <optimized out>
#37 0x000076edaadd25fc in WTF::NeverDestroyed<WebKit::HardwareAccelerationManager, WTF::AnyThreadsAccessTraits>::NeverDestroyed<>()
    (this=0x76edae977748 <WebKit::HardwareAccelerationManager::singleton()::manager>) at /usr/include/c++/13.2.0/new:175
#38 WebKit::HardwareAccelerationManager::singleton ()
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/HardwareAccelerationManager.cpp:36
        manager = {m_storage = {__data = "\001", __align = {<No data fields>}}}
#39 0x000076edaaddd02f in WebKit::WebPreferences::platformInitializeStore (this=0x76ed99010880)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/gtk/WebPreferencesGtk.cpp:42
        compositingState = {acceleratedCompositingEnabled = true, forceCompositingMode = false}
#40 0x000076edaabe718f in WebKit::WebPreferences::create (globalDebugKeyPrefix=..., keyPrefix=..., identifier=...)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/WebPreferences.cpp:46
#41 WebKit::WebPreferences::createWithLegacyDefaults (identifier=..., keyPrefix=..., globalDebugKeyPrefix=...)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/WebPreferences.cpp:51
        preferences = {m_ptr = 0x76ed9901cc00}
#42 0x000076edaabd19ab in WebKit::WebPageGroup::WebPageGroup (this=0x76ed99034540, identifier=<optimized out>)
    at /run/build/webkit2gtk-4.0/WTF/Headers/wtf/RawPtrTraits.h:41
#43 0x000076edaabd1faf in WebKit::WebPageGroup::create (identifier=...)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/WebPageGroup.cpp:54
#44 0x000076edaac4b946 in WebKit::WebProcessPool::WebProcessPool (this=0x76ed99068100, configuration=...)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/WebProcessPool.cpp:218
        needsGlobalStaticInitialization = <optimized out>
        scheme = <optimized out>
        __for_range = <optimized out>
        __for_begin = <optimized out>
        __for_end = <optimized out>
        urlScheme = <optimized out>
        __for_range = <optimized out>
        __for_begin = <optimized out>
        __for_end = <optimized out>
        s_needsGlobalStaticInitialization = WebKit::WebProcessPool::NeedsGlobalStaticInitialization::Yes
        needsGlobalStaticInitialization = <optimized out>
        scheme = <optimized out>
        __for_range = <optimized out>
        __for_begin = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        __for_end = <optimized out>
        urlScheme = <optimized out>
        __for_range = <optimized out>
        __for_begin = <optimized out>
        __for_end = <optimized out>
#45 0x000076edaac4c564 in WebKit::WebProcessPool::create (configuration=...)
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/WebProcessPool.cpp:179
#46 0x000076edaad050a0 in webkitWebContextConstructed (object=0x638cec6601a0 [WebKitWebContext])
    at /run/build/webkit2gtk-4.0/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:446
        bundleFilename = std::unique_ptr<char> = {get() = 0x638cec6c3430 "/app/lib/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so"}
        webContext = 0x638cec6601a0 [WebKitWebContext]
        priv = 0x638cec6600b0
        configuration = {<API::ObjectImpl<(API::Object::Type)87>> = {<API::Object> = {<WTF::ThreadSafeRefCounted<API::Object, (WTF::DestructionThread)0>> = {<WTF::ThreadSafeRefCountedBase> = {m_refCount = std::atomic<unsigned int> = { 1 }}, <No data fields>}, _vptr.Object = 0x76edae698008 <vtable for API::ProcessPoolConfiguration+16>}, static APIType = API::Object::Type::ProcessPoolConfiguration}, m_injectedBundlePath = {static allowCompactPointers = true, static MaxLength = 2147483647, m_impl = {m_ptr = 0x76ed990089c0}}, m_cachePartitionedURLSchemes = {<WTF::VectorBuffer<WTF::String, 0, WTF::FastMalloc>> = {<WTF::VectorBufferBase<WTF::String, WTF::FastMalloc>> = {m_buffer = 0x0, m_capacity = 0, m_size = 0}, <No data fields>}, <No data fields>}, m_alwaysRevalidatedURLSchemes = {<WTF::VectorBuffer<WTF::String, 0, WTF::FastMalloc>> = {<WTF::VectorBufferBase<WTF::String, WTF::FastMalloc>> = {m_buffer = 0x0, m_capacity = 0, m_size = 0}, <No data fields>}, <No data fields>}, m_additionalReadAccessAllowedPaths = {<WTF::VectorBuffer<WTF::String, 0, WTF::FastMalloc>> = {<WTF::VectorBufferBase<WTF::String, WTF::FastMalloc>> = {m_buffer = 0x0, m_capacity = 0, m_size = 0}, <No data fields>}, <No data fields>}, m_fullySynchronousModeIsAllowedForTesting = false, m_ignoreSynchronousMessagingTimeoutsForTesting = false, m_attrStyleEnabled = false, m_shouldThrowExceptionForGlobalConstantRedeclaration = true, m_alwaysRunsAtBackgroundPriority = false, m_shouldTakeUIBackgroundAssertion = true, m_shouldCaptureDisplayInUIProcess = false, m_presentingApplicationPID = 2, m_processSwapsOnNavigationFromClient = std::optional<bool> = {[contained value] = false}, m_processSwapsOnNavigationFromExperimentalFeatures = false, m_alwaysKeepAndReuseSwappedProcesses = false, m_processSwapsOnNavigationWithinSameNonHTTPFamilyProtocol = false, m_isAutomaticProcessWarmingEnabledByClient = std::optional<bool> [no contained value], m_usesWebProcessCache = true, m_usesBackForwardCache = true, m_clientWouldBenefitFromAutomaticProcessPrewarming = false, m_shouldConfigureJSCForTesting = false, m_isJITEnabled = true, m_usesSingleWebProcess = false, m_useSystemAppearanceForScrollbars = true, m_memoryPressureHandlerConfiguration = std::optional<struct WTF::MemoryPressureHandlerConfiguration> [no contained value], m_disableFontHintingForTesting = false, m_timeZoneOverride = {static allowCompactPointers = true, static MaxLength = 2147483647, m_impl = {m_ptr = 0x0}}}
#47 0x000076edae9ed0fa in g_object_new_internal (class=0x638cec692ea0, params=0x7ffebcb38880, n_params=1) at ../gobject/gobject.c:2657
        nqueue = 0x0
        object = 0x638cec6601a0 [WebKitWebContext]
        i = <optimized out>
        __func__ = "g_object_new_internal"
        _g_boolean_var_89 = <optimized out>
#48 0x000076edae9ee89d in g_object_new_internal (n_params=<optimized out>, params=<optimized out>, class=<optimized out>)
    at ../gobject/gobject.c:2603
        nqueue = <optimized out>
        object = <optimized out>
        i = <optimized out>
        nqueue = <optimized out>
        object = <optimized out>
        i = <optimized out>
        __func__ = "g_object_new_internal"
        _g_boolean_var_89 = <optimized out>
        _g_boolean_var_90 = <optimized out>
        node = <optimized out>
        value = <optimized out>
        pspec = <optimized out>
        j = <optimized out>
        user_specified = <optimized out>
#49 g_object_newv (object_type=<optimized out>, n_parameters=<optimized out>, parameters=<optimized out>) at ../gobject/gobject.c:2838
        class = 0x638cec692ea0
        unref_class = <optimized out>
        object = <optimized out>
        __func__ = "g_object_newv"
#50 0x0000638ce272a877 in ??? ()
#51 0x0000638ce2a739da in ??? ()
#52 0x0000638ce23d179b in ??? ()
#53 0x0000638ce26719b0 in ??? ()
#54 0x0000638ce26a3b23 in ??? ()
#55 0x0000638ce23e13c4 in ??? ()
#56 0x0000638ce26b0a0d in ??? ()
#57 0x000076eda6e3b08a in __libc_start_call_main (main=main@entry=0x638ce26b0650, argc=argc@entry=1, argv=argv@entry=0x7ffebcb3e4f8)
    at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140732064326904, -2799811994965972395, 1, 0, 130763209740288, 0, -2799811995051955627, -3818166880237065643}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x1, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 1}}}
        not_first_call = <optimized out>
#58 0x000076eda6e3b14b in __libc_start_main_impl
    (main=0x638ce26b0650, argc=1, argv=0x7ffebcb3e4f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffebcb3e4e8) at ../csu/libc-start.c:360
#59 0x0000638ce238770e in ??? ()

Managed to get a stacktrace.

@getchoo
Copy link
Collaborator

getchoo commented Aug 31, 2024

This is probably the result of upstream webkitgtk regressions with NVIDIA GPUs such as https://bugs.webkit.org/show_bug.cgi?id=278230. Some workarounds I've seen work for some depending on the driver version are setting WEBKIT_DISABLE_DMABUF_RENDERER=1 or (do not set these at the same time) WEBKIT_DISABLE_COMPOSITING_MODE=1, but last time I tested this on (I believe) 555, neither worked. NVK did however, and I haven't seen this reported on AMD/Intel GPUs so I'm pretty confident in this

The only solution until these issues are fixed would be to downgrade the version of webkitgtk being used -- but this has some big costs in:

  • Outdated web browsers introducing many would-be-patched vulnerabilities
  • This package would not be able to move to the base GNOME runtime's build of webkitgtk
    • We currently bundle our own, but aside from this issue we should be able to use the runtime's in v0.8.5 of the app as upstream updated to Tauri v2

Honestly not sure what to do in this case 🤷🏻

@mirai-toto
Copy link
Author

Thank you for the answer, great to know.

@getchoo getchoo pinned this issue Sep 25, 2024
@getchoo getchoo changed the title Segfault on Startup Segfault on startup with NVIDIA drivers Sep 25, 2024
@mirai-toto
Copy link
Author

mirai-toto commented Oct 25, 2024

Details:

OS: Fedora 40
Kernel: Linux 6.11.4-201.fc40.x86_64
GPU: NVIDIA GeForce RTX 3080
WebKitGTK Version: 2.46.1 (issue reportedly resolved in this version)
NVIDIA Driver Version: 560.35.03

Given that the WebKitGTK bug is reportedly resolved, are there additional workarounds or configurations that could help?

EDIT: Same with Fedora 41

@FelixBrakel
Copy link

I am no longer getting a crash with the 565 driver

@mirai-toto
Copy link
Author

Sadly, I still do...

I am no longer getting a crash with the 565 driver

@FelixBrakel
Copy link

Ok, I guess it was running in some kind of compatibility mode even though I updated both my system and flatpak.

After a system restart and running flatpak update again it updated the flatpaks to 565 as well and now it crashes again. Sorry to get people's hopes up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants