[GHC] #3618: memory-leak detector in +RTS -DS fails to track
allocations in constructors
GHC
cvs-ghc at haskell.org
Wed Sep 15 08:58:11 EDT 2010
#3618: memory-leak detector in +RTS -DS fails to track allocations in constructors
---------------------------+------------------------------------------------
Reporter: guest | Type: bug
Status: new | Priority: normal
Milestone: _|_ | Component: Runtime System
Version: 6.12.1 RC1 | Keywords:
Testcase: | Blockedby:
Difficulty: Unknown | Os: Linux
Blocking: | Architecture: x86_64 (amd64)
Failure: None/Unknown |
---------------------------+------------------------------------------------
Changes (by simonmar):
* failure: => None/Unknown
Comment:
I got rid of the memory leak detector in the RTS recently:
{{{
Tue Aug 24 12:35:37 BST 2010 Simon Marlow <marlowsd at gmail.com>
* Remove the debugging memory allocator - valgrind does a better job
I got fed up with the constant bogus output from the debugging memory
allocator in RtsUtils.c. One problem is that we allocate memory in
constructors that then isn't tracked, because the debugging allocator
hasn't been initialised yet.
The bigger problem is that for a given piece of leaking memory it's
impossible to find out where it was allocated; however Valgrind gives
output like this:
==6967== 8 bytes in 1 blocks are still reachable in loss record 1 of 7
==6967== at 0x4C284A8: malloc (vg_replace_malloc.c:236)
==6967== by 0x4C28522: realloc (vg_replace_malloc.c:525)
==6967== by 0x6745E9: stgReallocBytes (RtsUtils.c:213)
==6967== by 0x68D812: setHeapAlloced (MBlock.c:91)
==6967== by 0x68D8E2: markHeapAlloced (MBlock.c:116)
==6967== by 0x68DB56: getMBlocks (MBlock.c:240)
==6967== by 0x684F55: alloc_mega_group (BlockAlloc.c:305)
==6967== by 0x6850C8: allocGroup (BlockAlloc.c:358)
==6967== by 0x69484F: allocNursery (Storage.c:390)
==6967== by 0x694ABD: allocNurseries (Storage.c:436)
==6967== by 0x6944F2: initStorage (Storage.c:217)
==6967== by 0x673E3C: hs_init (RtsStartup.c:160)
which tells us exactly what the leaking bit of memory is. So I don't
think we need our own debugging allocator.
M ./rts/RtsStartup.c -11
M ./rts/RtsUtils.c -146
}}}
I also added a section on debugging memory leaks to the wiki:
[wiki:Debugging/RuntimeSystem].
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3618#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list