[commit: ghc] master: fix a memory leak in osNumaMask (83ee930)

git at git.haskell.org git at git.haskell.org
Mon May 22 16:41:40 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/83ee930fdd125d74939307ed3fa1bf6a2ba7fb36/ghc

>---------------------------------------------------------------

commit 83ee930fdd125d74939307ed3fa1bf6a2ba7fb36
Author: Kubo Kovac <kuko at fb.com>
Date:   Mon May 22 11:51:55 2017 -0400

    fix a memory leak in osNumaMask
    
    got an error when using asan:
    ```
    ==1866689==ERROR: LeakSanitizer: detected memory leaks
    
    Direct leak of 16 byte(s) in 1 object(s) allocated from:
        #0 0x10640568 in malloc ??:?
        #1 0x154d867e in numa_bitmask_alloc .../numactl-2.0.8/libnuma_nosymve r.c:204
        #2 0x154d867e in numa_allocate_nodemask .../numactl-2.0.8/libnuma_nosymve r.c:724
        #3 0x154d867e in numa_get_mems_allowed .../numactl-2.0.8/libnuma_nosymve r.c:1141
        #4 0x10b54a45 in osNumaMask ...ghc-8.0.2/rts/posix/OSMem.c:59 8
    ```
    
    Test Plan: compile, validate
    
    Reviewers: simonmar, niteria, austin, bgamari, erikd
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, thomie
    
    Differential Revision: https://phabricator.haskell.org/D3537


>---------------------------------------------------------------

83ee930fdd125d74939307ed3fa1bf6a2ba7fb36
 rts/posix/OSMem.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/rts/posix/OSMem.c b/rts/posix/OSMem.c
index 330da21..6ccd65a 100644
--- a/rts/posix/OSMem.c
+++ b/rts/posix/OSMem.c
@@ -601,7 +601,9 @@ uint64_t osNumaMask(void)
     if (osNumaNodes() > sizeof(StgWord)*8) {
         barf("osNumaMask: too many NUMA nodes (%d)", osNumaNodes());
     }
-    return mask->maskp[0];
+    uint64_t r = mask->maskp[0];
+    numa_bitmask_free(mask);
+    return r;
 #else
     return 1;
 #endif



More information about the ghc-commits mailing list