mjansson / rpmalloc

Public domain cross platform lock free thread caching 16-byte aligned memory allocator implemented in C
Other
2.15k stars 185 forks source link

Android dlopen failed due to TLS_MODEL attribute #332

Open natepaynefb opened 5 months ago

natepaynefb commented 5 months ago

I am trying to run my project on an Android device. It fails with output like this:

java.lang.UnsatisfiedLinkError: dlopen failed: TLS symbol "(null)" in dlopened "my_native_project.so" referenced from "my_native_project.so" using IE access model

The variable in question is the one with the TLS_MODEL macro in rpmalloc.c. If I remove the TLS_MODEL macro, then my project loads successfully and everything works as far as I can tell.

Note that I am not building rpmalloc directly. I am using the version of it that is included with the Tracy profiler. I was told that I should ask the maintainers of rpmalloc about it (https://github.com/wolfpld/tracy/issues/779).

What is your recommendation? Is it important for that variable to use tls_model("initial-exec")? If so, can you recommend a workaround to make the Android dynamic linker happy? Thanks.

mjansson commented 5 months ago

You can just change the define of TLS_MODEL to nothing, i.e #define TLS_MODEL