diff options
author | Kubo Kovac <kuko@fb.com> | 2017-05-22 11:51:55 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-05-22 12:40:35 -0400 |
commit | 83ee930fdd125d74939307ed3fa1bf6a2ba7fb36 (patch) | |
tree | f4805246b6192937440d84ddd1b1ac2cbd210668 /rts | |
parent | 0440af6abe592c2366d302d603664fe763ad0828 (diff) | |
download | haskell-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
Diffstat (limited to 'rts')
-rw-r--r-- | rts/posix/OSMem.c | 4 |
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 |