glXGetFBConfigs вызывает утечку огромного количества памяти - PullRequest
0 голосов
/ 27 октября 2019

У меня есть следующий вызов glXGetFBConfigs:

const GLXFBConfig * fbuf_configs = glXGetFBConfigs (
    display, screen_id, &fbuf_config_count
)

После проверки с помощью valgrind он создает 137 записей потерь для функции dlopen_doit, которая впоследствии вызываетmalloc. Ниже приведен пример одной такой записи, однако все 137 по существу одинаковы, так что виновником является dlopen_doit.

==12317== 9 bytes in 1 blocks are indirectly lost in loss record 16 of 137
==12317==    at 0x483579F: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==12317==    by 0x6B1FB5B: ??? (in /usr/lib64/libnvidia-glcore.so.435.21)
==12317==    by 0x6B19F54: ??? (in /usr/lib64/libnvidia-glcore.so.435.21)
==12317==    by 0x6B11934: ??? (in /usr/lib64/libnvidia-glcore.so.435.21)
==12317==    by 0x6B2337F: ??? (in /usr/lib64/libnvidia-glcore.so.435.21)
==12317==    by 0x58145B5: ??? (in /usr/lib64/opengl/nvidia/lib/libGLX_nvidia.so.435.21)
==12317==    by 0x400F29B: call_init.part.0 (in /lib64/ld-2.29.so)
==12317==    by 0x400F3D8: _dl_init (in /lib64/ld-2.29.so)
==12317==    by 0x40131E2: dl_open_worker (in /lib64/ld-2.29.so)
==12317==    by 0x4DC5F90: _dl_catch_exception (in /lib64/libc-2.29.so)
==12317==    by 0x4012AD9: _dl_open (in /lib64/ld-2.29.so)
==12317==    by 0x4E5529B: dlopen_doit (in /lib64/libdl-2.29.so)

Я не могу найти какую-либо информацию в Интернете относительно dlopen_doit, истраница справочника по glXGetFBConfigs вряд ли обширна, и в ней не говорится о необходимости вручную освобождать возвращаемое значение. Я только смог обнаружить, что glXGetFBConfigs было причиной, медленно изолируя все другие вызовы функций, как это нигде не упоминается в трассировке valgrind .

Что является причиной и потенциальным решениемза такое поведение?

...