Package: libncurses5 Version: 5.6+20080713-1 Severity: normal
According to valgrind, libncurses5 allocates approximately 118k that is never freed: ==31792== 8 bytes in 1 blocks are still reachable in loss record 1 of 23 ==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505F410: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 15 bytes in 1 blocks are still reachable in loss record 2 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x5CCADB1: strdup (strdup.c:43) ==31792== by 0x506C2A6: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 18 bytes in 1 blocks are still reachable in loss record 3 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x506D5EF: _nc_tparm_analyze (in /lib/libncurses.so.5.6) ==31792== by 0x506D859: tparm (in /lib/libncurses.so.5.6) ==31792== by 0x505B62C: _nc_mvcur_init (in /lib/libncurses.so.5.6) ==31792== by 0x505CC61: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 22 bytes in 1 blocks are still reachable in loss record 4 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x506A4BC: _nc_home_terminfo (in /lib/libncurses.so.5.6) ==31792== by 0x506A124: _nc_next_db (in /lib/libncurses.so.5.6) ==31792== by 0x507053B: _nc_read_entry (in /lib/libncurses.so.5.6) ==31792== by 0x506BDB5: (within /lib/libncurses.so.5.6) ==31792== by 0x506C26F: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 24 bytes in 1 blocks are still reachable in loss record 5 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x50688A4: _nc_add_to_try (in /lib/libncurses.so.5.6) ==31792== by 0x506A556: _nc_init_keytry (in /lib/libncurses.so.5.6) ==31792== by 0x506B20B: _nc_keypad (in /lib/libncurses.so.5.6) ==31792== by 0x41CD80: TextRenderer::TextRenderer() (textrenderer.cc:12) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 128 bytes in 1 blocks are still reachable in loss record 6 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505F3DD: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 168 bytes in 1 blocks are still reachable in loss record 7 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x5053673: _nc_scroll_optimize (in /lib/libncurses.so.5.6) ==31792== by 0x5067364: doupdate (in /lib/libncurses.so.5.6) ==31792== by 0x505E52C: wrefresh (in /lib/libncurses.so.5.6) ==31792== by 0x41CB5A: TextRenderer::DisplayTitleScreen() (textrenderer.cc:25) ==31792== by 0x41F81F: Renderer::DoMessage(Renderer::Message&) (renderer.cc:25) ==31792== by 0x41FC67: Renderer::DoMainLoop() (renderer.cc:61) ==31792== by 0x415273: Game::DoRenderer(void*) (game.cc:132) ==31792== by 0x4E2BFC6: start_thread (pthread_create.c:297) ==31792== by 0x5D1F7CC: clone (in /usr/lib/debug/libc-2.7.so)==31792== ==31792== ==31792== 208 bytes in 1 blocks are still reachable in loss record 8 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x506C255: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 224 bytes in 2 blocks are still reachable in loss record 9 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505CF15: _nc_makenew (in /lib/libncurses.so.5.6) ==31792== by 0x505D484: newwin (in /lib/libncurses.so.5.6) ==31792== by 0x505F81B: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 336 bytes in 1 blocks are still reachable in loss record 10 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x50547FF: _nc_hash_map (in /lib/libncurses.so.5.6) ==31792== by 0x5053699: _nc_scroll_optimize (in /lib/libncurses.so.5.6) ==31792== by 0x5067364: doupdate (in /lib/libncurses.so.5.6) ==31792== by 0x505E52C: wrefresh (in /lib/libncurses.so.5.6) ==31792== by 0x41CB5A: TextRenderer::DisplayTitleScreen() (textrenderer.cc:25) ==31792== by 0x41F81F: Renderer::DoMessage(Renderer::Message&) (renderer.cc:25) ==31792== by 0x41FC67: Renderer::DoMainLoop() (renderer.cc:61) ==31792== by 0x415273: Game::DoRenderer(void*) (game.cc:132) ==31792== by 0x4E2BFC6: start_thread (pthread_create.c:297) ==31792== by 0x5D1F7CC: clone (in /usr/lib/debug/libc-2.7.so)==31792== ==31792== ==31792== 336 bytes in 1 blocks are still reachable in loss record 11 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x50546E0: _nc_hash_map (in /lib/libncurses.so.5.6) ==31792== by 0x5053699: _nc_scroll_optimize (in /lib/libncurses.so.5.6) ==31792== by 0x5067364: doupdate (in /lib/libncurses.so.5.6) ==31792== by 0x505E52C: wrefresh (in /lib/libncurses.so.5.6) ==31792== by 0x41CB5A: TextRenderer::DisplayTitleScreen() (textrenderer.cc:25) ==31792== by 0x41F81F: Renderer::DoMessage(Renderer::Message&) (renderer.cc:25) ==31792== by 0x41FC67: Renderer::DoMainLoop() (renderer.cc:61) ==31792== by 0x415273: Game::DoRenderer(void*) (game.cc:132) ==31792== by 0x4E2BFC6: start_thread (pthread_create.c:297) ==31792== by 0x5D1F7CC: clone (in /usr/lib/debug/libc-2.7.so)==31792== ==31792== ==31792== 488 bytes in 1 blocks are still reachable in loss record 12 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x507020F: _nc_read_termtype (in /lib/libncurses.so.5.6) ==31792== by 0x5070412: _nc_read_file_entry (in /lib/libncurses.so.5.6) ==31792== by 0x50705A0: _nc_read_entry (in /lib/libncurses.so.5.6) ==31792== by 0x506BDB5: (within /lib/libncurses.so.5.6) ==31792== by 0x506C26F: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 685 bytes in 1 blocks are still reachable in loss record 13 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x507037A: _nc_read_termtype (in /lib/libncurses.so.5.6) ==31792== by 0x5070412: _nc_read_file_entry (in /lib/libncurses.so.5.6) ==31792== by 0x50705A0: _nc_read_entry (in /lib/libncurses.so.5.6) ==31792== by 0x506BDB5: (within /lib/libncurses.so.5.6) ==31792== by 0x506C26F: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 1,024 bytes in 1 blocks are still reachable in loss record 14 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505F3BE: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 1,314 bytes in 1 blocks are still reachable in loss record 15 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x506FC91: _nc_read_termtype (in /lib/libncurses.so.5.6) ==31792== by 0x5070412: _nc_read_file_entry (in /lib/libncurses.so.5.6) ==31792== by 0x50705A0: _nc_read_entry (in /lib/libncurses.so.5.6) ==31792== by 0x506BDB5: (within /lib/libncurses.so.5.6) ==31792== by 0x506C26F: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 1,344 bytes in 2 blocks are still reachable in loss record 16 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505CF2E: _nc_makenew (in /lib/libncurses.so.5.6) ==31792== by 0x505D484: newwin (in /lib/libncurses.so.5.6) ==31792== by 0x505F81B: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 1,464 bytes in 1 blocks are still reachable in loss record 17 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505F370: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 2,064 bytes in 1 blocks are still reachable in loss record 18 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x5054357: _nc_hash_map (in /lib/libncurses.so.5.6) ==31792== by 0x5053699: _nc_scroll_optimize (in /lib/libncurses.so.5.6) ==31792== by 0x5067364: doupdate (in /lib/libncurses.so.5.6) ==31792== by 0x505E52C: wrefresh (in /lib/libncurses.so.5.6) ==31792== by 0x41CB5A: TextRenderer::DisplayTitleScreen() (textrenderer.cc:25) ==31792== by 0x41F81F: Renderer::DoMessage(Renderer::Message&) (renderer.cc:25) ==31792== by 0x41FC67: Renderer::DoMainLoop() (renderer.cc:61) ==31792== by 0x415273: Game::DoRenderer(void*) (game.cc:132) ==31792== by 0x4E2BFC6: start_thread (pthread_create.c:297) ==31792== by 0x5D1F7CC: clone (in /usr/lib/debug/libc-2.7.so)==31792== ==31792== ==31792== 2,328 bytes in 97 blocks are still reachable in loss record 19 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x50687EE: _nc_add_to_try (in /lib/libncurses.so.5.6) ==31792== by 0x506A556: _nc_init_keytry (in /lib/libncurses.so.5.6) ==31792== by 0x506B20B: _nc_keypad (in /lib/libncurses.so.5.6) ==31792== by 0x41CD80: TextRenderer::TextRenderer() (textrenderer.cc:12) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 2,800 bytes in 1 blocks are still reachable in loss record 20 of 23
==31792== at 0x4C20FEB: malloc (vg_replace_malloc.c:207) ==31792== by 0x5070677: _nc_set_buffer (in /lib/libncurses.so.5.6) ==31792== by 0x505F4DF: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 3,312 bytes in 138 blocks are still reachable in loss record 21 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x5068864: _nc_add_to_try (in /lib/libncurses.so.5.6) ==31792== by 0x506A556: _nc_init_keytry (in /lib/libncurses.so.5.6) ==31792== by 0x506B20B: _nc_keypad (in /lib/libncurses.so.5.6) ==31792== by 0x41CD80: TextRenderer::TextRenderer() (textrenderer.cc:12) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== ==31792== 3,974 bytes in 4 blocks are still reachable in loss record 22 of 23
==31792== at 0x4C210C2: realloc (vg_replace_malloc.c:429) ==31792== by 0x506A1FA: _nc_doalloc (in /lib/libncurses.so.5.6) ==31792== by 0x5070136: _nc_read_termtype (in /lib/libncurses.so.5.6) ==31792== by 0x5070412: _nc_read_file_entry (in /lib/libncurses.so.5.6) ==31792== by 0x50705A0: _nc_read_entry (in /lib/libncurses.so.5.6) ==31792== by 0x506BDB5: (within /lib/libncurses.so.5.6) ==31792== by 0x506C26F: _nc_setupterm (in /lib/libncurses.so.5.6) ==31792== by 0x505CAF7: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86)==31792== ==31792== ==31792== 96,096 bytes in 84 blocks are still reachable in loss record 23 of 23
==31792== at 0x4C200FC: calloc (vg_replace_malloc.c:397) ==31792== by 0x505D4CC: newwin (in /lib/libncurses.so.5.6) ==31792== by 0x505F81B: _nc_setupscreen (in /lib/libncurses.so.5.6) ==31792== by 0x505CB52: newterm (in /lib/libncurses.so.5.6) ==31792== by 0x5059CA8: initscr (in /lib/libncurses.so.5.6) ==31792== by 0x41CD4F: TextRenderer::TextRenderer() (textrenderer.cc:7) ==31792== by 0x415A7E: Game::InitializeThreads() (game.cc:61) ==31792== by 0x415D35: Game::Run() (game.cc:86) ==31792== by 0x4176A2: main (main.cc:5)==31792== ==31792== LEAK SUMMARY:
==31792== definitely lost: 0 bytes in 0 blocks. ==31792== possibly lost: 0 bytes in 0 blocks. ==31792== still reachable: 118,380 bytes in 344 blocks. ==31792== suppressed: 0 bytes in 0 blocks. Calling delwin(stdscr) should free the memory, but it does not. This is a problem because every time I want to check if my program is leaking, I have to go through pages and pages of libncurses5-allocated memory. Also, minimal memory usage is a requirement for this program, and ncurses currently provides no way to free this memory, AFAICT. If there is such a way, it does not appear to be documented. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libncurses5 depends on: ii libc6 2.7-13 GNU C Library: Shared libraries Versions of packages libncurses5 recommends: ii libgpm2 1.20.4-2 General Purpose Mouse - shared lib libncurses5 suggests no packages. -- no debconf information -- brian m. carlson / brian with sandals: Houston, Texas, US +1 713 440 7475 | http://crustytoothpaste.ath.cx/~bmc | My opinion only troff on top of XML: http://crustytoothpaste.ath.cx/~bmc/code/thwack OpenPGP: RSA v4 4096b 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
signature.asc
Description: Digital signature