Possible memory leak in the 510.60 linux driver

Hello,

Some time ago (a couple of weeks maybe?) I noticed that all my programs using graphics libraries (Vulkan, SFML, Allegro) suddenly started leaking memory on exit (as reported by Asan). I was hoping the problem would go away after some system upgrade, but so far it hasn’t.

Apprently, creating and immediately destroying a Vulkan instance is enough to reproduce the leak. Below is a minimal example in C (compiled with clang vkleak.c -o vkleak -Wall -lvulkan -fsanitize=address):

#include <vulkan/vulkan.h>
#include <stdio.h>

int main(void)
{
	VkInstance inst;
	VkApplicationInfo app_info = {
		.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
		.pNext = NULL,
		.pApplicationName = "leak_test",
		.applicationVersion = VK_MAKE_VERSION(0, 0, 1),
		.pEngineName = "leak_test",
		.engineVersion = VK_MAKE_VERSION(0, 0, 1),
		.apiVersion = VK_API_VERSION_1_0,
	};
	
	VkInstanceCreateInfo create_info = {};
	create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
	create_info.pNext = NULL;
	create_info.pApplicationInfo = &app_info;
	create_info.enabledExtensionCount = 0;
	create_info.ppEnabledExtensionNames = NULL;
	create_info.enabledLayerCount = 0;
	create_info.ppEnabledLayerNames = NULL;

	printf("creating Vulkan instance...\n");
	if (vkCreateInstance(&create_info, NULL, &inst) != VK_SUCCESS)
		printf("failed to create Vulkan instance\n");
	
	vkDestroyInstance(inst, NULL);
	printf("destroyed...\n");
	
	return 0;
}

The sanitizer reports a loss of 262524 bytes across 1188 allocations from <unknown module>. The leaks can be further traced down by attaching the following code as a shared library (clang dlclose_hack.c -o libdlclose_hack.so -Wall -shared -g):

int dlclose(void *ptr)
{
	return 0;
}

Leak report with the shared library:

$ LD_PRELOAD="./libdlclose_hack.so" ./vkleak
creating Vulkan instance...
destroyed...

=================================================================
==14459==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 6304 byte(s) in 4 object(s) allocated from:
    #0 0x5581abd6cfa9 in __interceptor_calloc (/home/j/Desktop/vkleak/vkleak+0xcafa9)
    #1 0x7f195d66626f  (/usr/lib/libnvidia-glcore.so.510.60.02+0xe6626f)

Direct leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x5581abd6d199 in __interceptor_realloc (/home/j/Desktop/vkleak/vkleak+0xcb199)
    #1 0x7f195d6654aa  (/usr/lib/libnvidia-glcore.so.510.60.02+0xe654aa)

Indirect leak of 143712 byte(s) in 449 object(s) allocated from:
    #0 0x5581abd6cfa9 in __interceptor_calloc (/home/j/Desktop/vkleak/vkleak+0xcafa9)
    #1 0x7f195d66626f  (/usr/lib/libnvidia-glcore.so.510.60.02+0xe6626f)

Indirect leak of 4921 byte(s) in 372 object(s) allocated from:
    #0 0x5581abd6cde9 in __interceptor_malloc (/home/j/Desktop/vkleak/vkleak+0xcade9)
    #1 0x7f195d665ddc  (/usr/lib/libnvidia-glcore.so.510.60.02+0xe65ddc)

Indirect leak of 752 byte(s) in 6 object(s) allocated from:
    #0 0x5581abd6d199 in __interceptor_realloc (/home/j/Desktop/vkleak/vkleak+0xcb199)
    #1 0x7f195d6654aa  (/usr/lib/libnvidia-glcore.so.510.60.02+0xe654aa)

SUMMARY: AddressSanitizer: 156713 byte(s) leaked in 832 allocation(s).

The leaks seem to come from libnvidia-glcore.so. The amount of leaked bytes seems to have changed, so I’m not quite sure what to think about that. Nevertheless, Valgrind notices some leaks as well:

$ LD_PRELOAD="./libdlclose_hack.so" valgrind --leak-check=full ./vkleak 
==15160== Memcheck, a memory error detector
==15160== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==15160== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==15160== Command: ./vkleak
==15160== 
creating Vulkan instance...
destroyed...
==15160== 
==15160== HEAP SUMMARY:
==15160==     in use at exit: 556,868 bytes in 3,217 blocks
==15160==   total heap usage: 14,712 allocs, 11,495 frees, 710,655,137 bytes allocated
==15160== 
==15160== 0 bytes in 4 blocks are definitely lost in loss record 1 of 2,618
==15160==    at 0x4845899: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15160==    by 0x4005492: _dl_find_object_update (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x400D8F7: dl_open_worker_begin (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4A82E17: _dl_catch_exception (in /usr/lib/libc.so.6)
==15160==    by 0x400CD7A: dl_open_worker (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4A82E17: _dl_catch_exception (in /usr/lib/libc.so.6)
==15160==    by 0x400D15C: _dl_open (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x49B174B: dlopen_doit (in /usr/lib/libc.so.6)
==15160==    by 0x4A82E17: _dl_catch_exception (in /usr/lib/libc.so.6)
==15160==    by 0x4A82EE2: _dl_catch_error (in /usr/lib/libc.so.6)
==15160==    by 0x49B124D: _dlerror_run (in /usr/lib/libc.so.6)
==15160==    by 0x49B17D7: dlopen@@GLIBC_2.34 (in /usr/lib/libc.so.6)
==15160== 
==15160== 48 (24 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 2,036 of 2,618
==15160==    at 0x484AA83: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15160==    by 0x10C6626F: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C5A030: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C6B9E8: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0xF24BD68: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF2B20A5: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF24B2E2: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0x4E9768F: ???
==15160==    by 0x4005E98: call_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4005FCB: _dl_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4A82E74: _dl_catch_exception (in /usr/lib/libc.so.6)
==15160==    by 0x400CDDE: dl_open_worker (in /usr/lib/ld-linux-x86-64.so.2)
==15160== 
==15160== 128 bytes in 1 blocks are definitely lost in loss record 2,485 of 2,618
==15160==    at 0x484AA83: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15160==    by 0x10C6626F: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C5B769: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C5A1EE: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C6A5A8: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0xF24BD68: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF2B20A5: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF24B2E2: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0x4E9768F: ???
==15160==    by 0x4005E98: call_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4005FCB: _dl_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4A82E74: _dl_catch_exception (in /usr/lib/libc.so.6)
==15160== 
==15160== 571 (128 direct, 443 indirect) bytes in 1 blocks are definitely lost in loss record 2,535 of 2,618
==15160==    at 0x484AA83: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15160==    by 0x10C6626F: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C5B769: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C58718: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C59D9C: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C6A572: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0xF24BD68: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF2B20A5: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF24B2E2: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0x4E9768F: ???
==15160==    by 0x4005E98: call_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4005FCB: _dl_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160== 
==15160== 28,133 (6,024 direct, 22,109 indirect) bytes in 1 blocks are definitely lost in loss record 2,612 of 2,618
==15160==    at 0x484AA83: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15160==    by 0x10C6626F: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C5D1A5: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C58700: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C59D9C: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C6A572: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0xF24BD68: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF2B20A5: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF24B2E2: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0x4E9768F: ???
==15160==    by 0x4005E98: call_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4005FCB: _dl_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160== 
==15160== 127,842 (1,024 direct, 126,818 indirect) bytes in 1 blocks are definitely lost in loss record 2,618 of 2,618
==15160==    at 0x484ACD3: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15160==    by 0x10C654AA: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C5B800: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C58E6E: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0x10C6B80F: ??? (in /usr/lib/libnvidia-glcore.so.510.60.02)
==15160==    by 0xF24BD68: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF2B20A5: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0xF24B2E2: ??? (in /usr/lib/libGLX_nvidia.so.510.60.02)
==15160==    by 0x4E9768F: ???
==15160==    by 0x4005E98: call_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4005FCB: _dl_init (in /usr/lib/ld-linux-x86-64.so.2)
==15160==    by 0x4A82E74: _dl_catch_exception (in /usr/lib/libc.so.6)
==15160== 
==15160== LEAK SUMMARY:
==15160==    definitely lost: 7,328 bytes in 9 blocks
==15160==    indirectly lost: 149,394 bytes in 827 blocks
==15160==      possibly lost: 0 bytes in 0 blocks
==15160==    still reachable: 400,114 bytes in 2,380 blocks
==15160==         suppressed: 32 bytes in 1 blocks
==15160== Reachable blocks (those to which a pointer was found) are not shown.
==15160== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==15160== 
==15160== For lists of detected and suppressed errors, rerun with: -s
==15160== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)

As you can see, in both cases the leaks are associated with Nvidia libraries. My friend can reproduce the leaks on his computer with a GTX970 and the same driver version. The issue is not present on my laptop with an AMD GPU, nor another PC with an Intel IGPU.

I am attaching the source code to reproduce the leaks with Vulkan and SMFL as well as the output of nvidia-bug-report.sh. Can you please look into this?

Thank you in advance!

nvleaks.tar (10 KB)
nvidia-bug-report.log.gz (322.0 KB)

Basic system info:

$ inxi -SGC
System:
  Host: jasus Kernel: 5.15.32-1-MANJARO arch: x86_64 bits: 64
    Desktop: KDE Plasma v: 5.24.4 Distro: Manjaro Linux
CPU:
  Info: 6-core model: Intel Core i7-8700K bits: 64 type: MT MCP cache:
    L2: 1.5 MiB
  Speed (MHz): avg: 2974 min/max: 800/4700 cores: 1: 800 2: 4364 3: 4400
    4: 3603 5: 3501 6: 3485 7: 2988 8: 1877 9: 1022 10: 800 11: 4479 12: 4369
Graphics:
  Device-1: NVIDIA TU104 [GeForce RTX 2070 SUPER] driver: nvidia v: 510.60.02
  Display: x11 server: X.Org v: 1.21.1.3 with: Xwayland v: 22.1.1 driver:
    X: loaded: nvidia gpu: nvidia,nvidia-nvswitch resolution:
    1: 2560x1440~144Hz 2: 2560x1440~144Hz
  OpenGL: renderer: NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2
    v: 4.6.0 NVIDIA 510.60.02

Thanks for posting this issue, appreciate you providing the test code.
We have an internal tracking bug (3260444) for the memory leak, and will keep you updated on progress.

1 Like

Driver version 515.57 and leak is still present possibly with more on top.

Tested with the same code:

$ gcc vkleak.c -o vkleak -Wall -lvulkan -fsanitize=address && ./vkleak
creating Vulkan instance...
destroyed...

=================================================================
==273430==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 72704 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa144ea53b5  (<unknown module>)
    #2 0x7fa144e59fb2  (<unknown module>)

Direct leak of 6304 byte(s) in 4 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa1570ba06f  (<unknown module>)

Direct leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94af28  (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbef28)
    #1 0x7fa1570b951a  (<unknown module>)

Direct leak of 520 byte(s) in 13 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc9371  (<unknown module>)

Direct leak of 368 byte(s) in 3 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa145875fe7  (<unknown module>)

Direct leak of 176 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cb15d4  (<unknown module>)

Direct leak of 112 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cbf26b  (<unknown module>)

Direct leak of 96 byte(s) in 3 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc02ef  (<unknown module>)

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa1593edc99  (<unknown module>)

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cc2313  (<unknown module>)

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa1593edcb6  (<unknown module>)

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa1593edcd3  (<unknown module>)

Direct leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc2219  (<unknown module>)

Direct leak of 8 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94af28  (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbef28)
    #1 0x7fa159cbef30  (<unknown module>)

Indirect leak of 145400 byte(s) in 455 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa1570ba06f  (<unknown module>)

Indirect leak of 9434 byte(s) in 259 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa14561f493  (<unknown module>)

Indirect leak of 6222 byte(s) in 13 object(s) allocated from:
    #0 0x7fa15b94af28  (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbef28)
    #1 0x7fa159cc25cc  (<unknown module>)

Indirect leak of 6156 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa1456371f5  (<unknown module>)

Indirect leak of 5447 byte(s) in 13 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa145875fe7  (<unknown module>)

Indirect leak of 5008 byte(s) in 376 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa1570b9bdc  (<unknown module>)

Indirect leak of 808 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cc2464  (<unknown module>)

Indirect leak of 752 byte(s) in 6 object(s) allocated from:
    #0 0x7fa15b94af28  (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbef28)
    #1 0x7fa1570b951a  (<unknown module>)

Indirect leak of 704 byte(s) in 4 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cb15d4  (<unknown module>)

Indirect leak of 288 byte(s) in 4 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159caaa2d  (<unknown module>)

Indirect leak of 264 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159ca702d  (<unknown module>)

Indirect leak of 240 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159ca49c7  (<unknown module>)
    #2 0x7ffffffff  (<unknown module>)

Indirect leak of 232 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cbe431  (<unknown module>)
    #2 0x2d00000024  (<unknown module>)

Indirect leak of 204 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa145636d69  (<unknown module>)

Indirect leak of 160 byte(s) in 4 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc9371  (<unknown module>)

Indirect leak of 144 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cb744b  (<unknown module>)

Indirect leak of 128 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cbe988  (<unknown module>)

Indirect leak of 112 byte(s) in 6 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc27e3  (<unknown module>)

Indirect leak of 112 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cbf26b  (<unknown module>)

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cb44f0  (<unknown module>)

Indirect leak of 96 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc9491  (<unknown module>)

Indirect leak of 80 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc931b  (<unknown module>)

Indirect leak of 80 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cc2313  (<unknown module>)

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94af28  (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbef28)
    #1 0x7fa159cb47d8  (<unknown module>)

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cb603a  (<unknown module>)

Indirect leak of 48 byte(s) in 2 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc2219  (<unknown module>)

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159ca6ff8  (<unknown module>)

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159ca6fe7  (<unknown module>)

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa145628f20  (<unknown module>)

Indirect leak of 38 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc2b99  (<unknown module>)
    #2 0x98699e3ade5f56ff  (<unknown module>)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159cb64a3  (<unknown module>)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94bb27 in calloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbfb27)
    #1 0x7fa159ca5669  (<unknown module>)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc2275  (<unknown module>)

Indirect leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94af28  (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xbef28)
    #1 0x7fa159cbf0af  (<unknown module>)

Indirect leak of 7 byte(s) in 1 object(s) allocated from:
    #0 0x7fa15b94c177 in __interceptor_malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libasan.so.8+0xc0177)
    #1 0x7fa159cc02ef  (<unknown module>)

SUMMARY: AddressSanitizer: 264108 byte(s) leaked in 1205 allocation(s).

And valgrind:

$ valgrind --leak-check=full ./vkleak              
==273541== Memcheck, a memory error detector
==273541== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==273541== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
==273541== Command: ./vkleak
==273541== 
creating Vulkan instance...
destroyed...
==273541== 
==273541== HEAP SUMMARY:
==273541==     in use at exit: 274,783 bytes in 1,239 blocks
==273541==   total heap usage: 6,099 allocs, 4,860 frees, 228,867,589 bytes allocated
==273541== 
==273541== 8 bytes in 1 blocks are definitely lost in loss record 48 of 788
==273541==    at 0x4844734: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A31F30: ???
==273541==    by 0x5A1861F: ???
==273541==    by 0x5A18817: ???
==273541==    by 0x5A18AE3: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541== 
==273541== 29 bytes in 1 blocks are definitely lost in loss record 270 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A332EF: ???
==273541==    by 0x5A18E47: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541==    by 0x6AA45EA: ???
==273541==    by 0x504F272: ???
==273541== 
==273541== 29 bytes in 1 blocks are definitely lost in loss record 271 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A332EF: ???
==273541==    by 0x5A18C4C: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541==    by 0x6AA45EA: ???
==273541==    by 0x504F272: ???
==273541== 
==273541== 32 bytes in 1 blocks are definitely lost in loss record 314 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0xA475FE7: ???
==273541==    by 0xA2393AD: ???
==273541==    by 0xA22815C: ???
==273541==    by 0x9A9A566: ???
==273541==    by 0xA6A2835: ???
==273541==    by 0x9A59FB2: ???
==273541==    by 0x1FFEFFEF6F: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400CC8D: dl_open_worker (in /lib64/ld-linux-x86-64.so.2)
==273541== 
==273541== 38 bytes in 1 blocks are definitely lost in loss record 394 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A332EF: ???
==273541==    by 0x5A18CD3: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541==    by 0x6AA45EA: ???
==273541==    by 0x504F272: ???
==273541== 
==273541== 40 bytes in 1 blocks are definitely lost in loss record 427 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x56D6C99: ???
==273541==    by 0x4005DBD: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400CC8D: dl_open_worker (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400D027: _dl_open (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x497AE37: dlopen_doit (in /lib64/libc.so.6)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x4A4321E: _dl_catch_error (in /lib64/libc.so.6)
==273541==    by 0x497A926: _dlerror_run (in /lib64/libc.so.6)
==273541== 
==273541== 40 bytes in 1 blocks are definitely lost in loss record 428 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x56D6CB6: ???
==273541==    by 0x4005DBD: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400CC8D: dl_open_worker (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400D027: _dl_open (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x497AE37: dlopen_doit (in /lib64/libc.so.6)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x4A4321E: _dl_catch_error (in /lib64/libc.so.6)
==273541==    by 0x497A926: _dlerror_run (in /lib64/libc.so.6)
==273541== 
==273541== 40 bytes in 1 blocks are definitely lost in loss record 429 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x56D6CD3: ???
==273541==    by 0x4005DBD: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400CC8D: dl_open_worker (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400D027: _dl_open (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x497AE37: dlopen_doit (in /lib64/libc.so.6)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x4A4321E: _dl_catch_error (in /lib64/libc.so.6)
==273541==    by 0x497A926: _dlerror_run (in /lib64/libc.so.6)
==273541== 
==273541== 40 bytes in 1 blocks are definitely lost in loss record 430 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A35313: ???
==273541==    by 0x5A33A8E: ???
==273541==    by 0x5A33B4B: ???
==273541==    by 0x5A33BB8: ???
==273541==    by 0x5A153F3: ???
==273541==    by 0x5A1BD8D: ???
==273541==    by 0x5A18B92: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541== 
==273541== 48 (24 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 495 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x6ABA06F: ???
==273541==    by 0x6AADB80: ???
==273541==    by 0x6AC0278: ???
==273541==    by 0x504BB88: ???
==273541==    by 0x50B18E5: ???
==273541==    by 0x504B22A: ???
==273541==    by 0x1FFEFFF8B7: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400CC8D: dl_open_worker (in /lib64/ld-linux-x86-64.so.2)
==273541== 
==273541== 56 (16 direct, 40 indirect) bytes in 1 blocks are definitely lost in loss record 571 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0xA475FE7: ???
==273541==    by 0xA227FDA: ???
==273541==    by 0x4983A36: __pthread_once_slow (in /lib64/libc.so.6)
==273541==    by 0xA2280C7: ???
==273541==    by 0xA228142: ???
==273541==    by 0xA21FB92: ???
==273541==    by 0x9AADA9F: ???
==273541==    by 0xA6A2835: ???
==273541==    by 0x9A59FB2: ???
==273541==    by 0x1FFEFFEF6F: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541== 
==273541== 96 (24 direct, 72 indirect) bytes in 1 blocks are definitely lost in loss record 661 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A35219: ???
==273541==    by 0x5A2499D: ???
==273541==    by 0x5A2A2B6: ???
==273541==    by 0x5A1BB62: ???
==273541==    by 0x5A188B7: ???
==273541==    by 0x5A18AE3: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541== 
==273541== 128 bytes in 1 blocks are definitely lost in loss record 666 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x6ABA06F: ???
==273541==    by 0x6AAF2B9: ???
==273541==    by 0x6AADD3E: ???
==273541==    by 0x6ABEE38: ???
==273541==    by 0x504BB88: ???
==273541==    by 0x50B18E5: ???
==273541==    by 0x504B22A: ???
==273541==    by 0x1FFEFFF8B7: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541== 
==273541== 152 (112 direct, 40 indirect) bytes in 1 blocks are definitely lost in loss record 669 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A3226B: ???
==273541==    by 0x5A1BF7F: ???
==273541==    by 0x5A18B92: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541==    by 0x6AA45EA: ???
==273541== 
==273541== 520 bytes in 13 blocks are definitely lost in loss record 707 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A3C371: ???
==273541==    by 0x5A2EE84: ???
==273541==    by 0x5A2EFE8: ???
==273541==    by 0x5A189DF: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541== 
==273541== 559 (176 direct, 383 indirect) bytes in 1 blocks are definitely lost in loss record 709 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A245D4: ???
==273541==    by 0x5A24FC8: ???
==273541==    by 0x5A1889C: ???
==273541==    by 0x5A18AE3: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541== 
==273541== 591 (128 direct, 463 indirect) bytes in 1 blocks are definitely lost in loss record 710 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x6ABA06F: ???
==273541==    by 0x6AAF2B9: ???
==273541==    by 0x6AAC268: ???
==273541==    by 0x6AAD8EC: ???
==273541==    by 0x6ABEE02: ???
==273541==    by 0x504BB88: ???
==273541==    by 0x50B18E5: ???
==273541==    by 0x504B22A: ???
==273541==    by 0x1FFEFFF8B7: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541== 
==273541== 5,111 (112 direct, 4,999 indirect) bytes in 1 blocks are definitely lost in loss record 778 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0xA475FE7: ???
==273541==    by 0xA62488D: ???
==273541==    by 0xA22815C: ???
==273541==    by 0xA624B35: ???
==273541==    by 0xA262E36: ???
==273541==    by 0xA6A2835: ???
==273541==    by 0x9A59FB2: ???
==273541==    by 0x1FFEFFEF6F: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541== 
==273541== 9,676 (264 direct, 9,412 indirect) bytes in 1 blocks are definitely lost in loss record 782 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x5A1A02D: ???
==273541==    by 0x5A1BDEF: ???
==273541==    by 0x5A18B92: ???
==273541==    by 0x6B23ECE: ???
==273541==    by 0x6B241A1: ???
==273541==    by 0x6B2BD47: ???
==273541==    by 0x6B26722: ???
==273541==    by 0x6B26958: ???
==273541==    by 0x6AA3FDB: ???
==273541==    by 0x6AA44FE: ???
==273541==    by 0x6AA45EA: ???
==273541== 
==273541== 16,450 (320 direct, 16,130 indirect) bytes in 1 blocks are definitely lost in loss record 783 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0xA475FE7: ???
==273541==    by 0xA220717: ???
==273541==    by 0xA22815C: ???
==273541==    by 0xA21FB92: ???
==273541==    by 0x9AADA9F: ???
==273541==    by 0xA6A2835: ???
==273541==    by 0x9A59FB2: ???
==273541==    by 0x1FFEFFEF6F: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541== 
==273541== 28,833 (6,024 direct, 22,809 indirect) bytes in 1 blocks are definitely lost in loss record 785 of 788
==273541==    at 0x4849C0F: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x6ABA06F: ???
==273541==    by 0x6AB0CF5: ???
==273541==    by 0x6AAC250: ???
==273541==    by 0x6AAD8EC: ???
==273541==    by 0x6ABEE02: ???
==273541==    by 0x504BB88: ???
==273541==    by 0x50B18E5: ???
==273541==    by 0x504B22A: ???
==273541==    by 0x1FFEFFF8B7: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541== 
==273541== 72,704 bytes in 1 blocks are definitely lost in loss record 787 of 788
==273541==    at 0x4844834: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x9AA53B5: ???
==273541==    by 0xA6A2835: ???
==273541==    by 0x9A59FB2: ???
==273541==    by 0x1FFEFFEF6F: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400CC8D: dl_open_worker (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A43169: _dl_catch_exception (in /lib64/libc.so.6)
==273541==    by 0x400D027: _dl_open (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x497AE37: dlopen_doit (in /lib64/libc.so.6)
==273541== 
==273541== 128,897 (1,024 direct, 127,873 indirect) bytes in 1 blocks are definitely lost in loss record 788 of 788
==273541==    at 0x4849E6F: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==273541==    by 0x6AB951A: ???
==273541==    by 0x6AAF350: ???
==273541==    by 0x6AAC9BE: ???
==273541==    by 0x6AC0003: ???
==273541==    by 0x504BB88: ???
==273541==    by 0x50B18E5: ???
==273541==    by 0x504B22A: ???
==273541==    by 0x1FFEFFF8B7: ???
==273541==    by 0x4005D78: call_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4005EA3: _dl_init (in /lib64/ld-linux-x86-64.so.2)
==273541==    by 0x4A431C3: _dl_catch_exception (in /lib64/libc.so.6)
==273541== 
==273541== LEAK SUMMARY:
==273541==    definitely lost: 81,872 bytes in 35 blocks
==273541==    indirectly lost: 182,245 bytes in 1,170 blocks
==273541==      possibly lost: 0 bytes in 0 blocks
==273541==    still reachable: 10,634 bytes in 33 blocks
==273541==         suppressed: 32 bytes in 1 blocks
==273541== Reachable blocks (those to which a pointer was found) are not shown.
==273541== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==273541== 
==273541== For lists of detected and suppressed errors, rerun with: -s
==273541== ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)

Environment:

valgrind-3.19.0
Vulkan Instance Version: 1.3.216
GNU C Library (Gentoo 2.35-r8 p9)

NVIDIA-SMI 515.57
Driver Version: 515.57
CUDA Version: 11.7
Gentoo Base System release 2.8 x86_64
Kernel 5.18.3-zen1-x86_64

Any program using graphics features as simple as creating graphics instance causes the leaks and they do not seem to be getting better with each update.

Thanks for providing for data inputs, I have relayed the information to concerned team.
Shall keep posted on the same.

Hi, sorry for necromancing, but it seems that this issue is still present on 550.107.02 and can be still reproduced with the attached code.

2 Likes

Memory leaks should be prioritized, there’s a memory leak in Wayland too that they reproduced.
@amrits please follow up on this too.

1 Like