mimalloc icon indicating copy to clipboard operation
mimalloc copied to clipboard

fix recursion in TLS init on Android

Open Noxybot opened this issue 8 months ago • 1 comments

I'm hitting infinite recursion here when trying to run statically linked mimalloc from dev3 with MI_DEBUG_FULL=ON+ MI_CHECK_FULL=ON on Android. Attaching top of the callstack:

_mi_heap_main_get (mimalloc/src/init.c:272)
mi_prim_get_default_heap (mimalloc/include/mimalloc/prim.h:411)
mi_malloc (mimalloc/src/alloc.c:208)
__emutls_get_address (@__emutls_get_address:65)
mi_recurse_enter_prim (mimalloc/src/options.c:421)
mi_recurse_enter (mimalloc/src/options.c:434)
mi_vfprintf (mimalloc/src/options.c:463)
_mi_fprintf (mimalloc/src/options.c:472)
_mi_assert_fail (mimalloc/src/options.c:539)
_mi_page_map_register (mimalloc/src/page-map.c:284)
mi_arenas_page_alloc_fresh (mimalloc/src/arena.c:703)
mi_arenas_page_regular_alloc (mimalloc/src/arena.c:727)
_mi_arenas_page_alloc (mimalloc/src/arena.c:766)
mi_page_fresh_alloc (mimalloc/src/page.c:305)
mi_page_fresh (mimalloc/src/page.c:335)
mi_page_queue_find_free_ex (mimalloc/src/page.c:807)
mi_find_free_page (mimalloc/src/page.c:848)
mi_find_page (mimalloc/src/page.c:929)
_mi_malloc_generic (mimalloc/src/page.c:965)
_mi_page_malloc_zero (mimalloc/src/alloc.c:42)
mi_heap_malloc_small_zero (mimalloc/src/alloc.c:151)
_mi_heap_malloc_zero_ex (mimalloc/src/alloc.c:176)
_mi_heap_malloc_zero (mimalloc/src/alloc.c:200)
mi_heap_malloc (mimalloc/src/alloc.c:204)
mi_malloc (mimalloc/src/alloc.c:208)
__emutls_get_address (@__emutls_get_address:65)
mi_recurse_enter_prim (mimalloc/src/options.c:421)
mi_recurse_enter (mimalloc/src/options.c:434)
mi_vfprintf (mimalloc/src/options.c:463)
_mi_fprintf (mimalloc/src/options.c:472)
_mi_assert_fail (mimalloc/src/options.c:539)
_mi_page_map_register (mimalloc/src/page-map.c:284)
mi_arenas_page_alloc_fresh (mimalloc/src/arena.c:703)
mi_arenas_page_regular_alloc (mimalloc/src/arena.c:727)
_mi_arenas_page_alloc (mimalloc/src/arena.c:766)
mi_page_fresh_alloc (mimalloc/src/page.c:305)
mi_page_fresh (mimalloc/src/page.c:335)
mi_page_queue_find_free_ex (mimalloc/src/page.c:807)
mi_find_free_page (mimalloc/src/page.c:848)
mi_find_page (mimalloc/src/page.c:929)

Noxybot avatar Mar 31 '25 23:03 Noxybot

seems to not help after we past mi_preloading() (when mi_preloading=false)

Noxybot avatar Apr 01 '25 00:04 Noxybot