summaryrefslogtreecommitdiff
path: root/doc/mimalloc-doc.h
diff options
context:
space:
mode:
authorDanny Lin <danny@kdrag0n.dev>2021-04-07 01:32:19 -0700
committerDanny Lin <danny@kdrag0n.dev>2021-04-07 01:59:47 -0700
commitad2fa2bf6f737ba5b8d86716dc96375e8aa56db7 (patch)
tree778caa0a62d428367d9683395bfdb56a651bee89 /doc/mimalloc-doc.h
parent985f313b35bc709aaa15d0f01867f857923c2ca6 (diff)
Fix thread ID getter on Android ARM/AArch64
Android's Bionic libc stores the thread ID in TLS slot 1 instead of 0 on 32-bit ARM and AArch64. Slot 0 contains a pointer to the ELF DTV (Dynamic Thread Vector) instead, which is constant for each loaded DSO. Because mimalloc uses the thread ID to determine whether operations are thread-local or cross-thread (atomic), all threads having the same ID causes internal data structures to get corrupted quickly when multiple threads are using the allocator: mimalloc: assertion failed: at "external/mimalloc/src/page.c":563, mi_page_extend_free assertion: "page->local_free == NULL" mimalloc: assertion failed: at "external/mimalloc/src/page.c":74, mi_page_is_valid_init assertion: "page->used <= page->capacity" mimalloc: assertion failed: at "external/mimalloc/src/page.c":100, mi_page_is_valid_init assertion: "page->used + free_count == page->capacity" mimalloc: assertion failed: at "external/mimalloc/src/page.c":74, mi_page_is_valid_init assertion: "page->used <= page->capacity" Add support for Android's alternate TLS layout to fix the crashes in multi-threaded use cases. Fixes #376.
Diffstat (limited to 'doc/mimalloc-doc.h')
0 files changed, 0 insertions, 0 deletions