|
From: Greg C. <gre...@ya...> - 2011-05-06 19:18:30
|
Hello, Running memcheck on our large binaries (5-10GB resident) causes mem check to abort. Any ideas? Without Track Orgins or without --leak-check=full --error-limit=no --max-stackframe=33571850424 --leak-check=full --trace-children=no --log-file=valgrind.log --error-limit=no --max-stackframe=33571850424 --trace-children=no --log-file=valgrind.log Memcheck: the 'impossible' happened: create_MC_Chunk: shadow area is accessible ==23071== at 0x3802B457: report_and_quit (m_libcassert.c:193) ==23071== by 0x3802B4C9: panic (m_libcassert.c:277) ==23071== by 0x3802B4FB: vgPlain_tool_panic (m_libcassert.c:292) ==23071== by 0x380025E3: create_MC_Chunk (mc_malloc_wrappers.c:151) ==23071== by 0x38002B5E: vgMemCheck_new_block (mc_malloc_wrappers.c:220) ==23071== by 0x38002F3B: vgMemCheck___builtin_new (mc_malloc_wrappers.c:248) ==23071== by 0x38066244: vgPlain_scheduler (scheduler.c:1394) ==23071== by 0x3808B093: run_a_thread_NORETURN (syswrap-linux.c:94) With Track Orgins --error-limit --max-stackframe=33571850424 --leak-check=full --track-origins=yes --trace-children=no --log-file=valgrind.log ==7560== Valgrind's memory management: out of memory: ==7560== newSuperblock's request for 4194304 bytes failed. ==7560== 33731608576 bytes have already been allocated. ==7560== Valgrind cannot continue. Sorry. ==7560== ==7560== There are several possible reasons for this. Massif ==25688== Warning: Malformed stack trace detected. In Massif's output, ==25688== the size of an entry's child entries may not sum up ==25688== to the entry's size as they normally do. ==25688== Warning: Malformed stack trace detected. In Massif's output, ==25688== the size of an entry's child entries may not sum up ==25688== to the entry's size as they normally do. ==25688== Warning: Malformed stack trace detected. In Massif's output, ==25688== the size of an entry's child entries may not sum up ==25688== to the entry's size as they normally do. ==25688== (And Massif now won't warn about this again.) valgrind: m_mallocfree.c:248 (get_bszB_as_is): Assertion 'bszB_lo == bszB_hi' failed. valgrind: Heap block lo/hi size mismatch: lo = 67222592, hi = 0. This is probably caused by your program erroneously writing past the end of a heap block and corrupting heap metadata. If you fix any invalid writes reported by Memcheck, this assertion failure will probably go away. Please try that before reporting this as a bug. ==25688== at 0x38006117: report_and_quit (m_libcassert.c:193) ==25688== by 0x3800634B: vgPlain_assert_fail (m_libcassert.c:267) ==25688== by 0x38010545: vgPlain_arena_free (m_mallocfree.c:246) ==25688== by 0x3803F094: vgPlain_scheduler (scheduler.c:1394) ==25688== by 0x3800E01B: final_tidyup (m_main.c:2568) ==25688== by 0x3800E36B: shutdown_actions_NORETURN (m_main.c:2357) ==25688== by 0x380640A8: run_a_thread_NORETURN (syswrap-linux.c:149) OS is SUSE64 LinuxSET EC Image SLES10SP3-3 Revision 0 Valgrind 3.6.1 custom build with VG_N_SEGMENTS 50000 |
|
From: Julian S. <js...@ac...> - 2011-05-07 08:04:04
|
> Running memcheck on our large binaries (5-10GB resident) causes mem check > to abort. Any ideas? By default Memcheck is limited to using the first 32GB of memory, so it can't manage processes that go over about 14GB natively. That's adjustable though. I'm more concerned about a couple of other things here: > --max-stackframe=33571850424 What's this for? Kinda asking for trouble, unless you're sure you need it. > Memcheck: the 'impossible' happened: > create_MC_Chunk: shadow area is accessible Hmm .. if there were any invalid writes reported prior to this point, did you fix them? J |
|
From: Greg C. <gre...@ya...> - 2011-05-11 03:18:54
|
> > --max-stackframe=33571850424 > >What's this for? Kinda asking for trouble, unless you're sure > you need it. That was something Valgrind was suggesting originally. I removed it and now Valgrind generates complete reports showing invalid writes which answers your second question. Thanks Julian, Greg |