[Bug 1993530] Re: libc timer_create with option SIGEV_THREAD system call having memory leaks after timer_delete system call

Dan Bungert 1993530 at bugs.launchpad.net
Mon Oct 24 19:30:22 UTC 2022


Reproduced using supplied sample application, thanks!
Moving component to glibc.

** Also affects: glibc (Ubuntu)
   Importance: Undecided
       Status: New

** Changed in: gcc-9 (Ubuntu)
       Status: New => Invalid

** Changed in: glibc (Ubuntu)
       Status: New => Triaged

** Changed in: glibc (Ubuntu)
   Importance: Undecided => Low

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/1993530

Title:
  libc timer_create with option SIGEV_THREAD system call having memory
  leaks after timer_delete system call

Status in gcc-9 package in Ubuntu:
  Invalid
Status in glibc package in Ubuntu:
  Triaged

Bug description:
  I have following ubuntu environment:

  Description:    Ubuntu 20.04.1 LTS
  Release:        20.04
  gcc 9.4.0
  Linux version 5.15.0-48-generic
  libc-2.31.so

  I am using libc timer_create system call with option SIGEV_THREAD to
  create a timer, My timer functionality is working fine but when I exit
  my code after successfully deletion of timer using timer_delete system
  call I am getting 272 bytes of memory leak in valgrind report.

  I have attached my sample application(timer_app.c). Please review and
  let me know if I am doing anything wrong here.

  below is the valgrind memory leak snippet

  ==682959== 272 bytes in 1 blocks are possibly lost in loss record 1 of 1
  ==682959==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==682959==    by 0x40149DA: allocate_dtv (dl-tls.c:286)
  ==682959==    by 0x40149DA: _dl_allocate_tls (dl-tls.c:532)
  ==682959==    by 0x4A65322: allocate_stack (allocatestack.c:622)
  ==682959==    by 0x4A65322: pthread_create@@GLIBC_2.2.5 (pthread_create.c:660)
  ==682959==    by 0x4865BCC: __start_helper_thread (timer_routines.c:176)
  ==682959==    by 0x4A6D4DE: __pthread_once_slow (pthread_once.c:116)
  ==682959==    by 0x48649A2: timer_create@@GLIBC_2.3.3 (timer_create.c:101)
  ==682959==    by 0x1092F1: SupTimerInit (in /home/vikas/a.out)
  ==682959==    by 0x109490: main (in /home/vikas/a.out)

  
  =======================================================================
  complete valgrind dump
  ==682959== Memcheck, a memory error detector
  ==682959== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
  ==682959== Using Valgrind-3.15.0-608cb11914-20190413 and LibVEX; rerun with -h for copyright info
  ==682959== Command: ./a.out
  ==682959== Parent PID: 681415
  ==682959== 
  --682959-- 
  --682959-- Valgrind options:
  --682959--    --leak-check=full
  --682959--    --show-leak-kinds=all
  --682959--    --track-origins=yes
  --682959--    --verbose
  --682959--    --log-file=valgrind-out.txt
  --682959-- Contents of /proc/version:
  --682959--   Linux version 5.15.0-48-generic (buildd at lcy02-amd64-043) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #54~20.04.1-Ubuntu SMP Thu Sep 1 16:17:26 UTC 2022
  --682959-- 
  --682959-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand
  --682959-- Page sizes: currently 4096, max supported 4096
  --682959-- Valgrind library directory: /usr/lib/x86_64-linux-gnu/valgrind
  --682959-- Reading syms from /home/vikas/a.out
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/ld-2.31.so
  --682959--   Considering /usr/lib/debug/.build-id/45/87364908de169dec62ffa538170118c1c3a078.debug ..
  --682959--   .. build-id is valid
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/memcheck-amd64-linux
  --682959--    object doesn't have a symbol table
  --682959--    object doesn't have a dynamic symbol table
  --682959-- Scheduler: using generic scheduler lock implementation.
  --682959-- Reading suppressions file: /usr/lib/x86_64-linux-gnu/valgrind/default.supp
  ==682959== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-682959-by-vikas-on-???
  ==682959== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-682959-by-vikas-on-???
  ==682959== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-682959-by-vikas-on-???
  ==682959== 
  ==682959== TO CONTROL THIS PROCESS USING vgdb (which you probably
  ==682959== don't want to do, unless you know exactly what you're doing,
  ==682959== or are doing some strange experiment):
  ==682959==   /usr/lib/x86_64-linux-gnu/valgrind/../../bin/vgdb --pid=682959 ...command...
  ==682959== 
  ==682959== TO DEBUG THIS PROCESS USING GDB: start GDB like this
  ==682959==   /path/to/gdb ./a.out
  ==682959== and then give GDB the following command
  ==682959==   target remote | /usr/lib/x86_64-linux-gnu/valgrind/../../bin/vgdb --pid=682959
  ==682959== --pid is optional if only one valgrind process is running
  ==682959== 
  --682959-- REDIR: 0x4022e20 (ld-linux-x86-64.so.2:strlen) redirected to 0x580c9ce2 (???)
  --682959-- REDIR: 0x4022bf0 (ld-linux-x86-64.so.2:index) redirected to 0x580c9cfc (???)
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_core-amd64-linux.so
  --682959--    object doesn't have a symbol table
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so
  --682959--    object doesn't have a symbol table
  ==682959== WARNING: new redirection conflicts with existing -- ignoring it
  --682959--     old: 0x04022e20 (strlen              ) R-> (0000.0) 0x580c9ce2 ???
  --682959--     new: 0x04022e20 (strlen              ) R-> (2007.0) 0x0483f060 strlen
  --682959-- REDIR: 0x401f600 (ld-linux-x86-64.so.2:strcmp) redirected to 0x483ffd0 (strcmp)
  --682959-- REDIR: 0x4023380 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4843a20 (mempcpy)
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/librt-2.31.so
  --682959--   Considering /usr/lib/debug/.build-id/ce/016c975d94bc4770ed8c62d45dea6b71405a2c.debug ..
  --682959--   .. build-id is valid
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/libc-2.31.so
  --682959--   Considering /usr/lib/debug/.build-id/18/78e6b475720c7c51969e69ab2d276fae6d1dee.debug ..
  --682959--   .. build-id is valid
  --682959-- Reading syms from /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
  --682959--   Considering /usr/lib/debug/.build-id/7b/4536f41cdaa5888408e82d0836e33dcf436466.debug ..
  --682959--   .. build-id is valid
  --682959-- REDIR: 0x490a480 (libc.so.6:memmove) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909780 (libc.so.6:strncpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a7b0 (libc.so.6:strcasecmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x49090a0 (libc.so.6:strcat) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x49097e0 (libc.so.6:rindex) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490bc50 (libc.so.6:rawmemchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4926ce0 (libc.so.6:wmemchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4926820 (libc.so.6:wcscmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a5e0 (libc.so.6:mempcpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a410 (libc.so.6:bcmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909710 (libc.so.6:strncmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909150 (libc.so.6:strcmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a540 (libc.so.6:memset) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x49267e0 (libc.so.6:wcschr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909670 (libc.so.6:strnlen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909230 (libc.so.6:strcspn) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a800 (libc.so.6:strncasecmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x49091d0 (libc.so.6:strcpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a950 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4927f50 (libc.so.6:wcsnlen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4926860 (libc.so.6:wcscpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909820 (libc.so.6:strpbrk) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909100 (libc.so.6:index) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909630 (libc.so.6:strlen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4912bb0 (libc.so.6:memrchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a850 (libc.so.6:strcasecmp_l) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a3d0 (libc.so.6:memchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4926930 (libc.so.6:wcslen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x4909ae0 (libc.so.6:strspn) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a750 (libc.so.6:stpncpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a6f0 (libc.so.6:stpcpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490bc90 (libc.so.6:strchrnul) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x490a8a0 (libc.so.6:strncasecmp_l) redirected to 0x48331d0 (_vgnU_ifunc_wrapper)
  --682959-- REDIR: 0x49f2500 (libc.so.6:__strrchr_avx2) redirected to 0x483ea10 (rindex)
  --682959-- REDIR: 0x4905b10 (libc.so.6:calloc) redirected to 0x483dce0 (calloc)
  --682959-- REDIR: 0x49046d0 (libc.so.6:free) redirected to 0x483c9d0 (free)
  --682959-- REDIR: 0x49040e0 (libc.so.6:malloc) redirected to 0x483b780 (malloc)
  --682959-- REDIR: 0x49f2310 (libc.so.6:__strchrnul_avx2) redirected to 0x4843540 (strchrnul)
  --682959-- REDIR: 0x49f56c0 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4843660 (mempcpy)
  --682959-- REDIR: 0x49f5b60 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x48428e0 (memset)
  ==682959== 
  ==682959== HEAP SUMMARY:
  ==682959==     in use at exit: 272 bytes in 1 blocks
  ==682959==   total heap usage: 6 allocs, 5 frees, 1,688 bytes allocated
  ==682959== 
  ==682959== Searching for pointers to 1 not-freed blocks
  ==682959== Checked 116,416 bytes
  ==682959== 
  ==682959== 272 bytes in 1 blocks are possibly lost in loss record 1 of 1
  ==682959==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==682959==    by 0x40149DA: allocate_dtv (dl-tls.c:286)
  ==682959==    by 0x40149DA: _dl_allocate_tls (dl-tls.c:532)
  ==682959==    by 0x4A65322: allocate_stack (allocatestack.c:622)
  ==682959==    by 0x4A65322: pthread_create@@GLIBC_2.2.5 (pthread_create.c:660)
  ==682959==    by 0x4865BCC: __start_helper_thread (timer_routines.c:176)
  ==682959==    by 0x4A6D4DE: __pthread_once_slow (pthread_once.c:116)
  ==682959==    by 0x48649A2: timer_create@@GLIBC_2.3.3 (timer_create.c:101)
  ==682959==    by 0x1092F1: SupTimerInit (in /home/vikas/a.out)
  ==682959==    by 0x109490: main (in /home/vikas/a.out)
  ==682959== 
  ==682959== LEAK SUMMARY:
  ==682959==    definitely lost: 0 bytes in 0 blocks
  ==682959==    indirectly lost: 0 bytes in 0 blocks
  ==682959==      possibly lost: 272 bytes in 1 blocks
  ==682959==    still reachable: 0 bytes in 0 blocks
  ==682959==         suppressed: 0 bytes in 0 blocks
  ==682959== 
  ==682959== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

  Regards,
  Vikas

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-9/+bug/1993530/+subscriptions




More information about the foundations-bugs mailing list