У меня есть следующий вызов 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 .
Что является причиной и потенциальным решениемза такое поведение?