[AI-feature] Memory leaks #120

Closed
opened 2026-05-15 09:18:23 +00:00 by jabber.developer · 1 comment

Manual tests with valgrind revealed multiple leak locations. Log is below

==35221== 60 (16 direct, 44 indirect) bytes in 1 blocks are definitely lost in loss record 244 of 495
==35221==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==35221==    by 0x57B1AC9: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x57C71B4: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x5793E11: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x5794514: g_error_new_valist (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x5794750: g_set_error (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x57A45EA: g_key_file_get_value (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x57A4E3C: g_key_file_get_uint64 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x1EE215: _load_identity (omemo.c:1434)
==35221==    by 0x1EE215: omemo_on_connect (omemo.c:242)
==35221==    by 0x179E61: sv_ev_login_account_success (server_events.c:103)
==35221==    by 0x15C40B: session_login_success (session.c:335)
==35221==    by 0x15E7D2: _connection_handler (connection.c:982)
==35221== 
==35221== 784 bytes in 8 blocks are definitely lost in loss record 445 of 495
==35221==    at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==35221==    by 0x57B2819: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x1DD04D: _write_callback (ai_client.c:63)
==35221==    by 0x48C38BB: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0)
==35221==    by 0x48C18E7: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0)
==35221==    by 0x48D6A94: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0)
==35221==    by 0x48BD672: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0)
==35221==    by 0x48C05E9: curl_multi_perform (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0)
==35221==    by 0x488EE6A: curl_easy_perform (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0)
==35221==    by 0x1DE0A8: _ai_request_thread (ai_client.c:1488)
==35221==    by 0x57DAE61: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x5CB9AA3: start_thread (pthread_create.c:447)
==35221== 
==35221== 1,008 bytes in 18 blocks are definitely lost in loss record 447 of 495
==35221==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==35221==    by 0x5CAC947: __vasprintf_internal (vasprintf.c:116)
==35221==    by 0x57FFAD2: g_vasprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x57D05A4: g_strdup_vprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x57D0900: g_strdup_printf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x15EC01: connection_create_stanza_id (connection.c:837)
==35221==    by 0x1A27B4: _cmd_execute_default (cmd_funcs.c:8519)
==35221==    by 0x156910: prof_run (profanity.c:152)
==35221==    by 0x14BD6B: main (main.c:176)
==35221== 
==35221== 4,434 (528 direct, 3,906 indirect) bytes in 6 blocks are definitely lost in loss record 474 of 495
==35221==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==35221==    by 0x57B2771: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
==35221==    by 0x1DF653: ai_session_create (ai_client.c:1170)
==35221==    by 0x1B7F3A: cmd_ai_start (cmd_funcs.c:10964)
==35221==    by 0x1A396C: _cmd_execute (cmd_funcs.c:8430)
==35221==    by 0x1A386D: cmd_process_input (cmd_funcs.c:222)
==35221==    by 0x156910: prof_run (profanity.c:152)
==35221==    by 0x14BD6B: main (main.c:176)
==35221== 
==35221== LEAK SUMMARY:
==35221==    definitely lost: 2,336 bytes in 33 blocks
==35221==    indirectly lost: 334 bytes in 19 blocks
==35221==      possibly lost: 0 bytes in 0 blocks
==35221==    still reachable: 11,910 bytes in 167 blocks
==35221==         suppressed: 932,367 bytes in 1,399 blocks
==35221== Reachable blocks (those to which a pointer was found) are not shown.
==35221== To see them, rerun with: --leak-check=full --show-leak-kinds=all
Manual tests with `valgrind` revealed multiple leak locations. Log is below ```log ==35221== 60 (16 direct, 44 indirect) bytes in 1 blocks are definitely lost in loss record 244 of 495 ==35221== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==35221== by 0x57B1AC9: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x57C71B4: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x5793E11: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x5794514: g_error_new_valist (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x5794750: g_set_error (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x57A45EA: g_key_file_get_value (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x57A4E3C: g_key_file_get_uint64 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x1EE215: _load_identity (omemo.c:1434) ==35221== by 0x1EE215: omemo_on_connect (omemo.c:242) ==35221== by 0x179E61: sv_ev_login_account_success (server_events.c:103) ==35221== by 0x15C40B: session_login_success (session.c:335) ==35221== by 0x15E7D2: _connection_handler (connection.c:982) ==35221== ==35221== 784 bytes in 8 blocks are definitely lost in loss record 445 of 495 ==35221== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==35221== by 0x57B2819: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x1DD04D: _write_callback (ai_client.c:63) ==35221== by 0x48C38BB: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0) ==35221== by 0x48C18E7: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0) ==35221== by 0x48D6A94: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0) ==35221== by 0x48BD672: ??? (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0) ==35221== by 0x48C05E9: curl_multi_perform (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0) ==35221== by 0x488EE6A: curl_easy_perform (in /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.8.0) ==35221== by 0x1DE0A8: _ai_request_thread (ai_client.c:1488) ==35221== by 0x57DAE61: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x5CB9AA3: start_thread (pthread_create.c:447) ==35221== ==35221== 1,008 bytes in 18 blocks are definitely lost in loss record 447 of 495 ==35221== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==35221== by 0x5CAC947: __vasprintf_internal (vasprintf.c:116) ==35221== by 0x57FFAD2: g_vasprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x57D05A4: g_strdup_vprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x57D0900: g_strdup_printf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x15EC01: connection_create_stanza_id (connection.c:837) ==35221== by 0x1A27B4: _cmd_execute_default (cmd_funcs.c:8519) ==35221== by 0x156910: prof_run (profanity.c:152) ==35221== by 0x14BD6B: main (main.c:176) ==35221== ==35221== 4,434 (528 direct, 3,906 indirect) bytes in 6 blocks are definitely lost in loss record 474 of 495 ==35221== at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==35221== by 0x57B2771: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0) ==35221== by 0x1DF653: ai_session_create (ai_client.c:1170) ==35221== by 0x1B7F3A: cmd_ai_start (cmd_funcs.c:10964) ==35221== by 0x1A396C: _cmd_execute (cmd_funcs.c:8430) ==35221== by 0x1A386D: cmd_process_input (cmd_funcs.c:222) ==35221== by 0x156910: prof_run (profanity.c:152) ==35221== by 0x14BD6B: main (main.c:176) ==35221== ==35221== LEAK SUMMARY: ==35221== definitely lost: 2,336 bytes in 33 blocks ==35221== indirectly lost: 334 bytes in 19 blocks ==35221== possibly lost: 0 bytes in 0 blocks ==35221== still reachable: 11,910 bytes in 167 blocks ==35221== suppressed: 932,367 bytes in 1,399 blocks ==35221== Reachable blocks (those to which a pointer was found) are not shown. ==35221== To see them, rerun with: --leak-check=full --show-leak-kinds=all ```
jabber.developer added this to the Plans (2025-2026) project 2026-05-15 09:18:29 +00:00
jabber.developer added the
Kind/Bug
Priority
High
2
Reviewed
Confirmed
1
labels 2026-05-15 09:18:41 +00:00
jabber.developer added the due date 2026-05-15 2026-05-15 09:18:52 +00:00
jabber.developer moved this to In Progress in Plans (2025-2026) on 2026-05-15 09:19:14 +00:00
Author
Owner

Fixed by #121

Fixed by #121
jabber.developer moved this to Done in Plans (2025-2026) on 2026-05-18 09:44:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
2026-05-15
Dependencies

No dependencies set.

Reference: devs/cproof#120
No description provided.