daan
c6df7a199c
experimental eager page commit option
2019-11-24 22:02:40 -08:00
Carlo Marcelo Arenas Belón
41ef691292
avoid deadlock with BSD systems that call malloc from the dynamic linker
...
extend the exception used for macOS to cover also OpenBSD (tested in 6.4+)
and DragonFlyBSD (tested in 5.6.2)
2019-11-24 10:00:39 -08:00
daan
24b768363e
bump version to 1.3 for further development
2019-11-22 09:28:48 -08:00
daan
50575b12c0
Merge branch 'dev' into dev-exp
2019-11-21 16:29:59 -08:00
daan
41caf6d0f8
set secure default to 0
2019-11-21 16:29:46 -08:00
daan
6568059cc6
merge from dev
2019-11-21 16:28:28 -08:00
daan
d55ab50a84
update version to 1.2
2019-11-21 16:10:04 -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
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
17ade3fca5
merge from dev
2019-11-13 17:52:20 -08:00
daan
314dcd59c2
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2019-11-13 17:23:54 -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
9b7a29c5da
Merge pull request #172 from aesophor/dev
...
Avoid the use of variable argument list function
2019-11-13 16:28:09 -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
Marco Wang
29919a938d
Avoid the use of variable argument list function
2019-11-13 13:19:21 +08:00
Daan Leijen
bdb8274819
change max_numa_node to max_numa_nodes option
2019-11-12 12:04:43 -08:00
daan
ef179a6377
avoid allocation at numa node detection on linux
2019-11-12 10:16:59 -08:00
daan
a0958b2da6
enable more reset delay slots
2019-11-11 17:06:16 -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
83a066fd2d
remove reset_decommits option
2019-11-11 09:46:02 -08:00
daan
181bef382c
merge dev-exp
2019-11-10 11:39:53 -08:00
daan
27f1a8b3d2
fix avg display; set secure default to 0`
2019-11-07 10:35:30 -08:00
daan
36090dee5c
Merge branch 'dev' into dev-exp
2019-11-07 10:34:06 -08:00
daan
31d11f64d5
fix secure free list extension where a non-empty initial free list was discarded
2019-11-07 10:33:45 -08:00
daan
378716c467
refactor and improve atomic bitmap usage
2019-11-07 10:26:52 -08:00
daan
b09282bc0d
change arena allocator to atomic bitmap as well
2019-11-06 22:49:01 -08:00
daan
00e19cad9a
refactor region code, split out atomic bitmap
2019-11-06 21:37:23 -08:00
daan
829fd872f4
initial delay slots
2019-11-04 11:48:41 -08:00
daan
c38af8f7c1
merge d1d65fbc: make max error messages configurable
2019-11-04 08:49:59 -08:00
daan
8afd06b248
use int64 for time (instead of double)
2019-11-04 08:44:40 -08:00
daan
d1d65fbca4
make max error messages configurable
2019-11-03 13:25:41 -08:00
daan
e320488791
add numa nodes to stats
2019-11-03 12:18:32 -08:00
daan
fd9d8c85ae
change numa support on linux to use getcpu
2019-11-02 11:55:03 -07:00
daan
2c12d7f223
optimized numa calls; better Linux support
2019-11-01 22:01:52 -07:00
daan
a6499be074
initial numa support for arenas
2019-11-01 19:53:07 -07:00
daan
d36d04b4a6
add arena for huge page management
2019-10-31 15:35:10 -07:00
daan
b052d3b731
enable double free and heap corruption detection in debug mode
2019-10-28 15:54:33 -07:00
daan
081e2d1eb6
fix statistics display
2019-10-28 13:43:42 -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
fdfa6ed260
fix warnings at high warning level in msvc
2019-10-17 16:56:57 -07:00
daan
5de851a84d
update page_flags to have more portable definition
2019-10-17 16:48:16 -07:00
daan
26c27fbf58
use uint8_t bit fields, and improve portability of page_flags type
2019-10-17 12:07:26 -07:00
Johannes Schindelin
559688ec64
Suppress warning about unnamed struct
...
This prevents MSVC complaining with
warning C4201: nonstandard extension used: nameless struct/union
The struct might seem unnecessary to the occasional reader (it did seem
so to this commit's author), but it is not! It is required to align the
fields to a boundary, which is verified by the test suite. Removing that
"unnecessary" `struct` results in this failure:
1: Test command: mimalloc-test-api
[...]
1: test: malloc-zero... mimalloc: assertion failed: at src/page.c:591, mi_page_init
1: assertion: "!mi_page_has_aligned(page)"
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2019-10-17 20:43:18 +02:00
Johannes Schindelin
e747a6f3a6
Use unsigned
for bit-field variables
...
It is actually non-standard to use `bool` with a bit-field quantifier,
and VS 2019 complains about this.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2019-10-17 20:43:18 +02:00
daan
f3a162f095
pick better umul_overflow variant based on size_t size
2019-10-17 09:52:10 -07:00
daan
4609537b8a
pick better umul_overflow variant based on intptr size
2019-10-17 09:47:12 -07:00
Daan Leijen
114d05cd76
bump to version 1.1
2019-10-07 09:54:23 -07:00
daan
60efb62155
make secure a build option only
2019-09-17 17:31:42 -07:00
daan
33f4ec4ac6
put new-delete overrides in separate header file
2019-09-15 19:19:00 -07:00
daan
6896408ab1
fix definition of mi_recalloc_tp
2019-09-11 20:49:18 -07:00
daan
24777f6a91
limit aligned allocation to power-of-two alignment
2019-09-11 17:49:28 -07:00
Daan Leijen
1909cfb346
refine mi_os_good_alloc_size and use it for huge pages (to ensure realloc is bounded as in #153
2019-09-10 13:26:51 -07:00
daan
ce81af1119
use mi_is_power_of_two when possible (pr #118 )
2019-09-09 08:12:50 -07:00
daan
23155c5d71
add recursion guard to deferred callback
2019-09-09 08:02:41 -07:00
daan
3bbc047ba6
reserve huge pages returns actual number of pages reserved
2019-09-04 12:26:02 -07:00
daan
6c43ae2bde
add later thread-done invokation; add mi_is_redirected call
2019-09-04 12:00:41 -07: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
d1bd1644d5
support zero-initialized memory detection
2019-09-02 13:16:52 -07:00
daan
d6e35ffd83
Merge branch 'dev' into dev-exp
2019-09-02 10:10:08 -07:00
daan
8ef8ddecc5
Merge branch 'master' into dev
2019-09-02 09:53:34 -07:00
Carlo Marcelo Arenas Belón
0e35ec3879
avoid deadlock with OpenBSD
2019-09-01 01:06:01 -07:00
daan
f35f643508
merge from dev
2019-08-29 09:52:22 -07:00
daan
7bf12c7b5f
make output function configurable; remove <stdio.h> from standard includes
2019-08-29 09:42:50 -07:00
daan
4819d3f78f
expose mi_stats_merge function
2019-08-29 09:01:00 -07:00
daan
d381fcd9fa
rename lazy to eager_commit_delay
2019-08-28 12:09:23 -07:00
daan
9af51506a6
track commit and is_large status more precisely
2019-08-28 11:58:30 -07:00
daan
23b5593af6
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2019-08-27 16:40:47 -07:00
David Carlier
b72a2d9659
macOS: anonymous page ID make it as env var.
2019-08-27 19:17:41 +01:00
daan
db8d443ae6
track more precisely if memory is fixed or committed
2019-08-26 22:45:26 -07:00
daan
f0a12699c2
remove atomic_iread
2019-08-26 12:42:25 -07:00
daan
a654732d99
merge from dev new atomics
2019-08-26 12:30:03 -07:00
daan
2c19388bcf
initialize mimalloc options at process load
2019-08-26 11:44:41 -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
23c35f4aba
merge from dev
2019-08-25 13:07:07 -07:00
daan
b86c851cca
put segment cache behind an option and disable by default
2019-08-25 12:35:14 -07:00
daan
a431d80fc3
better object sizes for large objects
2019-08-25 10:20:03 -07:00
daan
d3224d0bba
Merge branch 'dev' into dev-win
2019-08-23 21:42:32 -07:00
daan
6c6fcad242
remove threadid from pages and keep page flags separate (cherry picked)
2019-08-23 21:42:24 -07:00
daan
15552eba79
ensure volatile declaration for abandoned_next field
2019-08-23 21:39:27 -07:00
daan
acde83543f
remove threadid from pages and keep page flags separate
2019-08-23 14:08:00 -07:00
daan
b511309709
ensure volatile declaration for abandoned_next field
2019-08-23 13:44:43 -07:00
daan
71121a7457
Merge branch 'dev-win' into dev-exp
2019-08-21 11:12:25 -07:00
daan
e7bd8c5d14
merge with dev-win
2019-08-21 11:11:40 -07:00
Daan Leijen
eb25093b13
fix mi_cdecl for older clang versions
2019-08-21 09:40:57 -07:00
Daan Leijen
12257e5bc1
fix thread-id reset on page abandonment
2019-08-21 08:09:28 -07:00
Daan Leijen
cc6d14c55b
fix thread-id reset on page abandonment
2019-08-21 08:06:40 -07:00
daan
86d4ded831
Merge branch 'dev' into dev-exp
2019-08-20 08:27:46 -07:00
daan
a5071eb510
Merge branch 'dev' into dev-win
2019-08-20 07:50:03 -07:00
daan
03d994648a
better option interface: option_enable, option_disable, and option_set_enabled
2019-08-20 07:47:50 -07:00
daan
7a2e0df5ea
merge from dev
2019-08-20 07:37:46 -07:00
daan
d52e4039b6
remove the reset_discards option
2019-08-20 07:06:11 -07:00
daan
79487dbedf
add checks for right option order
2019-08-20 06:58:51 -07:00
daan
05631ebfc4
Merge branch 'dev' into dev-win
2019-08-19 21:23:04 -07:00
daan
13ef8a049b
allow larger large objects to better use segment space
2019-08-19 21:22:09 -07:00