[560.35.03] GTK4 apps background CPU usage with Vulkan renderer

Originally filed against the GTK project:

This was quickly identified as an nVidia driver issue.

As of gtk 4.16 the Vulkan rendering backend is used by default.

GTK4 apps are consuming unexpected CPU cycles while idle in the background when using the Vulkan backend.

This does not occur with the NGL renderer.

Steps to reproduce

  1. Launch a GTK4 app (e.g. GTK4-demo, Nautilus, gnome-text-editor) using the Vulkan backend
  2. Observe the CPU usage of a GTK4 window’s thread

Current behavior

CPU usage constantly hovering between 2-3%, even when the window is ‘idle’ in the background

Expected outcome

Minimal CPU usage when app is idle, similar to what’s seen when using the ngl renderer

Version information

  • Arch Linux | Kernel 6.11.5
  • Gnome-shell | Mutter 47.1
  • Wayland (meson_options: xwayland=false)
  • Gtk4 4.16.3
  • Mesa 24.2.5
  • nVidia 560.35.03
  • vulkan-icd-loader 1.3.295

Additional information

Here’s where things are spinning:

$ sudo strace -v -fp 9082
strace: Process 9082 attached with 11 threads
[pid  9094] openat(AT_FDCWD, "/proc/stat", O_RDONLY) = 42
[pid  9094] read(42, "cpu  34964 19 18870 9203976 5872"..., 299) = 299
[pid  9094] close(42)                   = 0
[pid  9094] clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=5000000},  <unfinished ...>
[pid  9100] <... restart_syscall resumed>) = -1 ETIMEDOUT (Connection timed out)
[pid  9100] futex(0x6322a993e0c0, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  9100] futex(0x7cab2c000f58, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1729865521, tv_nsec=735347000}, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  9094] <... clock_nanosleep resumed>0x7cab613ffb80) = 0
[pid  9094] openat(AT_FDCWD, "/proc/stat", O_RDONLY) = 42
[pid  9094] read(42, "cpu  34965 19 18870 9203988 5872"..., 299) = 299
[pid  9094] close(42)                   = 0
[pid  9094] clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=5000000}, 0x7cab613ffb80) = 0
[pid  9094] openat(AT_FDCWD, "/proc/stat", O_RDONLY) = 42
[pid  9094] read(42, "cpu  34965 19 18870 9204001 5872"..., 299) = 299
[pid  9094] close(42)                   = 0
[pid  9094] clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=5000000},  <unfinished ...>
[pid  9100] <... futex resumed>)        = -1 ETIMEDOUT (Connection timed out)
[pid  9100] futex(0x6322a993e0c0, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  9100] futex(0x7cab2c000f58, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1729865521, tv_nsec=745883000}, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  9094] <... clock_nanosleep resumed>0x7cab613ffb80) = 0
[pid  9094] openat(AT_FDCWD, "/proc/stat", O_RDONLY) = 42
[pid  9094] read(42, "cpu  34965 19 18870 9204014 5872"..., 299) = 299
[pid  9094] close(42)                   = 0
[pid  9094] clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=5000000}, 0x7cab613ffb80) = 0
[pid  9094] openat(AT_FDCWD, "/proc/stat", O_RDONLY) = 42
[pid  9094] read(42, "cpu  34965 19 18872 9204025 5872"..., 299) = 299
[pid  9094] close(42)                   = 0
[pid  9094] clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=5000000},  <unfinished ...>
[pid  9100] <... futex resumed>)        = -1 ETIMEDOUT (Connection timed out)

nvidia-bug-report-560.35.03.log (15.9 MB)

I’d imagine this would be considered a low-priority issue as it’s “only” unnecessary extra CPU usage.

Would be great to see any confirmation/ack from nVidia or others though.

As a non-gamer, productivity-focused type of user this is a dealbreaker for using to the default Vulkan GTK backend.

Same behavior with the latest 565 series beta driver:

I’ll try reporting the issue at the open module GitLab instance in hopes of getting this addressed prior to the next Production Branch driver release.

Unfortunately that issue tracker is only supposed to be used for problems with the open module that do not occur with the proprietary driver.

This issue is still present with nVidia 565.77 driver, and is preventing use of the default Vulkan backend for GTK4 applications.

I’m concerned the issue may persist into the next Production Branch driver.

I’ve gathered some additional data beyond the strace in the description above…

Full perf report
# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 5  of event 'cpu_atom/cycles/Pu'
# Event count (approx.): 1744993
#
# Children      Self       Samples  Command    Shared Object                Symbol                
# ........  ........  ............  .........  ...........................  ......................
#
    99.27%    99.27%             1  gtk4-demo  libc.so.6                    [.] read
            |
            ---0x741912a01c6e
               read

    99.27%     0.00%             0  gtk4-demo  libnvidia-eglcore.so.565.77  [.] 0x0000741912a01c6e
            |
            ---0x741912a01c6e
               read

     0.73%     0.00%             0  gtk4-demo  [unknown]                    [k] 0000000000000000
            |
            ---0
               0x741912a01df7
               __nanosleep
               clock_nanosleep

     0.73%     0.00%             0  gtk4-demo  libnvidia-eglcore.so.565.77  [.] 0x0000741912a01df7
            |
            ---0x741912a01df7
               __nanosleep
               clock_nanosleep

     0.73%     0.00%             0  gtk4-demo  libc.so.6                    [.] __nanosleep
            |
            ---__nanosleep
               clock_nanosleep

     0.73%     0.00%             0  gtk4-demo  libc.so.6                    [.] clock_nanosleep
            |
            ---clock_nanosleep

     0.73%     0.73%             3  gtk4-demo  [unknown]                    [k] 0xffffffffb0e01908
            |
            ---0
               0x741912a01df7
               __nanosleep
               clock_nanosleep

     0.00%     0.00%             1  gtk4-demo  [unknown]                    [k] 0xffffffffb0e001c8


# Samples: 114  of event 'cpu_core/cycles/Pu'
# Event count (approx.): 1099021111
#
# Children      Self       Samples  Command          Shared Object                Symbol                    
# ........  ........  ............  ...............  ...........................  ..........................
#
    46.01%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01d0a
            |
            ---0x741912a01d0a
               |          
                --45.83%--sscanf
                          |          
                          |--33.40%--0x74192f8758dc
                          |          
                           --10.59%--0x74192f8759c6
                                     |          
                                      --10.03%--0x74192f85cacf

    46.00%     0.16%             2  gtk4-demo        libc.so.6                    [.] sscanf
            |
            ---sscanf
               |          
               |--33.40%--0x74192f8758dc
               |          
                --10.59%--0x74192f8759c6
                          |          
                           --10.03%--0x74192f85cacf

    40.31%     0.00%             0  gtk4-demo        [unknown]                    [k] 0x89495541f6894956
            |
            ---0x89495541f6894956
               0x741912a04170
               |          
                --39.51%--clock_gettime

    40.31%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a04170
            |
            ---0x741912a04170
               |          
                --39.51%--clock_gettime

    39.51%    39.51%             2  gtk4-demo        libc.so.6                    [.] clock_gettime
            |
            ---0x89495541f6894956
               0x741912a04170
               clock_gettime

    33.40%    33.40%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000668da
            |
            ---0x741912a01d0a
               sscanf
               0x74192f8758dc

    33.40%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8758dc
            |
            ---0x74192f8758dc

    10.59%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8759c6
            |
            ---0x74192f8759c6
               |          
                --10.03%--0x74192f85cacf

    10.03%    10.03%             1  gtk4-demo        libc.so.6                    [.] 0x000000000004dacc
            |
            ---0x741912a01d0a
               sscanf
               0x74192f8759c6
               0x74192f85cacf

    10.03%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f85cacf
            |
            ---0x74192f85cacf

    10.01%     0.00%             0  [vkrt] Analysis  libnvidia-eglcore.so.565.77  [.] 0x0000741912a01970
            |
            ---0x741912a01970
               |          
                --9.96%--0x74192f8a5bc7

     9.96%     9.96%             2  [vkrt] Analysis  libc.so.6                    [.] 0x0000000000096bc4
            |
            ---0x741912a01970
               0x74192f8a5bc7

     9.96%     0.00%             0  [vkrt] Analysis  libc.so.6                    [.] 0x000074192f8a5bc7
            |
            ---0x74192f8a5bc7

     1.13%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01970
            |
            ---0x741912a01970

     0.41%     0.00%             0  gtk4-demo        [unknown]                    [k] 0000000000000000
     0.41%     0.07%             1  gtk4-demo        libc.so.6                    [.] __nanosleep
     0.39%     0.00%             0  gtk4-demo        libc.so.6                    [.] pthread_cond_timedwait
     0.34%     0.00%             0  gtk4-demo        [unknown]                    [.] 0x0000060100000100
     0.34%     0.34%             2  gtk4-demo        libc.so.6                    [.] 0x000000000009300c
     0.34%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8a2010
     0.33%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01df7
     0.30%     0.23%             2  gtk4-demo        libc.so.6                    [.] open64
     0.27%     0.27%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000096bc4
     0.27%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8a5bc7
     0.27%     0.27%             1  [vkps] Update    libnvidia-eglcore.so.565.77  [.] 0x0000000000a0197e
     0.27%     0.00%             0  [vkps] Update    libc.so.6                    [.] pthread_mutex_unlock
     0.26%     0.26%             3  gtk4-demo        libc.so.6                    [.] 0x000000000004db20
     0.26%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f85cb29
     0.23%     0.08%             1  gtk4-demo        libc.so.6                    [.] __close
     0.22%     0.22%             2  gtk4-demo        libc.so.6                    [.] 0x000000000008dc54
     0.22%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89cc5a
     0.20%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01c84
     0.20%     0.20%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000099425
     0.20%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01980
     0.20%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8a842c
     0.18%     0.12%             2  gtk4-demo        libc.so.6                    [.] clock_nanosleep
     0.17%     0.17%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000a00ffb
     0.17%     0.00%             0  gtk4-demo        libc.so.6                    [.] pthread_self
     0.17%     0.17%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000a02682
     0.17%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a02690
     0.17%     0.17%             2  gtk4-demo        libc.so.6                    [.] 0x0000000000065145
     0.17%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874148
     0.17%     0.17%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000a0197e
     0.17%     0.00%             0  gtk4-demo        libc.so.6                    [.] pthread_mutex_unlock
     0.16%     0.16%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000909c2
     0.16%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89fa30
     0.15%     0.15%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000a01010
     0.15%     0.00%             0  gtk4-demo        [unknown]                    [.] 0x0000000100000c87
     0.15%     0.00%             0  gtk4-demo        [unknown]                    [.] 0x0000000000000001
     0.15%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01012
     0.15%     0.15%             1  gtk4-demo        [vdso]                       [.] __vdso_gettimeofday
     0.15%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01936
     0.15%     0.15%             2  gtk4-demo        libc.so.6                    [.] 0x0000000000090340
     0.15%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89f344
     0.13%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01c53
     0.13%     0.13%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000092f49
     0.13%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8a1f4d
     0.13%     0.13%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000c294c0
     0.13%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912c294c7
     0.12%     0.12%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000e72441
     0.12%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912e7244a
     0.12%     0.12%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000090359
     0.12%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89f35f
     0.12%     0.12%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000902e5
     0.12%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89f2e9
     0.12%     0.12%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000673f9
     0.12%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f875973
     0.11%     0.11%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000669c1
     0.11%     0.00%             0  gtk4-demo        libc.so.6                    [.] __strtoll_internal
     0.11%     0.11%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000090a33
     0.11%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89f9d2
     0.10%     0.10%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000065e5e
     0.10%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874e65
     0.10%     0.10%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000698a4
     0.10%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8788ab
     0.10%     0.10%             1  gtk4-demo        libc.so.6                    [.] 0x000000000006513a
     0.10%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f87413e
     0.09%     0.09%             1  gtk4-demo        libc.so.6                    [.] 0x000000000008dcc0
     0.09%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89ccc4
     0.09%     0.09%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x00000000009fdd90
     0.09%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x00007419129fdd94
     0.09%     0.09%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000066fca
     0.09%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f875fd1
     0.09%     0.09%             1  gtk4-demo        libc.so.6                    [.] 0x000000000004da99
     0.09%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f85caa0
     0.09%     0.09%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000065e4e
     0.09%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874e55
     0.09%     0.09%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000d3b118
     0.09%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912d3b11d
     0.09%     0.09%             1  gtk4-demo        libc.so.6                    [.] 0x000000000008f050
     0.09%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89e054
     0.09%     0.09%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000673da
     0.09%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8763e1
     0.08%     0.08%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000d3b143
     0.08%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912d3b147
     0.08%     0.08%             1  gtk4-demo        libc.so.6                    [.] 0x000000000004db09
     0.08%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f85cab8
     0.08%     0.08%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000066fc0
     0.08%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f875fca
     0.08%     0.08%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] nanosleep@plt
     0.08%     0.08%             1  gtk4-demo        libc.so.6                    [.] _IO_sputbackc
     0.08%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874ea7
     0.08%     0.08%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000d3b18e
     0.08%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912d3b195
     0.08%     0.08%             5  gtk4-demo        [unknown]                    [k] 0xffffffffb0e001c8
     0.08%     0.08%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000000000a01d80
     0.08%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01d83
     0.08%     0.08%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000066724
     0.08%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f875728
     0.08%     0.08%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000065eca
     0.08%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874ece
     0.08%     0.08%             1  gtk4-demo        libc.so.6                    [.] 0x000000000006a308
     0.08%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f875724
     0.07%     0.07%             1  gtk4-demo        [vdso]                       [.] __vdso_clock_gettime
     0.07%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x00007419129fdda1
     0.07%     0.07%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] open64@plt
     0.07%     0.07%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000651c1
     0.07%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f8741c5
     0.07%     0.07%             1  gtk4-demo        libc.so.6                    [.] 0x000000000004dabb
     0.07%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f85cac2
     0.07%     0.07%             1  gtk4-demo        libnvidia-eglcore.so.565.77  [.] close@plt
     0.07%     0.07%             1  gtk4-demo        libc.so.6                    [.] 0x00000000000654fd
     0.07%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874501
     0.07%     0.07%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000065818
     0.07%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f87481d
     0.06%     0.06%            17  gtk4-demo        [unknown]                    [k] 0xffffffffb0e01908
     0.06%     0.06%             1  gtk4-demo        libc.so.6                    [.] 0x0000000000065b91
     0.06%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f874b98
     0.06%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01c6e
     0.06%     0.06%             1  gtk4-demo        libc.so.6                    [.] 0x000000000004da12
     0.06%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f85ca17
     0.05%     0.00%             0  [vkrt] Analysis  libc.so.6                    [.] pthread_cond_timedwait
     0.05%     0.00%             0  [vkrt] Analysis  libc.so.6                    [.] 0x000074192f89fa19
     0.03%     0.03%             1  [vkrt] Analysis  libc.so.6                    [.] 0x0000000000090a19
     0.03%     0.00%             0  [vkrt] Analysis  [unknown]                    [.] 0xffffffffb0e01630
     0.02%     0.00%             0  [vkps] Update    libnvidia-eglcore.so.565.77  [.] 0x0000741912a01970
     0.02%     0.00%             0  [vkps] Update    libc.so.6                    [.] pthread_cond_timedwait
     0.02%     0.02%             1  [vkps] Update    libc.so.6                    [.] 0x0000000000090a19
     0.02%     0.00%             0  [vkps] Update    libc.so.6                    [.] 0x000074192f89fa1c
     0.01%     0.01%             9  [vkrt] Analysis  [unknown]                    [k] 0xffffffffb0e01908
     0.00%     0.00%             0  gtk4-demo        libc.so.6                    [.] 0x000074192f89fa19
     0.00%     0.00%             0  [vkps] Update    libc.so.6                    [.] 0x000074192f89fa19
     0.00%     0.00%             5  [vkps] Update    [unknown]                    [k] 0xffffffffb0e01908
     0.00%     0.00%             0  gtk4-demo        libnvidia-eglcore.so.565.77  [.] 0x0000741912a01c30
     0.00%     0.00%             2  [vkps] Update    [unknown]                    [k] 0xffffffffb0e001c8
     0.00%     0.00%             2  [vkrt] Analysis  [unknown]                    [k] 0xffffffffb0e001c8


#
# (Tip: To add Node.js USDT(User-Level Statically Defined Tracing): perf buildid-cache --add `which node`)
#

Perf report snippet:

# Children      Self       Samples  Command    Shared Object                Symbol                
# ........  ........  ............  .........  ...........................  ......................
#
    99.27%    99.27%             1  gtk4-demo  libc.so.6                    [.] read
            |
            ---0x741912a01c6e
               read

    99.27%     0.00%             0  gtk4-demo  libnvidia-eglcore.so.565.77  [.] 0x0000741912a01c6e
            |
            ---0x741912a01c6e
               read

Offending thread (3201) consuming CPU:

Flamegraph of main thread

Flamegraph of problem thread

Current stack:

  • Arch Linux | Kernel 6.12.8
  • Gtk4 4.16.7
  • Mesa 24.3.1
  • nVidia 565.77
  • vulkan-icd-loader 1.4.303

Hi @Tekstryder
Thanks for reporting issue, could you please confirm the last passing driver, if any.

1 Like

Thank you for taking note of this issue!

It is unknown if there was a previous driver version which did not exhibit this problem

The behavior was noticed only as of when the Vulkan backend became default in GTK4 4.16.x release, and the 560.35.03 driver was in use at the time.

This has been consistently reproducible with subsequent nVidia driver releases: 565.57.01 and 565.77.

Hi @amrits

I see that the 550.142 nVidia driver is available in the Arch AUR.

Would there be any value in my testing that branch for this issue, assuming it builds against the 6.12.x kernel series?

I believe that’s pre-explicit sync, but I’m not sure how well-supported Vulkan is with the Production Branch.

Unfortunately this issue persists with the 570.86.16 Beta driver.

Please let me know if I can provide any further information beyond the above perf reports and flamegraphs.

Still stuck using the NGL renderer, which has its own never-resolved nVidia-driver-specific-issues.

With GTK 4.18.x release coming right around the corner next month, it would be great to be able to use the default Vulkan renderer once this issue is addressed.

To demonstrate the impact of this issue, I enabled the default Vulkan GTK4 backend and launched gnome-console (kgx)

After 3 days of uptime with kgx running in the background, it has consumed 23+ hours of CPU time while sitting “idle”:


After leaving the Vulkan backend enabled for a few weeks, I’ve observed several crashes triggered when closing GTK4 apps.

$ journalctl --no-hostname -S -3w | grep "vkps.*segfault"
Feb 04 08:02:03 kernel: [vkps] Update[122247]: segfault at 79acfe80e2a0 ip 000079acfe80e2a0 sp 000079ad223fe840 error 14 likely on CPU 19 (core 35, socket 0)
Feb 05 08:02:08 kernel: [vkps] Update[105849]: segfault at 78085e80e2a0 ip 000078085e80e2a0 sp 00007807f6ffc840 error 14 likely on CPU 22 (core 38, socket 0)
Feb 08 08:06:00 kernel: [vkps] Update[3628]: segfault at 779c6680e2a0 ip 0000779c6680e2a0 sp 0000779c527fb980 error 14 likely on CPU 2 (core 4, socket 0)
Feb 08 08:33:43 kernel: [vkps] Update[5112]: segfault at 72a85680e2a0 ip 000072a85680e2a0 sp 000072a8423fb840 error 14 likely on CPU 17 (core 33, socket 0)
Feb 08 08:44:40 kernel: [vkps] Update[2036]: segfault at 72fea940e2a0 ip 000072fea940e2a0 sp 000072fe7bffe980 error 14 likely on CPU 10 (core 20, socket 0)
Feb 08 08:47:43 kernel: [vkps] Update[1852]: segfault at 73025500e2a0 ip 000073025500e2a0 sp 000073022bffe840 error 14 likely on CPU 12 (core 24, socket 0)
Feb 08 08:50:35 kernel: [vkps] Update[2402]: segfault at 723d6e40e2a0 ip 0000723d6e40e2a0 sp 0000723d59bfeb40 error 14 likely on CPU 0 (core 0, socket 0)
Feb 08 09:21:12 kernel: [vkps] Update[3673]: segfault at 7ed67d00e2a0 ip 00007ed67d00e2a0 sp 00007ed64bffe980 error 14 likely on CPU 4 (core 8, socket 0)
Feb 08 09:55:07 kernel: [vkps] Update[2602]: segfault at 708f8a80e2a0 ip 0000708f8a80e2a0 sp 0000708f765fb980 error 14 likely on CPU 6 (core 12, socket 0)
Feb 08 10:21:47 kernel: [vkps] Update[25341]: segfault at 764a7a80e2a0 ip 0000764a7a80e2a0 sp 0000764a62bfe980 error 14 likely on CPU 8 (core 16, socket 0)
Feb 08 10:28:06 kernel: [vkps] Update[4031]: segfault at 7742dd00e2a0 ip 00007742dd00e2a0 sp 00007742abffe980 error 14 likely on CPU 14 (core 28, socket 0)
Feb 08 10:57:13 kernel: [vkps] Update[3639]: segfault at 7ba89d80e2a0 ip 00007ba89d80e2a0 sp 00007ba8709fb980 error 14 likely on CPU 16 (core 32, socket 0)
Feb 08 11:18:20 kernel: [vkps] Update[4711]: segfault at 77c2f8c0e2a0 ip 000077c2f8c0e2a0 sp 000077c2c7ffe980 error 14 likely on CPU 12 (core 24, socket 0)
Feb 08 11:28:43 kernel: [vkps] Update[7080]: segfault at 7f288280e2a0 ip 00007f288280e2a0 sp 00007f2880dfc980 error 14 likely on CPU 7 (core 12, socket 0)
Feb 08 12:45:32 kernel: [vkps] Update[8953]: segfault at 74ee10c3da70 ip 000074ee10c3da70 sp 000074edecffc9a8 error 14 likely on CPU 8 (core 16, socket 0)
Feb 12 16:09:57 kernel: [vkps] Update[1556876]: segfault at 730b2680e2a0 ip 0000730b2680e2a0 sp 0000730b0e3fd2c0 error 14 likely on CPU 14 (core 28, socket 0)
Feb 14 17:07:19 kernel: [vkps] Update[14636]: segfault at 7793b640e2a0 ip 00007793b640e2a0 sp 000077939d9fcc00 error 14 likely on CPU 12 (core 24, socket 0)
Feb 18 15:09:13 kernel: [vkps] Update[132284]: segfault at 79ab9900e2a0 ip 000079ab9900e2a0 sp 000079ab67ffe980 error 14 likely on CPU 12 (core 24, socket 0)
Feb 18 15:15:36 kernel: [vkps] Update[15164]: segfault at 7024c0c0e2a0 ip 00007024c0c0e2a0 sp 00007024a0bfcb40 error 14 likely on CPU 14 (core 28, socket 0)
Feb 18 15:23:59 kernel: [vkps] Update[140250]: segfault at 760c05c0e2a0 ip 0000760c05c0e2a0 sp 0000760bebffe980 error 14 likely on CPU 21 (core 37, socket 0)
Feb 18 15:26:57 kernel: [vkps] Update[141052]: segfault at 70587a00e2a0 ip 000070587a00e2a0 sp 0000705868dfc980 error 14 likely on CPU 4 (core 8, socket 0)


Given the nature of this thread’s issue (vkps updates spinning CPU cycles like crazy) and these vkps update segfaults on closing GTK4 apps, this very much points to some racy condition related to this same issue.

Thread 2 (Thread 0x79ac0ced8400 (LWP 132232)):
#0  _int_free_create_chunk (av=av@entry=0x79ac10affac0 <main_arena>, p=p@entry=0x62c241b5cd40, size=size@entry=912, nextchunk=nextchunk@entry=0x62c241b5d0d0, nextsize=nextsize@entry=32) at malloc.c:4766
        nextinuse = 33
        bck = <optimized out>
        fwd = <optimized out>
#1  0x000079ac109baa3a in _int_free_merge_chunk (av=av@entry=0x79ac10affac0 <main_arena>, p=p@entry=0x62c241b5cd40, size=size@entry=912) at malloc.c:4742
        nextchunk = 0x62c241b5d0d0
        nextsize = 32
#2  0x000079ac109babf0 in _int_free_chunk (av=0x79ac10affac0 <main_arena>, p=p@entry=0x62c241b5cd40, size=912, have_lock=<optimized out>, have_lock@entry=0) at malloc.c:4667
        fb = <optimized out>
#3  0x000079ac109bd9ab in _int_free (av=<optimized out>, p=0x62c241b5cd40, have_lock=0) at malloc.c:4699
        size = <optimized out>
        size = <optimized out>
#4  __GI___libc_free (mem=0x62c241b5cd50) at malloc.c:3476
        ar_ptr = <optimized out>
        p = 0x62c241b5cd40
        err = 11
#5  0x000079ab82817341 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#6  0x000079ab82814b64 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#7  0x000079ab82814bc4 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#8  0x000079ab82821880 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#9  0x000079ab98127870 in ?? () from /usr/lib/libGLX_nvidia.so.0
No symbol table info available.
#10 0x000079ab98127edf in ?? () from /usr/lib/libGLX_nvidia.so.0


NOTE: If attempting to reproduce this, be aware the crash-on-exit segfault does not occur on each exit, perhaps only as often as 10% of the time…emphasizing raciness.

Here’s a full backtrace of the crash:

GDB Backtrace
$  DEBUGINFOD_URLS="https://debuginfod.archlinux.org/" coredumpctl gdb 132232
           PID: 132232 (loupe)
           UID: 1000 (myusername)
           GID: 1000 (myusername)
        Signal: 11 (SEGV)
     Timestamp: Tue 2025-02-18 15:09:13 EST (27s ago)
  Command Line: /usr/bin/loupe --gapplication-service
    Executable: /usr/bin/loupe
 Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\x2d:1.2\x2dorg.gnome.Loupe.slice/dbus-:1.2-org.gnome.Loupe@13.service
          Unit: user@1000.service
     User Unit: dbus-:1.2-org.gnome.Loupe@13.service
         Slice: user-1000.slice
     Owner UID: 1000 (myusername)
       Boot ID: 005a46f80cb541a39b2f10bfe204e9cd
    Machine ID: b1fa067dbeb84216ab8d4c29c1b78033
      Hostname: archnemisis
       Storage: /var/lib/systemd/coredump/core.loupe.1000.005a46f80cb541a39b2f10bfe204e9cd.132232.1739909353000000.zst (present)
  Size on Disk: 8.1M
       Message: Process 132232 (loupe) of user 1000 dumped core.
               
                Module libgbm.so.1 without build-id.
                Module libgbm.so.1
                Module [dso] without build-id.
                Module [dso] without build-id.
                Stack trace of thread 132284:
                #0  0x000079ab9900e2a0 n/a (n/a + 0x0)
                ELF object binary architecture: AMD x86-64

(gdb) t a a bt full

Thread 11 (Thread 0x79ab751fd6c0 (LWP 132282)):
#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
No locals.
#1  0x000079ac109a8e33 in __internal_syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=0, a6=a6@entry=4294967295, nr=202) at cancellation.c:49
        result = <optimized out>
        pd = <optimized out>
        ch = <optimized out>
#2  0x000079ac109a94bc in __futex_abstimed_wait_common64 (private=0, futex_word=0x79ab6c000f50, expected=<optimized out>, op=<optimized out>, abstime=0x0, cancel=true) at futex-internal.c:57
No locals.
#3  __futex_abstimed_wait_common (futex_word=futex_word@entry=0x79ab6c000f50, expected=<optimized out>, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true) at futex-internal.c:87
        err = <optimized out>
        clockbit = 256
        op = <optimized out>
#4  0x000079ac109a951f in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x79ab6c000f50, expected=<optimized out>, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at futex-internal.c:139
No locals.
#5  0x000079ac109abc0e in __pthread_cond_wait_common (cond=0x79ab6c000f30, mutex=0x62c242001dc0, clockid=0, abstime=0x0) at pthread_cond_wait.c:426
        signals = <optimized out>
        g1_start = <optimized out>
        buffer = {__routine = 0x79ac109aba30 <__condvar_cleanup_waiting>, __arg = 0x79ab751fc910, __canceltype = 8, __prev = 0x0}
        cbuffer = {wseq = 216, cond = 0x79ab6c000f30, mutex = 0x62c242001dc0, private = 0}
        err = <optimized out>
        wseq = 216
        g = <optimized out>
        seq = 108
        flags = <optimized out>
        private = 0
        result = 0
        err = <optimized out>
        result = <optimized out>
        wseq = <optimized out>
        g = <optimized out>
        seq = <optimized out>
        flags = <optimized out>
        private = <optimized out>
        signals = <optimized out>
        g1_start = <optimized out>
        buffer = <optimized out>
        cbuffer = <optimized out>
#6  ___pthread_cond_wait (cond=0x79ab6c000f30, mutex=0x62c242001dc0) at pthread_cond_wait.c:458
No locals.
#7  0x000079ab9900e23f in ?? ()
No symbol table info available.
#8  0x000079ab751fc9e8 in ?? ()
No symbol table info available.
#9  0x000062c242001d30 in ?? ()
No symbol table info available.
#10 0x000062c2418b7240 in ?? ()
No symbol table info available.
#11 0x000079ab99010226 in ?? ()
No symbol table info available.
#12 0x000062c242001d00 in ?? ()
No symbol table info available.
#13 0x000062c242001d30 in ?? ()
No symbol table info available.
#14 0x0000000000000001 in ?? ()
No symbol table info available.
#15 0x000062c242001c10 in ?? ()
No symbol table info available.
#16 0x000079ab751fc9e8 in ?? ()
No symbol table info available.
#17 0x000079ab9938c7a8 in ?? ()
No symbol table info available.
#18 0x0000000000000000 in ?? ()
No symbol table info available.

Thread 10 (Thread 0x79ac0a9fc6c0 (LWP 132236)):
#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
No locals.
#1  0x000079ac109a8e33 in __internal_syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0, nr=271) at cancellation.c:49
        result = <optimized out>
        pd = <optimized out>
        ch = <optimized out>
#2  0x000079ac109a8e74 in __syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0, nr=271) at cancellation.c:75
        r = <optimized out>
#3  0x000079ac10a23a06 in __GI_ppoll (fds=fds@entry=0x79abf8000b90, nfds=nfds@entry=3, timeout=<optimized out>, timeout@entry=0x0, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:42
        tval = {tv_sec = 108586455435880, tv_nsec = 3}
#4  0x000079ac11afa327 in ppoll (__fds=0x79abf8000b90, __nfds=3, __timeout=0x0, __ss=0x0) at /usr/include/bits/poll2.h:101
No locals.
#5  g_main_context_poll_unlocked (priority=<optimized out>, context=0x62c24119bca0, timeout_usec=<optimized out>, fds=0x79abf8000b90, n_fds=3) at ../glib/glib/gmain.c:4591
        spec = {tv_sec = 97452, tv_nsec = 529216883}
        spec_p = 0x0
        ret = <optimized out>
        errsv = <optimized out>
        poll_func = <optimized out>
        poll_func = <optimized out>
        ret = <optimized out>
        errsv = <optimized out>
        spec = <optimized out>
        spec_p = <optimized out>
        timeout_msec = <optimized out>
#6  g_main_context_iterate_unlocked.isra.0 (context=0x62c24119bca0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4268
        max_priority = 2147483647
        timeout_usec = -1
        some_ready = <optimized out>
        nfds = 3
        allocated_nfds = <optimized out>
        fds = 0x79abf8000b90
        begin_time_nsec = 97452529216883
#7  0x000079ac11a98287 in g_main_loop_run (loop=0x62c2411a8a60) at ../glib/glib/gmain.c:4475
        self = <optimized out>
        __func__ = "g_main_loop_run"
#8  0x000079ac11cfdbc4 in gdbus_shared_thread_func (user_data=0x62c2411aa1b0) at ../glib/gio/gdbusprivate.c:284
        data = 0x62c2411aa1b0
#9  0x000079ac11accbe6 in g_thread_proxy (data=0x62c2411a8a80) at ../glib/glib/gthread.c:892
        thread = 0x62c2411a8a80
        __func__ = "g_thread_proxy"
#10 0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779819579072, 5622317525882339975, 133779819579072, -608, 11, 140730581882560, 5622317525903311495, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#11 0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 9 (Thread 0x79ac0a1fb6c0 (LWP 132237)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
No locals.
#1  0x000079ac11ac8be0 in g_cond_wait_impl (cond=0x62c2411ade88, mutex=0x62c2411ade80) at ../glib/glib/gthread-posix.c:1007
        saved_errno = 2
        res = <optimized out>
        sampled = 4
        sampled = <optimized out>
        gaig_temp = <optimized out>
        saved_errno = <optimized out>
        res = <optimized out>
#2  g_cond_wait (cond=0x62c2411ade88, mutex=0x62c2411ade80) at ../glib/glib/gthread.c:1665
--Type <RET> for more, q to quit, c to continue without paging--c
No locals.
#3  0x000079ac11a5f98c in g_async_queue_pop_intern_unlocked (queue=0x62c2411ade80, wait=1, end_time=-1) at ../glib/glib/gasyncqueue.c:375
        retval = <optimized out>
        __func__ = "g_async_queue_pop_intern_unlocked"
#4  0x000079ac11a5f9fd in g_async_queue_pop (queue=queue@entry=0x62c2411ade80) at ../glib/glib/gasyncqueue.c:409
        retval = <optimized out>
        __func__ = "g_async_queue_pop"
#5  0x000079ac1002579c in fc_thread_func (data=0x62c2411ade80) at ../pango/pango/pangofc-fontmap.c:989
        td = <optimized out>
        queue = 0x62c2411ade80
        done = 0
        __func__ = "fc_thread_func"
#6  0x000079ac11accbe6 in g_thread_proxy (data=0x62c2411a8d80) at ../glib/glib/gthread.c:892
        thread = 0x62c2411a8d80
        __func__ = "g_thread_proxy"
#7  0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779811186368, 5622318624857096839, 133779811186368, -608, 0, 140730581880672, 5622318624878068359, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#8  0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 8 (Thread 0x79ac035fd6c0 (LWP 132736)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
No locals.
#1  0x000079ac11ac98f7 in g_cond_wait_until_impl (cond=<optimized out>, mutex=0x62c2411968e0, end_time=<optimized out>) at ../glib/glib/gthread-posix.c:1140
        span_arg = {tv_sec = 0, tv_nsec = 499999736}
        _g_boolean_var_24 = <optimized out>
        span = <optimized out>
        success = <optimized out>
        now = {tv_sec = 97452, tv_nsec = 528817264}
        sampled = 18
        res = <optimized out>
        now = <optimized out>
        span = <optimized out>
        sampled = <optimized out>
        res = <optimized out>
        success = <optimized out>
        __func__ = <optimized out>
        span_arg = <optimized out>
        _g_boolean_var_24 = <optimized out>
#2  g_cond_wait_until (cond=<optimized out>, mutex=0x62c2411968e0, end_time=<optimized out>) at ../glib/glib/gthread.c:1761
No locals.
#3  0x000079ac11a5f955 in g_async_queue_pop_intern_unlocked (queue=0x62c2411968e0, wait=1, end_time=97453028817) at ../glib/glib/gasyncqueue.c:378
        retval = <optimized out>
        __func__ = "g_async_queue_pop_intern_unlocked"
#4  0x000079ac11acfcfb in g_thread_pool_wait_for_new_task (pool=0x62c241196880) at ../glib/glib/gthreadpool.c:260
        task = 0x0
        task = <optimized out>
#5  g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/glib/gthreadpool.c:325
        task = <optimized out>
        pool = 0x62c241196880
#6  0x000079ac11accbe6 in g_thread_proxy (data=0x79ac04003b70) at ../glib/glib/gthread.c:892
        thread = 0x79ac04003b70
        __func__ = "g_thread_proxy"
#7  0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779697948352, 5622303782523863687, 133779697948352, -608, 0, 133779844753184, 5622303782544835207, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#8  0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 7 (Thread 0x79ab759fe6c0 (LWP 132281)):
#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
No locals.
#1  0x000079ac109a8e33 in __internal_syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=a3@entry=0, a4=<optimized out>, a5=a5@entry=0, a6=a6@entry=4294967295, nr=202) at cancellation.c:49
        result = <optimized out>
        pd = <optimized out>
        ch = <optimized out>
#2  0x000079ac109a94bc in __futex_abstimed_wait_common64 (private=0, futex_word=0x79ab70000f50, expected=0, op=<optimized out>, abstime=0x79ab759fd9a0, cancel=true) at futex-internal.c:57
No locals.
#3  __futex_abstimed_wait_common (futex_word=futex_word@entry=0x79ab70000f50, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x79ab759fd9a0, private=private@entry=0, cancel=cancel@entry=true) at futex-internal.c:87
        err = <optimized out>
        clockbit = 256
        op = <optimized out>
#4  0x000079ac109a951f in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x79ab70000f50, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x79ab759fd9a0, private=private@entry=0) at futex-internal.c:139
No locals.
#5  0x000079ac109abe11 in __pthread_cond_wait_common (cond=0x79ab70000f30, mutex=0x62c242001aa0, clockid=0, abstime=0x79ab759fd9a0) at pthread_cond_wait.c:426
        signals = 0
        g1_start = <optimized out>
        buffer = {__routine = 0x79ac109aba30 <__condvar_cleanup_waiting>, __arg = 0x79ab759fd930, __canceltype = 24, __prev = 0x0}
        cbuffer = {wseq = 1168, cond = 0x79ab70000f30, mutex = 0x62c242001aa0, private = 0}
        err = <optimized out>
        wseq = <optimized out>
        g = <optimized out>
        seq = 584
        flags = <optimized out>
        private = 0
        result = 0
        err = <optimized out>
        result = <optimized out>
        wseq = <optimized out>
        g = <optimized out>
        seq = <optimized out>
        flags = <optimized out>
        private = <optimized out>
        signals = <optimized out>
        g1_start = <optimized out>
        buffer = <optimized out>
        cbuffer = <optimized out>
#6  ___pthread_cond_timedwait64 (cond=0x79ab70000f30, mutex=0x62c242001aa0, abstime=0x79ab759fd9a0) at pthread_cond_wait.c:483
        flags = <optimized out>
        clockid = 0
#7  0x000079ab9900e2a0 in ?? ()
No symbol table info available.
#8  0x0000000067b4e8e9 in ?? ()
No symbol table info available.
#9  0x000000001814ac40 in ?? ()
No symbol table info available.
#10 0x0000000067b4e8e9 in ?? ()
No symbol table info available.
#11 0x000000000004a388 in ?? ()
No symbol table info available.
#12 0x000062c242001ae0 in ?? ()
No symbol table info available.
#13 0x000062c242001700 in ?? ()
No symbol table info available.
#14 0x0000000000000014 in ?? ()
No symbol table info available.
#15 0x000062c242001868 in ?? ()
No symbol table info available.
#16 0x000062c242001860 in ?? ()
No symbol table info available.
#17 0x000079ab99399869 in ?? ()
No symbol table info available.
#18 0x203a6362696c6720 in ?? ()
No symbol table info available.
#19 0x000062c242001ae0 in ?? ()
No symbol table info available.
#20 0x000079ab99010920 in ?? ()
No symbol table info available.
#21 0x000079ab759fe6c0 in ?? ()
No symbol table info available.
#22 0xfffffffffffffda0 in ?? ()
No symbol table info available.
#23 0x0000000000000002 in ?? ()
No symbol table info available.
#24 0x00007ffe64575510 in ?? ()
No symbol table info available.
#25 0x000079ab990118fa in ?? ()
No symbol table info available.
#26 0x000079ab759fe6c0 in ?? ()
No symbol table info available.
#27 0x000079ab759fecdc in ?? ()
No symbol table info available.
#28 0x000079ab759fdaf0 in ?? ()
No symbol table info available.
#29 0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = <error reading variable unwind_buf (Cannot access memory at address 0x0)>
        not_first_call = <optimized out>
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Thread 6 (Thread 0x79ac0b9fe6c0 (LWP 132234)):
#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
No locals.
#1  0x000079ac109a8e33 in __internal_syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0, nr=271) at cancellation.c:49
        result = <optimized out>
        pd = <optimized out>
        ch = <optimized out>
#2  0x000079ac109a8e74 in __syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0, nr=271) at cancellation.c:75
        r = <optimized out>
#3  0x000079ac10a23a06 in __GI_ppoll (fds=fds@entry=0x62c241196fa0, nfds=nfds@entry=2, timeout=<optimized out>, timeout@entry=0x79ac0b9fd990, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:42
        tval = {tv_sec = 0, tv_nsec = 56444504}
#4  0x000079ac11afa327 in ppoll (__fds=0x62c241196fa0, __nfds=2, __timeout=0x79ac0b9fd990, __ss=0x0) at /usr/include/bits/poll2.h:101
No locals.
#5  g_main_context_poll_unlocked (priority=<optimized out>, context=0x62c241196d00, timeout_usec=<optimized out>, fds=0x62c241196fa0, n_fds=2) at ../glib/glib/gmain.c:4591
        spec = {tv_sec = 0, tv_nsec = 99992000}
        spec_p = 0x79ac0b9fd990
        ret = <optimized out>
        errsv = <optimized out>
        poll_func = <optimized out>
        poll_func = <optimized out>
        ret = <optimized out>
        errsv = <optimized out>
        spec = <optimized out>
        spec_p = <optimized out>
        timeout_msec = <optimized out>
#6  g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x62c241196d00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4268
        max_priority = 2147483647
        timeout_usec = 99992
        some_ready = <optimized out>
        nfds = 2
        allocated_nfds = <optimized out>
        fds = 0x62c241196fa0
        begin_time_nsec = 97452507177960
#7  0x000079ac11a96a55 in g_main_context_iteration (context=0x62c241196d00, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4338
        retval = <optimized out>
#8  0x000079ac11a96ab2 in glib_worker_main (data=<optimized out>) at ../glib/glib/gmain.c:6537
No locals.
#9  0x000079ac11accbe6 in g_thread_proxy (data=0x62c241196f40) at ../glib/glib/gthread.c:892
        thread = 0x62c241196f40
        __func__ = "g_thread_proxy"
#10 0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779836364480, 5622319725979337351, 133779836364480, -608, 17, 140730581879632, 5622319726000308871, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#11 0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 5 (Thread 0x79ac03fff6c0 (LWP 132244)):
#0  0x000062c21dd14701 in rustix::backend::arch::asm::syscall4 () at /usr/src/debug/loupe/build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/rustix-0.38.34/src/backend/linux_raw/arch/x86_64.rs:154
        nr = rustix::backend::reg::SyscallNumber {nr: 232, _phantom: core::marker::PhantomData<&()>}
        a0 = rustix::backend::reg::ArgReg<rustix::backend::reg::A0> {raw: 0xf, _phantom: core::marker::PhantomData<(&(), rustix::backend::reg::A0)>}
        a1 = rustix::backend::reg::ArgReg<rustix::backend::reg::A1> {raw: 0x79abd4021700, _phantom: core::marker::PhantomData<(&(), rustix::backend::reg::A1)>}
        a2 = rustix::backend::reg::ArgReg<rustix::backend::reg::A2> {raw: 0x400, _phantom: core::marker::PhantomData<(&(), rustix::backend::reg::A2)>}
        a3 = rustix::backend::reg::ArgReg<rustix::backend::reg::A3> {raw: 0xffffffffffffffff, _phantom: core::marker::PhantomData<(&(), rustix::backend::reg::A3)>}
        r0 = <optimized out>
#1  rustix::backend::event::syscalls::epoll_wait (epfd=..., events=0x79abd4021700, num_events=1024, timeout=<optimized out>) at /usr/src/debug/loupe/build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/rustix-0.38.34/src/backend/linux_raw/arch/mod.rs:103
No locals.
#2  rustix::backend::event::epoll::wait<&std::os::fd::owned::OwnedFd> (epoll=0x62c21e2b5778 <async_io::reactor::Reactor::get::REACTOR+632>, event_list=0x62c21e2b5708 <async_io::reactor::Reactor::get::REACTOR+520>, timeout=<optimized out>) at /usr/src/debug/loupe/build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/rustix-0.38.34/src/backend/linux_raw/event/epoll.rs:250
        nfds = <optimized out>
        residual = <optimized out>
        val = <optimized out>
#3  polling::epoll::Poller::wait (self=0x62c21e2b5778 <async_io::reactor::Reactor::get::REACTOR+632>, events=0x62c21e2b5708 <async_io::reactor::Reactor::get::REACTOR+520>, timeout=...) at /usr/src/debug/loupe/build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/polling-3.7.2/src/epoll.rs:214
        timeout_ms = <optimized out>
        timer_fd = 0x62c21e2b5784 <async_io::reactor::Reactor::get::REACTOR+644>
        _enter = tracing::span::Entered {span: 0x79ac03ffe330}
        span = tracing::span::Span {inner: core::option::Option<tracing::span::Inner>::None, meta: core::option::Option<&tracing_core::metadata::Metadata>::None}
        interest = <optimized out>
        span = <error reading variable span (Cannot access memory at address 0x0)>
        meta = <error reading variable meta (Cannot access memory at address 0x0)>
        iter = <optimized out>
        span = <error reading variable span (Cannot access memory at address 0x0)>
        _enter = <optimized out>
        timer_fd = <optimized out>
        new_val = <optimized out>
        residual = <optimized out>
        val = <optimized out>
        residual = <optimized out>
        val = <optimized out>
        t = <optimized out>
        ts = <optimized out>
        timer_fd = <error reading variable timer_fd (Cannot access memory at address 0x0)>
        t = <optimized out>
        ms = <optimized out>
        timeout_ms = <optimized out>
        residual = <optimized out>
        interest = <optimized out>
        enabled = <optimized out>
        iter = <optimized out>
        val = <optimized out>
        residual = <optimized out>
        val = <optimized out>
        t = <optimized out>
        t = <optimized out>
#4  polling::Poller::wait (self=0x62c21e2b5778 <async_io::reactor::Reactor::get::REACTOR+632>, events=0x62c21e2b5708 <async_io::reactor::Reactor::get::REACTOR+520>, timeout=<error reading variable: Cannot access memory at address 0x8>) at /usr/src/debug/loupe/build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/polling-3.7.2/src/lib.rs:747
        e = <optimized out>
        timeout = <optimized out>
        deadline = core::option::Option<std::time::Instant>::None
        _lock = std::sync::mutex::MutexGuard<()> {lock: 0x62c21e2b5788 <async_io::reactor::Reactor::get::REACTOR+648>, poison: std::sync::poison::Guard {panicking: false}}
        _enter = tracing::span::Entered {span: 0x79ac03ffe358}
        span = tracing::span::Span {inner: core::option::Option<tracing::span::Inner>::None, meta: core::option::Option<&tracing_core::metadata::Metadata>::None}
        interest = <optimized out>
        span = <error reading variable span (Cannot access memory at address 0x0)>
        meta = <error reading variable meta (Cannot access memory at address 0x0)>
        iter = <optimized out>
        span = <error reading variable span (Cannot access memory at address 0x0)>
        _enter = <optimized out>
        _lock = <optimized out>
        deadline = <error reading variable deadline (Cannot access memory at address 0x8)>
        timeout = <error reading variable timeout (Cannot access memory at address 0x8)>
        e = <optimized out>
        interest = <optimized out>
        enabled = <optimized out>
        iter = <optimized out>
#5  async_io::reactor::ReactorLock::react (self=<optimized out>, timeout=...) at src/reactor.rs:302
        tick = 71
        timeout = core::option::Option<core::time::Duration>::None
        next_timer = <optimized out>
        wakers = alloc::vec::Vec<core::task::wake::Waker, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<core::task::wake::Waker, alloc::alloc::Global> {inner: alloc::raw_vec::RawVecInner<alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x8}, _marker: core::marker::PhantomData<u8>}, cap: alloc::raw_vec::Cap (0), alloc: alloc::alloc::Global}, _marker: core::marker::PhantomData<core::task::wake::Waker>}, len: 0}
        _enter = tracing::span::Entered {span: 0x79ac03ffe308}
        span = tracing::span::Span {inner: core::option::Option<tracing::span::Inner>::None, meta: core::option::Option<&tracing_core::metadata::Metadata>::None}
#6  0x000062c21dd110f2 in async_io::driver::main_loop (parker=...) at src/driver.rs:69
        reactor_lock = async_io::reactor::ReactorLock {reactor: 0x62c21e2b5500 <async_io::reactor::Reactor::get::REACTOR>, events: std::sync::mutex::MutexGuard<polling::Events> {lock: 0x62c21e2b5700 <async_io::reactor::Reactor::get::REACTOR+512>, poison: std::sync::poison::Guard {panicking: false}}}
        reactor_lock = core::option::Option<async_io::reactor::ReactorLock>::Some(async_io::reactor::ReactorLock {reactor: <optimized out>, events: std::sync::mutex::MutexGuard<polling::Events> {lock: <optimized out>, poison: std::sync::poison::Guard {panicking: <optimized out>}}})
        tick = <optimized out>
        sleeps = 10
        last_tick = <optimized out>
        _enter = tracing::span::Entered {span: 0x79ac03ffe458}
        span = tracing::span::Span {inner: core::option::Option<tracing::span::Inner>::None, meta: core::option::Option<&tracing_core::metadata::Metadata>::None}
        interest = <optimized out>
        meta = <error reading variable meta (Cannot access memory at address 0x0)>
        span = <error reading variable span (Cannot access memory at address 0x0)>
        span = <error reading variable span (Cannot access memory at address 0x0)>
        _enter = <optimized out>
        last_tick = <optimized out>
        sleeps = <optimized out>
        tick = <optimized out>
        delay_us = <optimized out>
        interest = <optimized out>
        enabled = <optimized out>
        iter = <optimized out>
        interest = <optimized out>
        enabled = <optimized out>
        iter = <optimized out>
        reactor_lock = <error reading variable reactor_lock (Cannot access memory at address 0x10)>
        reactor_lock = <optimized out>
        interest = <optimized out>
        enabled = <optimized out>
        iter = <optimized out>
#7  async_io::driver::unparker::{closure#0}::{closure#0} () at src/driver.rs:33
        parker = <optimized out>
#8  std::sys::backtrace::__rust_begin_short_backtrace<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()> (f=...) at /usr/src/debug/rust/rustc-1.84.0-src/library/std/src/sys/backtrace.rs:154
No locals.
#9  0x000062c21dd10af9 in std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()> () at /usr/src/debug/rust/rustc-1.84.0-src/library/std/src/thread/mod.rs:561
        hooks = std::thread::spawnhook::ChildSpawnHooks {hooks: std::thread::spawnhook::SpawnHooks {first: core::option::Option<alloc::sync::Arc<std::thread::spawnhook::SpawnHook, alloc::alloc::Global>>::None}, to_run: alloc::vec::Vec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {inner: alloc::raw_vec::RawVecInner<alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x8}, _marker: core::marker::PhantomData<u8>}, cap: alloc::raw_vec::Cap (0), alloc: alloc::alloc::Global}, _marker: core::marker::PhantomData<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>}, len: 0}}
        f = async_io::driver::unparker::{closure#0}::{closure_env#0} {parker: parking::Parker {unparker: parking::Unparker {inner: alloc::sync::Arc<parking::Inner, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<parking::Inner>> {pointer: 0x79abd4001310}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<parking::Inner>>, alloc: alloc::alloc::Global}}, _marker: core::marker::PhantomData<core::cell::Cell<()>>}}
#10 core::panic::unwind_safe::{impl#23}::call_once<(), std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>> (self=...) at /usr/src/debug/rust/rustc-1.84.0-src/library/core/src/panic/unwind_safe.rs:272
        _args = <optimized out>
#11 std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>>, ()> (data=<error reading variable: Cannot access memory at address 0x0>) at /usr/src/debug/rust/rustc-1.84.0-src/library/std/src/panicking.rs:557
        f = core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>> (std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()> {hooks: std::thread::spawnhook::ChildSpawnHooks {hooks: std::thread::spawnhook::SpawnHooks {first: core::option::Option<alloc::sync::Arc<std::thread::spawnhook::SpawnHook, alloc::alloc::Global>>::None}, to_run: alloc::vec::Vec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {inner: alloc::raw_vec::RawVecInner<alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: <optimized out>}, _marker: core::marker::PhantomData<u8>}, cap: alloc::raw_vec::Cap (<optimized out>), alloc: alloc::alloc::Global}, _marker: core::marker::PhantomData<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>}, len: <optimized out>}}, f: async_io::driver::unparker::{closure#0}::{closure_env#0} {parker: parking::Parker {unparker: parking::Unparker {inner: alloc::sync::Arc<parking::Inner, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<parking::Inner>> {pointer: 0x79abd4001310}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<parking::Inner>>, alloc: alloc::alloc::Global}}, _marker: core::marker::PhantomData<core::cell::Cell<()>>}}})
        data = <error reading variable data (Cannot access memory at address 0x0)>
        data = <error reading variable data (Cannot access memory at address 0x0)>
        f = <error reading variable f (Cannot access memory at address 0x18)>
#12 std::panicking::try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>>> (f=...) at /usr/src/debug/rust/rustc-1.84.0-src/library/std/src/panicking.rs:520
        data = std::panicking::try::Data<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>>, ()> {f: core::mem::manually_drop::ManuallyDrop<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>>> {value: core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>> (std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()> {hooks: std::thread::spawnhook::ChildSpawnHooks {hooks: std::thread::spawnhook::SpawnHooks {first: core::option::Option<alloc::sync::Arc<std::thread::spawnhook::SpawnHook, alloc::alloc::Global>>::None}, to_run: alloc::vec::Vec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {inner: alloc::raw_vec::RawVecInner<alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: <optimized out>}, _marker: core::marker::PhantomData<u8>}, cap: alloc::raw_vec::Cap (<optimized out>), alloc: alloc::alloc::Global}, _marker: core::marker::PhantomData<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>}, len: <optimized out>}}, f: async_io::driver::unparker::{closure#0}::{closure_env#0} {parker: parking::Parker {unparker: parking::Unparker {inner: alloc::sync::Arc<parking::Inner, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<parking::Inner>> {pointer: 0x79abd4001310}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<parking::Inner>>, alloc: alloc::alloc::Global}}, _marker: core::marker::PhantomData<core::cell::Cell<()>>}}})}, r: core::mem::manually_drop::ManuallyDrop<()> {value: <synthetic pointer>}, p: core::mem::manually_drop::ManuallyDrop<alloc::boxed::Box<(dyn core::any::Any + core::marker::Send), alloc::alloc::Global>> {value: alloc::boxed::Box<(dyn core::any::Any + core::marker::Send), alloc::alloc::Global> {pointer: <optimized out>, vtable: <optimized out>}}}
        data = <error reading variable data (Cannot access memory at address 0x18)>
        data_ptr = <optimized out>
#13 std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>>, ()> (f=...) at /usr/src/debug/rust/rustc-1.84.0-src/library/std/src/panic.rs:358
No locals.
#14 std::thread::{impl#0}::spawn_unchecked_::{closure#1}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()> () at /usr/src/debug/rust/rustc-1.84.0-src/library/std/src/thread/mod.rs:559
        f = async_io::driver::unparker::{closure#0}::{closure_env#0} {parker: parking::Parker {unparker: parking::Unparker {inner: alloc::sync::Arc<parking::Inner, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<parking::Inner>> {pointer: 0x79abd4001310}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<parking::Inner>>, alloc: alloc::alloc::Global}}, _marker: core::marker::PhantomData<core::cell::Cell<()>>}}
        their_thread = std::thread::Thread (std::thread::Inner::Other(core::pin::Pin<alloc::sync::Arc<std::thread::OtherInner, alloc::alloc::Global>> {__pointer: alloc::sync::Arc<std::thread::OtherInner, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<std::thread::OtherInner>> {pointer: 0x62c2417c8980}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<std::thread::OtherInner>>, alloc: alloc::alloc::Global}}))
        f = std::thread::{impl#0}::spawn_unchecked_::MaybeDangling<async_io::driver::unparker::{closure#0}::{closure_env#0}> (core::mem::maybe_uninit::MaybeUninit<async_io::driver::unparker::{closure#0}::{closure_env#0}> {uninit: (), value: core::mem::manually_drop::ManuallyDrop<async_io::driver::unparker::{closure#0}::{closure_env#0}> {value: async_io::driver::unparker::{closure#0}::{closure_env#0} {parker: parking::Parker {unparker: parking::Unparker {inner: alloc::sync::Arc<parking::Inner, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<parking::Inner>> {pointer: 0x79abd4001310}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<parking::Inner>>, alloc: alloc::alloc::Global}}, _marker: core::marker::PhantomData<core::cell::Cell<()>>}}}})
        hooks = std::thread::spawnhook::ChildSpawnHooks {hooks: std::thread::spawnhook::SpawnHooks {first: core::option::Option<alloc::sync::Arc<std::thread::spawnhook::SpawnHook, alloc::alloc::Global>>::None}, to_run: alloc::vec::Vec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global> {inner: alloc::raw_vec::RawVecInner<alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x8}, _marker: core::marker::PhantomData<u8>}, cap: alloc::raw_vec::Cap (0), alloc: alloc::alloc::Global}, _marker: core::marker::PhantomData<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>}, len: 0}}
        their_packet = alloc::sync::Arc<std::thread::Packet<()>, alloc::alloc::Global> {ptr: core::ptr::non_null::NonNull<alloc::sync::ArcInner<std::thread::Packet<()>>> {pointer: 0x62c2417c9f90}, phantom: core::marker::PhantomData<alloc::sync::ArcInner<std::thread::Packet<()>>>, alloc: alloc::alloc::Global}
        _thread = <error reading variable _thread (Cannot access memory at address 0x0)>
        out = <optimized out>
        name = <optimized out>
        f = <optimized out>
        try_result = <error reading variable try_result (Cannot access memory at address 0x0)>
#15 core::ops::function::FnOnce::call_once<std::thread::{impl#0}::spawn_unchecked_::{closure_env#1}<async_io::driver::unparker::{closure#0}::{closure_env#0}, ()>, ()> () at /usr/src/debug/rust/rustc-1.84.0-src/library/core/src/ops/function.rs:250
No locals.
#16 0x000062c21e03bbbb in alloc::boxed::{impl#28}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> (self=..., args=<optimized out>) at alloc/src/boxed.rs:1972
No locals.
#17 alloc::boxed::{impl#28}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> (self=0x79abd4000ce0, args=<optimized out>) at alloc/src/boxed.rs:1972
No locals.
#18 std::sys::pal::unix::thread::{impl#2}::new::thread_start (main=0x79abd4000ce0) at std/src/sys/pal/unix/thread.rs:105
        _handler = std::sys::pal::unix::stack_overflow::Handler {data: 0x79ac0cafa000}
#19 0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779708442304, 5622302958963884679, 133779708442304, -608, 11, 133779779522304, 5622302958984856199, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#20 0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 4 (Thread 0x79ac0b1fd6c0 (LWP 132235)):
#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
No locals.
#1  0x000079ac109a8e33 in __internal_syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0, nr=271) at cancellation.c:49
        result = <optimized out>
        pd = <optimized out>
        ch = <optimized out>
#2  0x000079ac109a8e74 in __syscall_cancel (a1=<optimized out>, a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0, nr=271) at cancellation.c:75
        r = <optimized out>
#3  0x000079ac10a23a06 in __GI_ppoll (fds=fds@entry=0x79abfc000b90, nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:42
        tval = {tv_sec = 1, tv_nsec = 1}
#4  0x000079ac11afa327 in ppoll (__fds=0x79abfc000b90, __nfds=1, __timeout=0x0, __ss=0x0) at /usr/include/bits/poll2.h:101
No locals.
#5  g_main_context_poll_unlocked (priority=<optimized out>, context=0x62c2411966a0, timeout_usec=<optimized out>, fds=0x79abfc000b90, n_fds=1) at ../glib/glib/gmain.c:4591
        spec = {tv_sec = 97452, tv_nsec = 529293490}
        spec_p = 0x0
        ret = <optimized out>
        errsv = <optimized out>
        poll_func = <optimized out>
        poll_func = <optimized out>
        ret = <optimized out>
        errsv = <optimized out>
        spec = <optimized out>
        spec_p = <optimized out>
        timeout_msec = <optimized out>
#6  g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x62c2411966a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4268
        max_priority = 2147483647
        timeout_usec = -1
        some_ready = <optimized out>
        nfds = 1
        allocated_nfds = <optimized out>
        fds = 0x79abfc000b90
        begin_time_nsec = 97452529293490
#7  0x000079ac11a96a55 in g_main_context_iteration (context=context@entry=0x62c2411966a0, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4338
        retval = <optimized out>
#8  0x000079ac11dfb2fe in dconf_gdbus_worker_thread (user_data=0x62c2411966a0) at ../dconf/gdbus/dconf-gdbus-thread.c:82
        context = 0x62c2411966a0
#9  0x000079ac11accbe6 in g_thread_proxy (data=0x62c241199f30) at ../glib/glib/gthread.c:892
        thread = 0x62c241199f30
        __func__ = "g_thread_proxy"
#10 0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779827971776, 5622320824954094215, 133779827971776, -608, 17, 140730581880048, 5622320824975065735, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#11 0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 3 (Thread 0x79ac0c1ff6c0 (LWP 132233)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
No locals.
#1  0x000079ac11ac8be0 in g_cond_wait_impl (cond=0x62c241196988, mutex=0x62c241196980) at ../glib/glib/gthread-posix.c:1007
        saved_errno = 0
        res = <optimized out>
        sampled = 305
        sampled = <optimized out>
        gaig_temp = <optimized out>
        saved_errno = <optimized out>
        res = <optimized out>
#2  g_cond_wait (cond=0x62c241196988, mutex=0x62c241196980) at ../glib/glib/gthread.c:1665
No locals.
#3  0x000079ac11a5f98c in g_async_queue_pop_intern_unlocked (queue=0x62c241196980, wait=1, end_time=-1) at ../glib/glib/gasyncqueue.c:375
        retval = <optimized out>
        __func__ = "g_async_queue_pop_intern_unlocked"
#4  0x000079ac11acf237 in g_thread_pool_spawn_thread (data=<optimized out>) at ../glib/glib/gthreadpool.c:297
        spawn_thread_data = <optimized out>
        thread = 0x0
        error = 0x0
        prgname = <optimized out>
        name = "pool-loupe\000\000\000\000\000"
#5  0x000079ac11accbe6 in g_thread_proxy (data=0x62c2411969f0) at ../glib/glib/gthread.c:892
        thread = 0x62c2411969f0
        __func__ = "g_thread_proxy"
#6  0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {133779844757184, 5622305432865047175, 133779844757184, -608, 17, 140730581879856, 5622305432886018695, 5622260395276075655}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#7  0x000079ac10a30aac in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Thread 2 (Thread 0x79ac0ced8400 (LWP 132232)):
#0  _int_free_create_chunk (av=av@entry=0x79ac10affac0 <main_arena>, p=p@entry=0x62c241b5cd40, size=size@entry=912, nextchunk=nextchunk@entry=0x62c241b5d0d0, nextsize=nextsize@entry=32) at malloc.c:4766
        nextinuse = 33
        bck = <optimized out>
        fwd = <optimized out>
#1  0x000079ac109baa3a in _int_free_merge_chunk (av=av@entry=0x79ac10affac0 <main_arena>, p=p@entry=0x62c241b5cd40, size=size@entry=912) at malloc.c:4742
        nextchunk = 0x62c241b5d0d0
        nextsize = 32
#2  0x000079ac109babf0 in _int_free_chunk (av=0x79ac10affac0 <main_arena>, p=p@entry=0x62c241b5cd40, size=912, have_lock=<optimized out>, have_lock@entry=0) at malloc.c:4667
        fb = <optimized out>
#3  0x000079ac109bd9ab in _int_free (av=<optimized out>, p=0x62c241b5cd40, have_lock=0) at malloc.c:4699
        size = <optimized out>
        size = <optimized out>
#4  __GI___libc_free (mem=0x62c241b5cd50) at malloc.c:3476
        ar_ptr = <optimized out>
        p = 0x62c241b5cd40
        err = 11
#5  0x000079ab82817341 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#6  0x000079ab82814b64 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#7  0x000079ab82814bc4 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#8  0x000079ab82821880 in ?? () from /usr/lib/libnvidia-glcore.so.570.86.16
No symbol table info available.
#9  0x000079ab98127870 in ?? () from /usr/lib/libGLX_nvidia.so.0
No symbol table info available.
#10 0x000079ab98127edf in ?? () from /usr/lib/libGLX_nvidia.so.0
No symbol table info available.
#11 0x000079ac11e46000 in ?? ()
No symbol table info available.
#12 0x0000000000000000 in ?? ()
No symbol table info available.

Thread 1 (Thread 0x79ab67fff6c0 (LWP 132284)):
#0  0x000079ab9900e2a0 in ?? ()
No symbol table info available.
#1  0x0000000067b4e8e9 in ?? ()
No symbol table info available.
#2  0x00000000152d2868 in ?? ()
No symbol table info available.
#3  0x0000000067b4e8e9 in ?? ()
No symbol table info available.
#4  0x0000000000055079 in ?? ()
No symbol table info available.
#5  0x0000000000000007 in ?? ()
No symbol table info available.
#6  0x000062c241f08e68 in ?? ()
No symbol table info available.
#7  0x1825665674d83218 in ?? ()
No symbol table info available.
#8  0x000079ab9a619320 in ?? ()
No symbol table info available.
#9  0x000062c241a22340 in ?? ()
No symbol table info available.
#10 0x000079ab9936e7b4 in ?? ()
No symbol table info available.
#11 0x000062c241f08f88 in ?? ()
No symbol table info available.
#12 0x18256656a3485d30 in ?? ()
No symbol table info available.
#13 0x1825665674d4e658 in ?? ()
No symbol table info available.
#14 0x000062c241ef9760 in ?? ()
No symbol table info available.
#15 0x203a6362696c6720 in ?? ()
No symbol table info available.
#16 0x000062c2420b0da0 in ?? ()
No symbol table info available.
#17 0x000079ab99010920 in ?? ()
No symbol table info available.
#18 0x000079ab67fff6c0 in ?? ()
No symbol table info available.
#19 0xfffffffffffffda0 in ?? ()
No symbol table info available.
#20 0x0000000000000002 in ?? ()
No symbol table info available.
#21 0x00007ffe64575570 in ?? ()
No symbol table info available.
#22 0x000079ab990118fa in ?? ()
No symbol table info available.
#23 0x000079ab67fff6c0 in ?? ()
No symbol table info available.
#24 0x000079ab67fffcdc in ?? ()
No symbol table info available.
#25 0x000079ab67ffeaf0 in ?? ()
No symbol table info available.
#26 0x000079ac109ac70a in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = <error reading variable unwind_buf (Cannot access memory at address 0xffffffffffffff77)>
        not_first_call = <optimized out>

@amrits could this please be filed internally for additional investigation?
Currently due to these issues, the default Vulkan backend is not viable for use with nVidia.
Neither of these issues are present when using an Intel GPU.

Also attaching a fresh nVidia bug report.

nvidia-bug-report-vulkan-cpu-and-segfaults-2025-02-19.log (14.2 MB)

These issues continue to plague the latest nVidia 570.124.04 Production Branch driver as feared.

Without reiterating everything above, to summarize:

  • GTK4 apps background CPU usage is still high with the Vulkan backend renderer
  • GTK4 apps crash intermittently on exiting

I’ve reproduced the crash and generated another bug report with a freshly booted system.

FWIW, the bug report script seems faulty as it fails to find various executables such as lspci, vulkaninfo, etc. which all exist and are available.

Skipped Component                   | Details
================================================================================
ldd output                          | glxinfo not found 
--------------------------------------------------------------------------------
lspci output                        | lspci not found 
--------------------------------------------------------------------------------
lsusb output                        | lsusb not found 
--------------------------------------------------------------------------------
dmidecode output                    | dmidecode not found 
--------------------------------------------------------------------------------
modinfo output                      | modinfo not found 
--------------------------------------------------------------------------------
xrandr output                       | xrandr not found 
--------------------------------------------------------------------------------
nvidia-debugdump output             | nvidia-debugdump not found 
--------------------------------------------------------------------------------
vulkaninfo output                   | vulkaninfo not found 
--------------------------------------------------------------------------------
nvidia-smi output                   | nvidia-smi not found 
--------------------------------------------------------------------------------
nvidia-nvml-temp24090.log output    | base64 not found 
--------------------------------------------------------------------------------
ibstat output                       | ibstat not found 
--------------------------------------------------------------------------------
acpidump output                     | acpidump not found 
--------------------------------------------------------------------------------
mst output                          | mst not found 
--------------------------------------------------------------------------------
nvlsm-bug-report.sh output          | nvlsm-bug-report.sh not found 
--------------------------------------------------------------------------------

For instance:

$ vulkaninfo --summary
'DISPLAY' environment variable not set... skipping surface info
==========
VULKANINFO
==========

Vulkan Instance Version: 1.4.304


Instance Extensions: count = 24
-------------------------------
VK_EXT_acquire_drm_display             : extension revision 1
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_EXT_surface_maintenance1            : extension revision 1
VK_EXT_swapchain_colorspace            : extension revision 5
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_portability_enumeration         : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6
VK_LUNARG_direct_driver_loading        : extension revision 1
VK_NV_display_stereo                   : extension revision 1

Instance Layers: count = 1
--------------------------
VK_LAYER_NV_optimus NVIDIA Optimus layer 1.4.303  version 1

Devices:
========
GPU0:
	apiVersion         = 1.4.303
	driverVersion      = 570.124.4.0
	vendorID           = 0x10de
	deviceID           = 0x1c82
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce GTX 1050 Ti
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 570.124.04
	conformanceVersion = 1.4.1.0
	deviceUUID         = 3973861e-23b6-6c51-70e7-60235a3f1ebf
	driverUUID         = 4fef4b44-6f8c-56b2-9b76-6a75892bbaa4
GPU1:
	apiVersion         = 1.4.303
	driverVersion      = 570.124.4.0
	vendorID           = 0x10de
	deviceID           = 0x1c82
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce GTX 1050 Ti
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 570.124.04
	conformanceVersion = 1.4.1.0
	deviceUUID         = 3973861e-23b6-6c51-70e7-60235a3f1ebf
	driverUUID         = 4fef4b44-6f8c-56b2-9b76-6a75892bbaa4
$ nvidia-smi
Sun Mar  2 12:09:27 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.124.04             Driver Version: 570.124.04     CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GTX 1050 Ti     Off |   00000000:01:00.0  On |                  N/A |
| 31%   33C    P0            N/A  /   75W |    1405MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            1222      G   /usr/bin/gnome-shell                    453MiB |
|    0   N/A  N/A            1764    C+G   /usr/bin/nautilus                       133MiB |
|    0   N/A  N/A           23920    C+G   /usr/bin/kgx                             69MiB |
|    0   N/A  N/A           25142      G   ...ce43e3f2a414843d68e4d8190eabb        643MiB |
+-----------------------------------------------------------------------------------------+

Please find attached the latest bug report:

nvidia-bug-report.log (14.3 MB)


The nvidia-bug-report.sh script relies heavily on the antiquated which utility.

I’ve never had that installed. It was deprecated years ago.

The bug reporting script should be updated to utilize the POSIX-compliant command -v instead.

Reproduced. Attaching a new nVidia bug report.

This bug report should be as concise as possible given it’s a fresh boot and quickly reproduced.

Also, installed the which utility, so the script should have gathered all required info.

  • Arch Linux | Kernel 6.13.7
  • Gnome-shell | Mutter 47.5
  • Wayland (meson_options: xwayland=false, x11=false)
  • Gtk4 4.16.12
  • Mesa 24.3.4
  • vulkan-icd-loader 1.4.304
  • nVidia 570.124.04

nvidia-bug-report.log.gz (1.3 MB)

Unsurprisingly this issue is still present with nVidia 570.133.07 Production Branch drivers.

Latest stack:

  • Arch Linux | Kernel 6.13.7
  • Gnome-shell | Mutter 48.0
  • Wayland (meson_options: xwayland=false, x11=false)
  • Gtk4 4.18.2
  • Mesa 25.0.2
  • vulkan-icd-loader 1.4.304
  • nVidia 570.133.07

Linking back to overall summary tracker:

Using the latest 570.144 Production Branch Driver GTK4 apps are still:

  • Crashing on close
  • Utilizing superfluous CPU cycles even when “idle” in the background (minimized/hidden).

Current stack:

  • Arch Linux | Kernel 6.13.12
  • gnome-shell 48.1
  • mutter 48.2
  • wayland (meson_options: xwayland=false, x11=false)
  • gtk4 4.18.4
  • vulkan-icd-loader 1.4.309
  • nVidia 570.144

New bug report after fresh boot
nvidia-bug-report.log.gz (1.0 MB)

Can you please see if setting __GL_0x301fdf=0 makes the CPU usage go away?
The crash is likely a separate bug.

Wow. Yes!

I verified with 4 different GTK4 apps.

I’ll leave the default Vulkan renderer enabled in combination with that var and if no issues arise over the next couple days I’ll mark your response as a Solution and split out the crash-on-exit issue if it persists.

Thank you so much @ahuillet.

Side-note: A quick test of exiting ~20ish apps and no crash yet. I’ll script something up to automate testing. I’d only suspected they were related as the CPU usage was primarily in vkps updates, and the crash signature/bt also pointed to vkps.

EDIT: Please disregard my entire response above.

See followup post below.

In my over-eagerness to see this fixed, I failed to note that when setting that var GTK4 was falling back to the NGL renderer (verified with GTK Inspector) and thus no CPU usage. D’oh.

Forcing the default Vulkan renderer in combination with __GL_0x301fdf=0 had no effect on CPU usage unfortunately.

@ahuillet I also tested the 575.51.02 Beta drivers with the default Vulkan renderer in combination with __GL_0x301fdf=0.

This also had no impact on CPU usage. Bummer.

Thanks for the suggestion though. I’ll try anything else you might suggest to further troubleshoot this problem.