854 Commits

Author SHA1 Message Date
daan
70be91d6b8 reduce tsan warning by ensuring a require edge; issue #130 2020-07-22 15:28:14 -07:00
daan
8aa18d3661 fix TSAN warning for statistics maximum, issue #130 2020-07-22 14:16:18 -07:00
daan
2e1b4f512d make max update in the stats atomic 2020-07-22 13:45:04 -07:00
daan
341048f61e avoid atomic operations on statistics if zero 2020-07-22 11:08:16 -07:00
David Carlier
2254e20d4c some apis are available on Illumos which are not available on stock Solaris
thus availability evelavated from cflags. discard some sporadically for large pages
support mainly.
2020-07-22 18:26:32 +01:00
Daan
532447fb33
Merge pull request #272 from devnexen/illumos_build
illumos support/build fix and large page support
2020-07-21 18:46:28 -07:00
Daan
e5ede9c723
Merge pull request #264 from DerVogel2020/dev
use stored pointer #257
2020-07-21 18:35:51 -07:00
Daan
56b58a8021
Merge pull request #267 from devnexen/haiku_support
haiku support.
2020-07-21 18:32:40 -07:00
daan
8769082d63 add pointer validity check in debug mode for mi_usable_size/mi_realloc/mi_expand. Issue #269 2020-07-20 14:33:03 -07:00
Daan
457fcbd9d5
Merge pull request #274 from Tyler-IN/agnostic-posix-musl-support
Posix / Musl Compatibility
2020-07-20 11:34:58 -07:00
daan
5f51c97fbd override aligned_alloc always if using C compilation (issue #276) 2020-07-20 11:27:42 -07:00
daan
892ec12611 Support Windows Vista and XP for NUMA aware alloction (issue #277) 2020-07-20 11:10:45 -07:00
David Carlier
0c550d1626 illumos support/build fix and large page support 2020-07-10 03:26:14 +01:00
Tyler Young
b9a7f5cfae
fix mman.h ref 2020-07-09 10:58:47 -04:00
David Carlier
7e48eb033c haiku support.
TLS unsupported thus disabled.
2020-06-28 13:53:45 +00:00
Wanja Vogel
2599512e8f use stored pointer #257 2020-06-18 18:20:26 +02:00
daan
4ecce78d66 Merge branch 'master' into dev 2020-06-17 19:28:15 -07:00
daan
5a6d9ba807 fix handling of failing to allocate heap metadata on thread creation, issue #257 2020-06-17 19:07:32 -07:00
daan
32b3608581 simplify initial main tld declaration 2020-06-17 13:12:05 -07:00
Wanja Vogel
d5475a58a1 fix: avoid warning
warning C26451: Arithmetic overflow: Using operator '+' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '+' to avoid overflow (io.2).
2020-06-10 07:47:50 +02:00
Haneef Mubarak
429025634e
resolve #201 with a platform-selective REP MOVSB implementation 2020-05-26 16:04:28 -07:00
daan
66048cb6cc fix return value for page_unreset 2020-05-19 13:31:24 -07:00
daan
6f73cc8b1d Merge branch 'master' into dev 2020-05-19 10:41:08 -07:00
daan
a09a64e29b add extra check in mi_page_unreset to not unreset for huge OS pages 2020-05-19 10:40:46 -07:00
Daan
0ed478089e
Merge pull request #242 from devnexen/ios_build_fix
IOS build fix, large pages unsupported.
2020-05-19 10:21:32 -07:00
daan
a7d2bc8ad6 edit warning messages to be more consistent 2020-05-19 10:16:28 -07:00
daan
74986c1dd1 weaken aligmenment assertion (issue #245) 2020-05-19 09:56:37 -07:00
daan
a52b38342d Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2020-05-19 09:55:08 -07:00
Daan Leijen
c9ffe30513 weaken alignment requirement to not need to be a multiple of sizeof(void*); see #246 2020-05-18 10:17:58 -07:00
Daan Leijen
bf6b781e40 fix semicolon (#247) 2020-05-18 10:08:18 -07:00
David Carlier
0ea4e3f279 IOS build fix, large pages unsupported. 2020-05-07 20:09:16 +01:00
daan
967513d536 add extra checks if unreset (commit) succeeds 2020-05-06 11:35:35 -07:00
daan
4f020e5da4 put a bound on the environment search 2020-05-05 20:19:20 -07:00
daan
45974efdb7 use environ on posix systems to read environment variables before the C runtime is initialized (issue #241) 2020-05-05 19:37:50 -07:00
daan
29cb8f369a slight cleanup of f10ba4fa, #239 2020-05-05 10:24:16 -07:00
Daan
f10ba4fa44
Merge pull request #239 from asl/oom-collect
In OOM case try to force collect memory and retry the allocation
2020-05-05 10:16:28 -07:00
daan
a278db940b improve thread-id check for thread local FLS callbacks on Windows with static linking 2020-05-05 10:10:46 -07:00
daan
7c24edfeb0 add thread-id check for thread local FLS callbacks on Windows with static linking; found by @jasongibson 2020-05-04 14:31:32 -07:00
daan
9c0da9776d fix assertion for huge block size 2020-05-03 11:43:57 -07:00
daan
097c007ba3 reduce page retire cycles based on object size 2020-05-02 00:19:20 -07:00
Daan
81bd1b70b0
Merge pull request #238 from asl/gcc-6-aligned-dealloc
Fix override condition for sized dealloc with gcc 6
2020-05-01 14:16:20 -07:00
daan
5cfdc39ff1 remove on-demand page commit option 2020-04-30 18:23:33 -07:00
daan
0af9dd6fd2 fix initialization of union padding; issue found through valgrind by @jasongibson 2020-04-30 17:40:00 -07:00
Anton Korobeynikov
fdd1cd821a In OOM case try to force collect memory and retry the allocation. 2020-04-29 02:10:11 +03:00
daan
9a33f23b5f fix MI_SHOW_ERRORS on msvc 2020-04-28 11:11:23 -07:00
daan
8f5710abcc Merge branch 'master' into dev 2020-04-28 11:07:55 -07:00
Daan
07e80aebb7
Merge branch 'dev' into xmalloc 2020-04-28 10:53:34 -07:00
Daan
9ba16f2df9
Merge pull request #232 from asl/cmake-err-warn-default
Add cmake option to specify whether warnings / errors are enabled by default
2020-04-28 10:51:30 -07:00
Anton Korobeynikov
0b440d9543 Apparently gcc 6 defines __cpp_aligned_new in C++14 mode, however no std::align_val_t is available there
for obvious reasons
2020-04-28 19:09:54 +03:00
Anton Korobeynikov
079b886feb Add cmake option to specify whether warnings / errors are enabled by default.
Currently warnings / errors are enabled by default in debug build.
Otherwise they could be enabled only via environmental variable or
API option call. Add possibility to specify the default during the
build time. This simplifies e.g. integration of the library into
bigger projects as no source changes would be required.
2020-04-28 16:44:44 +03:00
Anton Korobeynikov
2f1fc1df5c Add xmalloc()-like functionality.
xmalloc is a non-standard extension forcing malloc() to
abort should the memory allocation failed instead of returning a
null pointer. Such functionality is quite useful as it provides one
single point of error handling if the caller of malloc() does not
check the result (as it often does!) and segfault is ocurring somewhere
else. If more fine-grained control is necessary one could register a custom
error handler, however, this might not be an option while interposing.
2020-04-28 16:38:47 +03:00
Nicolas
f40aaad876
Fix typo in comment
Usuelly->Usually
2020-04-24 23:20:28 -03:00
Daan Leijen
798cd6647d use line-buffered output for statistics (issue #235 2020-04-24 07:43:21 -07:00
daan
a5bf45cd1e add commit check on page reclaim 2020-04-23 21:01:06 -07:00
daan
74a01d05af check commit/protect if eager_commit is disabled 2020-04-23 20:48:55 -07:00
daan
7123efb397 pass full commit flag to free, possible fix for issue #218 2020-04-23 20:19:48 -07:00
daan
0d3c141243 add check for if commit fails in segment allocation 2020-04-23 17:28:44 -07:00
Anton Korobeynikov
fe976caaea Provide zone_size function: free() uses it to find the zone pointer belongs to in order to call the corresponding zone_free function 2020-04-21 15:10:49 +03:00
Anton Korobeynikov
07d72f4fba Do not forget to include malloc zone implementation in the static object 2020-04-21 15:08:27 +03:00
Anton Korobeynikov
4a0c53ba5a Fix the prototype of malloc_size. Otherwise we'll end with invalid
redeclaration if malloc/malloc.h is pulled on Darwin
2020-04-21 15:07:32 +03:00
daan
e31298bdc3 fix compiler warning in secure mode 2020-04-20 18:04:09 -07:00
daan
093db6af24 possible fix for memory instability on Win7 (#230) 2020-04-20 09:33:19 -07:00
daan
77acf5a868 more careful overriding of aligned_alloc for compilation on Conda (#219) 2020-04-20 09:27:43 -07:00
daan
211038c4e5 (possible) fix for overriding of aligned_alloc on systems that define it as static inline. issue #219 2020-04-15 11:55:54 -07:00
Daan
ea558cadba
Merge pull request #227 from devnexen/android_build_fix
Android build fix proposal.
2020-04-15 11:23:04 -07:00
daan
1116c0df2e fix strnlen do not search beyond n characters, issue #228 2020-04-14 17:42:30 -07:00
David Carlier
6c5039bad1 Android build fix proposal.
malloc_usable_size has different signature on this platform.
thread and real time apis are part of bionic.
2020-04-14 14:20:56 +01:00
daan
69a0846478 add MI_PADDING flag to cmake to supress use of padding in debug mode 2020-04-07 10:01:18 -07:00
daan
afc4f79a69 fix for ensuring heap initialization with static linking on windows on huge allocations (issues #221) 2020-04-06 12:15:12 -07:00
daan
84b9b8878e possible fix for issue #221 2020-04-06 11:49:32 -07:00
daan
34d3b8c47f add version check for mingw compilation and add FlsAlloc definitions if required 2020-04-06 11:25:25 -07:00
daan
0a3e5bb699 further fixes to compile on mingw without warnings (issue #217) 2020-04-06 10:56:53 -07:00
daan
0f3bd05fd5 fix mingw compilation for numa awareness (issue #217) 2020-04-06 10:03:30 -07:00
Daan
64e8cfa942
Merge pull request #216 from devnexen/dev_32bits_warning_fixes
32 bits build fix proposal.
2020-04-06 08:09:06 -07:00
Daan
1ece3ff6aa
Merge pull request #220 from cormacrelf/usable_size
Don't call mi_page_usable_size_of with an aligned pointer
2020-04-06 08:05:34 -07:00
Cormac Relf
0047b271f7 Call mi_page_usable_size_of with unaligned block rather than start of aligned memory 2020-04-06 22:50:21 +10:00
David Carlier
c0b06949cb 32 bits build fix proposal. 2020-03-20 17:38:14 +00:00
daan
7745dde8d2 allow retirement for all object sizes (issue #212) 2020-03-16 15:31:37 -07:00
daan
72f758c433 fix issue #210 where multiple static instances of mimalloc in DLL's compete for the same virtual memory area 2020-03-06 16:43:39 -08:00
daan
5bc276c23b fix issue #208: dynamic unloading of DLL with statically linked mimalloc 2020-03-06 16:24:51 -08:00
daan
ab202fbe73 never free the main heap structures; issues #207 2020-03-06 15:53:07 -08:00
daan
ec61224db0 fix padding issue with zero sized allocation (issue #209) 2020-02-18 20:05:30 -08:00
daan
baf08e8d54 fix size check on overflow when padding is enabled in debug mode 2020-02-17 09:59:34 -08:00
daan
f2ac272baa strengthen alignment check for memalign and aligned_alloc 2020-02-17 09:59:11 -08:00
daan
16ebb70e4c strengthen aligment guarantee (issue #206) (reverse commit 4531367) 2020-02-17 09:15:48 -08:00
daan
3e198cc87d fix too strict assertion (issue #204) 2020-02-14 11:11:57 -08:00
daan
e981e9227e ensure thread delayed freeing is correct during heap_absorb; #204 2020-02-13 13:12:19 -08:00
daan
af37302e83 add assertions 2020-02-13 12:27:06 -08:00
daan
8a2a52843d delete all thread owned heaps when a thread is terminated (issue #202) 2020-02-13 12:15:23 -08:00
daan
946a71c4a9 fix issue #204 (and #205) by doing thread delayed free after absorbing the pages 2020-02-13 11:37:48 -08:00
daan
f42b8526d0 fix wrong __declspec(restrict) and __attribute__((malloc)) attributes on reallocation functions 2020-02-13 10:36:39 -08:00
daan
9749c83ca0 fix build with debug and secure both enabled, issue #203 2020-02-13 09:16:41 -08:00
daan
afe434463a add comments on overriding in macOSX 2020-02-09 18:26:50 -08:00
daan
9062f39764 enable interpose separate from zones on macOS 2020-02-08 20:08:52 -08:00
daan
e676062103 update mac zone code 2020-02-05 17:40:13 -08:00
daan
d516c9f99c Merge branch 'dev-exp' into dev-exp-tls 2020-02-02 22:02:16 -08:00
daan
feb0699bcb fix aligment check when padding is enabled 2020-02-02 22:01:04 -08:00
daan
f3c47c7c91 improved malloc zone handling on macOSX (not working yet) 2020-02-02 21:03:09 -08:00
daan
757dcc8411 extend interpose for macOSX 2020-02-02 19:07:26 -08:00
daan
f0dc6e7e42 add extra alignment test 2020-02-02 16:21:06 -08:00
daan
ff75c32d27 Merge branch 'dev-exp' into dev-exp-tls 2020-02-02 15:54:51 -08:00
daan
7d3d37e4dd Merge branch 'dev' into dev-exp 2020-02-02 15:54:41 -08:00
daan
865965b8c0 fix warnings under clang-cl 2020-02-02 15:43:13 -08:00
daan
07fbe4f80f fixes for dragonfly 2020-02-02 14:31:28 -08:00
daan
8bc20631e4 fixes for freeBSD 2020-02-02 13:25:26 -08:00
daan
2e56bf55c4 Merge branch 'dev' into dev-exp-tls 2020-02-02 13:12:26 -08:00
daan
d2db9f1fc2 update thread local storage 2020-02-02 13:12:22 -08:00
daan
4a5f3592c0 fix build warning on FreeBSD 2020-02-02 09:25:39 -08:00
daan
bb64634e4e Merge branch 'dev-exp' into dev-exp-tls 2020-02-01 17:48:57 -08:00
daan
3f17ac287c add 'nodiscard' attribute to mimalloc interface 2020-02-01 17:29:30 -08:00
daan
0989562c2d add initial fast tls for macOSX 2020-02-01 16:57:00 -08:00
daan
10009490b8 Merge branch 'dev-exp' into dev-exp-tls 2020-02-01 14:30:34 -08:00
daan
60cfc623be fix zero initialization of blocks under 8 bytes when padding check is active 2020-02-01 14:29:12 -08:00
daan
a169cf0e3f merge dev-exp; add pthread TLS support for macOSX 2020-02-01 14:10:10 -08:00
daan
edff9d4fbb merge from dev-win (padding) 2020-02-01 12:32:59 -08:00
daan
aa68b8cbc7 improve encoding of padding canary and buffer overflow detection 2020-02-01 12:16:37 -08:00
daan
40f1e1e07b byte-precise heap block overflow checking with encoded padding 2020-01-31 23:39:51 -08:00
daan
68112a2751 better padding implementation, more precise statistics 2020-01-31 20:34:24 -08:00
daan
8422ab125d improve messages; fix reset size calculation on large pages 2020-01-31 17:28:26 -08:00
daan
724602b78b enable page-reset by default 2020-01-31 17:27:45 -08:00
daan
4531367de2 fix padding check for aligned allocation; improve perf for small aligned allocations 2020-01-31 13:20:02 -08:00
daan
f820fae858 merge from dev; add retired collect on abandon 2020-01-30 07:24:35 -08:00
daan
a7c69ccbea fix stat accounting of segments with huge blocks 2020-01-30 06:25:42 -08:00
daan
ed1c8a203a improve performance with tls recursion counter 2020-01-29 23:08:52 -08:00
daan
03b363a1c2 first working tls on macOS using interpose; still slow 2020-01-29 22:46:44 -08:00
daan
7ff3ec2bf7 use EFAULT for buffer overflow and call abort in debug mode (as well as secure mode) 2020-01-29 17:25:40 -08:00
daan
5d212d688f add MI_PADDING build option to add padding to each block to detect heap block overflows 2020-01-29 17:10:57 -08:00
daan
b3dae128de Merge branch 'dev' into dev-exp 2020-01-27 23:15:37 -08:00
daan
9c166d88f0 increase retire page size 2020-01-27 23:15:24 -08:00
daan
42586de104 fix is_zero setting in regions 2020-01-27 23:13:57 -08:00
daan
e628fc7067 cleanup reclaim logic 2020-01-26 12:39:11 -08:00
daan
d4927adddc add extra assertion that all segments are free on thread termination 2020-01-25 14:30:02 -08:00
daan
394b796ea0 fix over-eager page reset in segment reclamation 2020-01-25 13:43:56 -08:00
daan
4faf412f53 move 'memory.c' to 'region.c' 2020-01-25 13:28:49 -08:00
daan
7785139201 fix warning on gcc on attribute ignore in templates 2020-01-25 13:28:24 -08:00
daan
62b8fb26b1 fix freeing of segments on forced reclaim 2020-01-25 13:27:47 -08:00
daan
cb433d272a Merge branch 'dev' into dev-exp-abandon 2020-01-25 13:03:06 -08:00
daan
f4630d43a7 allow reset on large pages; check commit status before reset 2020-01-25 12:49:14 -08:00
daan
5e32d00aab add visit count to abandoned to limit list length 2020-01-25 12:26:08 -08:00
daan
3ec691cfb4 Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2020-01-25 11:20:17 -08:00
David Carlier
2b667bd3ae enable arc4random abi under apple 2020-01-25 14:47:09 +00:00
daan
072ceb2efe Merge branch 'dev' into dev-exp-abandon 2020-01-24 20:20:55 -08:00
daan
ecece57284 fix bug in committed check in arena allocation 2020-01-24 20:20:43 -08:00
daan
47300eeda3 avoid memset 2020-01-24 20:17:33 -08:00
daan
b31bc52618 add cache alignment directives for contended variables 2020-01-24 19:02:13 -08:00
daan
e070eba112 fix tagged null encoding, search segment cache before reclaim 2020-01-24 16:31:18 -08:00
daan
9a400ecce9 Merge branch 'dev' into dev-exp-abandon 2020-01-24 15:48:34 -08:00
daan
4ae51096ec add warning on region exhaustion 2020-01-24 15:45:03 -08:00
daan
28c14d99c3 clean up comments 2020-01-24 11:03:12 -08:00
daan
e68293741e fix assertion, add check for page committed before doing reset 2020-01-23 21:44:32 -08:00
daan
58fdcbb0cd fix bug in collect where has_page was not set on free pages 2020-01-23 21:37:14 -08:00
daan
4a2a0c2d50 initial abandon based on fine-grained reclamation 2020-01-23 19:50:35 -08:00
daan
12701b1aac do not reclaim segments on collect 2020-01-23 15:48:51 -08:00
daan
76e727f7d1 fix assertion on page destroy 2020-01-23 15:39:38 -08:00
daan
0316859e06 improve codegen for mi_free 2020-01-23 10:03:03 -08:00
daan
66818bf632 use atomic yield on delayed-freeing; clarify code 2020-01-23 09:57:55 -08:00
daan
3bbbe6c686 enable atomic yield when delayed_freeing is encountered 2020-01-22 20:12:42 -08:00
daan
0193a15f7e nicer message on huge OS page reservation 2020-01-22 19:46:43 -08:00
daan
e3b16fe4ef reduce type casts in atomic operations 2020-01-22 19:44:54 -08:00
daan
3957b2fd28 add mi_new_realloc(n) to support C++ style reallocation that raises std::bad_alloc on out-of-memory 2020-01-20 15:41:56 -08:00
daan
b77be05e40 only collect retired at fresh page allocation 2020-01-20 12:14:34 -08:00
daan
e8d7c80c74 fix build warnings on linux 2020-01-19 17:33:36 -08:00
daan
41e717c2e0 fix assertion in mi_block_zero_init (issue #194) 2020-01-18 20:30:12 -08:00
daan
dc58388968 Add ability to register custom error function called on various error conditions; including ENOMEM 2020-01-17 19:59:55 -08:00
daan
6dd636d82d improve STL allocator using mi_new_n and removing unused parameter names; follow up from pr #193 and #188 2020-01-17 15:41:52 -08:00
daan
6b7356a10a make mimalloc compile with the highest warning level on msvc 2020-01-16 18:12:01 -08:00
daan
c6037ac8f2 fix assertion index 2020-01-16 16:56:02 -08:00
daan
3f8b8b7a55 initialize thread_delayed_free field atomically 2020-01-16 16:45:34 -08:00
daan
da709bcf11 test for gcc version for aligned new/delete overrides 2020-01-16 16:30:44 -08:00
daan
7a98a461a3 fix type of bitmap field to avoid C++ error on older gcc 2020-01-16 16:21:59 -08:00
daan
7a9502973d rearrange STL allocator code: remove pragma, ifdef for C++11 2020-01-16 15:57:11 -08:00
daan
4e91eab8fc specialize mi_mallocn for count=1 2020-01-16 14:12:37 -08:00
daan
8d8f355ed0 add option to reset eagerly when a segment is abandoned 2020-01-16 11:25:02 -08:00
daan
b8072aaacb fix debug build 2020-01-16 03:54:51 -08:00
daan
9629d73188 fix options 2020-01-15 18:07:29 -08:00
daan
7a1e86fc20 merge from dev 2020-01-15 18:03:37 -08:00
daan
ad32eb1dfb eager collect on page reclamation 2020-01-15 17:57:19 -08:00
daan
0099707af9 use delayed free for all pages; reduce size of the page structure for improved address calculation 2020-01-15 17:19:01 -08:00
daan
c9b5ac80b3 update page reset queue to just do delayed page resets 2020-01-15 12:00:44 -08:00
daan
783e3377f7 add output argument to stat printing 2020-01-15 10:53:54 -08:00
daan
0956a05bf6 add argument pointer to the register deferred free callback 2020-01-15 10:21:32 -08:00
daan
f92a2a7264 add argument pointer to the register output routine 2020-01-15 10:18:32 -08:00
daan
941c55ee42 wip: first implementation of page free list on segments for effecient delayed page reset 2020-01-14 21:47:18 -08:00
daan
65f4f5144b fix out-of-bounds error in huge OS page bitmap 2020-01-13 17:06:25 -08:00
daan
5f61a9e896 add mprotect error when the mmap limit might be reached in secure mode (see issue #77) 2020-01-09 17:52:28 -08:00
daan
8f75444e7a fix windows debug build at MI_DEBUG=2 2020-01-08 23:21:32 -08:00
daan
12ef2816ed fix bug exposed by commit 59fa286 where reclaimed pages could be stuck to NEVER_DELAYED 2020-01-08 19:00:03 -08:00
daan
683d8998d4 fix potential A-B-A problem with segment abandonment; noticed by Manual Poeter and Sam Gross 2020-01-08 17:45:38 -08:00
daan
50b3f6d7ae fix assertion 2020-01-08 16:33:45 -08:00
daan
d4ab0ff08c fix timeout on huge page reservation if set to 0 2020-01-07 14:15:37 -08:00
daan
4223caac0f on Linux dynamically detect if getrandom is supported and fall back to /dev/urandom if needed 2020-01-06 22:08:21 -08:00
daan
d8d69c2c94 disable MAP_NORESERVE on huge pages 2020-01-05 22:07:16 -08:00
daan
45582d1fb5 revert a2a9230 (remove empty page removal on search): this is not generally valid when concurrent frees do not always add to thread_delayed_free. 2020-01-05 13:58:49 -08:00
daan
59fa286294 fix bug where continue would wrongly exit the do-while loop for delayed freeing 2020-01-05 13:52:07 -08:00
daan
a2a9230ad6 remove empty page removal on page search (no longer needed with retired collection and delayed freeing) 2020-01-03 22:52:52 -08:00
daan
d596f08569 fix thread_free read in assertion 2020-01-03 22:06:27 -08:00
daan
2b108c8748 increase retire expiration to 4 2020-01-03 21:39:18 -08:00
daan
eeb623e6af increase retire limit, collect retired pages 2020-01-03 17:06:41 -08:00
daan
9629a0190f fix eager commit on large pages (issue #182) 2020-01-02 17:25:00 -08:00
daan
1b5a08cd25 remove unused parameter in check double free 2020-01-02 17:24:32 -08:00
daan
384808e340 Merge branch 'dev-random' into dev 2019-12-28 16:19:45 -08:00
daan
fc3e537bd4 improve double free detection with faster same page check 2019-12-28 15:28:13 -08:00
daan
77134e1ad0 update free list encoding to stronger formula with addition last 2019-12-28 15:17:49 -08:00
daan
e3391d9a53 stronger encoding of free lists using two keys per page 2019-12-28 00:57:42 -08:00
daan
ce02986d56 variable renaming 2019-12-27 22:30:23 -08:00
daan
6f0b35d513 merge from master 2019-12-24 10:44:49 -08:00
daan
e05a1edc03 fix large OS page size on Linux (issue #184, due to fix for #179) 2019-12-24 10:32:44 -08:00
daan
ba87a39d9f updated random cookie generation using OS primitives and chacha20 2019-12-22 19:37:49 -08:00
daan
f9b942d80d fix compilation of region descriptor on 32-bit 2019-12-22 17:08:46 -08:00
Daan Leijen
e31e609414 add preload check in option initialization (issues #179) 2019-12-01 01:03:39 -08:00
daan
36d168a2d9 add preload check to options initialization 2019-12-01 00:03:35 -08:00
daan
a407f35c64 add arena.c into the static override object 2019-12-01 00:01:14 -08:00
daan
1d998af854 clean up options; make secure work with eager_page_commit 2019-11-25 10:47:17 -08:00
daan
1643273357 fix unix bug in decommit size 2019-11-25 10:11:29 -08:00
daan
c6df7a199c experimental eager page commit option 2019-11-24 22:02:40 -08:00
daan
4452431b6c reenable segment cache and fix initial segment commit 2019-11-24 15:25:19 -08:00
daan
727d33b96f more precise memory reset 2019-11-24 14:40:47 -08:00
daan
4a0d35afd0 improve secure guard page allocation to work with non-eager commit 2019-11-23 11:59:19 -08:00
daan
6568059cc6 merge from dev 2019-11-21 16:28:28 -08:00
daan
74dbfc30be improved security by encoding NULL values; double free mitigation on by default; more precise free list corruption detection 2019-11-21 15:21:23 -08:00
daan
1674d551ff add verbose message with secure build level 2019-11-20 20:46:13 -08:00
Daan Leijen
049dbf41ba fix commit bits for huge page allocations 2019-11-20 15:44:07 -08:00
Daan Leijen
211f1aa519 remove reset delay slots; add reset tracking per page and segment 2019-11-20 14:55:12 -08:00
Daan Leijen
30e2c54adb remove delayed reset option (for now) 2019-11-20 14:13:02 -08:00
Daan Leijen
56b9fac4bf merge from dev 2019-11-20 13:31:04 -08:00
Daan Leijen
4d4a2885f5 use atomic read/write on the page->heap field where concurrent interaction is possible 2019-11-20 13:19:17 -08:00
daan
17ade3fca5 merge from dev 2019-11-13 17:52:20 -08:00
daan
a4ed63d127 Adresses pr #165 and issue #164 by @colesbury:
On Mac OS, the thread-local _mi_default_heap may get reset before
_mi_thread_done is called, leaking the default heap on non-main threads.

Now the current default heap is also stored in mi_pthread_key (or mi_fls_key
on Windows). The _mi_thread_done function is called with this value.
2019-11-13 17:22:03 -08:00
Daan Leijen
d01ed42bcb replace max_numa_nodes by use_numa_nodes (to help with wrong detection of numa nodes on WSL for example) 2019-11-13 13:35:50 -08:00
Daan Leijen
bdb8274819 change max_numa_node to max_numa_nodes option 2019-11-12 12:04:43 -08:00
daan
d4f54dcf30 remove numaif dependency on linux 2019-11-12 10:37:15 -08:00
daan
867d78f877 reserve huge OS pages earlier on at process_init 2019-11-12 10:19:52 -08:00
daan
af746ca4c1 inline bitmap_mask 2019-11-12 10:17:39 -08:00
daan
ef179a6377 avoid allocation at numa node detection on linux 2019-11-12 10:16:59 -08:00
daan
165ee45845 initialize delay slots for the main thread 2019-11-11 17:31:48 -08:00
daan
a0958b2da6 enable more reset delay slots 2019-11-11 17:06:16 -08:00
daan
5e6754f3f7 track commit status per block in a region 2019-11-11 15:45:31 -08:00
daan
db3f1c4bfa add commit info to arenas 2019-11-11 15:26:11 -08:00
daan
741a80256d merge from dev-exp 2019-11-11 14:51:16 -08:00
daan
2bb058bd25 remove cache_reset parameter 2019-11-11 14:44:32 -08:00
daan
534e1e39ef allow allocation in committed regions even if not requested 2019-11-11 14:42:29 -08:00
daan
93a6463383 only allow commit delay for small and medium objects 2019-11-11 14:16:45 -08:00
daan
83a066fd2d remove reset_decommits option 2019-11-11 09:46:02 -08:00
daan
21bbb1be87 fix warnings 2019-11-10 12:36:55 -08:00
daan
181bef382c merge dev-exp 2019-11-10 11:39:53 -08:00
Daan Leijen
9f08ddd0d0 refactor regions; add commit tracking on a segment basis 2019-11-09 19:30:53 -08:00
Daan Leijen
7b72a4cd50 fix region suitable bug 2019-11-08 11:55:43 -08:00
daan
6ccfb5a93e merge from dev 2019-11-07 11:00:50 -08:00
daan
9b65388807 fix space leak in secure mode where a non-null free list would be discarded 2019-11-07 10:59:19 -08:00
daan
27f1a8b3d2 fix avg display; set secure default to 0` 2019-11-07 10:35:30 -08:00