summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKubo Kovac <kuko@fb.com>2017-05-22 11:51:55 -0400
committerBen Gamari <ben@smart-cactus.org>2017-05-22 12:40:35 -0400
commit83ee930fdd125d74939307ed3fa1bf6a2ba7fb36 (patch)
treef4805246b6192937440d84ddd1b1ac2cbd210668
parent0440af6abe592c2366d302d603664fe763ad0828 (diff)
downloadhaskell-83ee930fdd125d74939307ed3fa1bf6a2ba7fb36.tar.gz
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
-rw-r--r--rts/posix/OSMem.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/rts/posix/OSMem.c b/rts/posix/OSMem.c
index 330da21e1f..6ccd65ab16 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