daan
60cfc623be
fix zero initialization of blocks under 8 bytes when padding check is active
2020-02-01 14:29:12 -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
4531367de2
fix padding check for aligned allocation; improve perf for small aligned allocations
2020-01-31 13:20:02 -08:00
daan
a7c69ccbea
fix stat accounting of segments with huge blocks
2020-01-30 06:25:42 -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
0316859e06
improve codegen for mi_free
2020-01-23 10:03:03 -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
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
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
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
d596f08569
fix thread_free read in assertion
2020-01-03 22:06:27 -08:00
daan
9629a0190f
fix eager commit on large pages (issue #182 )
2020-01-02 17:25:00 -08:00
daan
fc3e537bd4
improve double free detection with faster same page check
2019-12-28 15:28:13 -08:00
daan
e3391d9a53
stronger encoding of free lists using two keys per page
2019-12-28 00:57:42 -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 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
b052d3b731
enable double free and heap corruption detection in debug mode
2019-10-28 15:54:33 -07:00
daan
28d4ec4c5a
fix statistics accounting of huge pages
2019-10-28 13:14:14 -07:00
daan
25246070ae
fix double free check in secure = 4 mode; inline _mi_ptr_cookie
2019-10-19 08:34:18 -07:00
daan
2affdbbd2e
stronger secure mode when defining MI_SECURE=4: checks for double free, corrupted free list, and invalid pointer frees. Performance is impacted but not too much -- more perf testing is needed
2019-10-18 18:11:04 -07:00
daan
5de851a84d
update page_flags to have more portable definition
2019-10-17 16:48:16 -07:00
Johannes Schindelin
5bd8ea2e4f
Repeat mi_decl_allocator
in functions' definitions
...
Quite a few functions are declared with that attribute, and VS 2019
complains if the definition does not repeat it.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2019-10-17 20:43:18 +02:00
daan
a6a956c589
add back zero initialized re-allocation
2019-09-03 10:57:39 -07:00
daan
7a91368108
pass page to block_zero_init and extend to block_size
2019-09-03 10:11:24 -07:00
daan
739d11313c
fix commit zero on windows
2019-09-02 14:53:22 -07:00
daan
d1bd1644d5
support zero-initialized memory detection
2019-09-02 13:16:52 -07:00
daan
7ce9c02fd4
make cas weak use release memory order; improve free assembly
2019-08-26 08:20:26 -07:00
daan
5c7c106d62
strengthen some atomic operations for weak memory models
2019-08-26 08:11:58 -07:00
daan
e8664001f7
Use standard _Atomic declarations and clean up atomic operations
2019-08-25 22:59:12 -07:00
daan
23812cc0ac
do not keep a queue of huge pages and free them directly
2019-08-24 15:45:14 -07:00
daan
6c6fcad242
remove threadid from pages and keep page flags separate (cherry picked)
2019-08-23 21:42:24 -07:00
daan
61ebaaa403
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2019-08-19 08:10:11 -07:00
Daan Leijen
069c26dbab
fix small object size check in mi_segment_page_alloc
2019-08-16 18:40:30 -07:00
daan
d3375f2bac
fix assertion in mi_free_size
2019-08-12 13:50:41 -07:00
daan
7b105c4810
improve layout of page for x64
2019-08-11 10:31:00 -07:00
daan
737b05cc25
remove unused fields from OS thread local data
2019-08-10 17:50:27 -07:00
daan
ed785253bf
restructure the page flags to use explicit masks
2019-08-10 17:48:00 -07:00
daan
442bad9190
add good-fit for allowing larger blocks in smaller segments
2019-08-09 11:18:38 -07:00
daan
5e56b40fe6
improve page flags handling
2019-08-08 17:18:49 -07:00
daan
6596e970a5
move in_full and has_aligned into page threadid for a single test in mi_free
2019-08-08 15:23:18 -07:00
daan
189ad0f81d
small optimizations, use bitwise aligne
2019-07-23 15:00:13 -07:00