Не удалось запустить сборку HWASan на Android: ошибка dlopen: символ TLS «(null)»Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Не удалось запустить сборку HWASan на Android: ошибка dlopen: символ TLS «(null)»

Сообщение Anonymous »

Я выполнил инструкции на странице https://developer.android.com/ndk/guides/hwasan, чтобы включить HWASan для своего приложения:
  • Я перешел на использование общей библиотеки libc++
  • Я добавил target_compile_options(${TARGET} PUBLIC -fsanitize=hwaddress -fno-omit-frame-pointer) target_link_options(${TARGET} PUBLIC -fsanitize=hwaddress) в CMakeLists.txt.
  • Я собираю только для Arm64-v8a
  • Я добавил useLegacyPackaging = true
  • Я добавил отладку true
  • Я добавил app/src/main/resources/lib/wrap.sh
Несколько проверок работоспособности, чтобы убедиться, что я правильно включил HWAsan:< /p>
  • Без строк target_compile_options и target_link_options приложение работает правильно.
  • APK содержит libc++_shared.so, показывающий, что я правильно включил общий доступ к libc++
  • Апк-файл содержит /lib/wrap.sh
  • Приложение использует один .so: libfoobar.so и readelf -d libfoobar.so | grep NEEDED выводит:

Код: Выделить всё

0x0000000000000001 (NEEDED)             Shared library: [libclang_rt.hwasan-aarch64-android.so]
0x0000000000000001 (NEEDED)             Shared library: [libandroid.so]
0x0000000000000001 (NEEDED)             Shared library: [liblog.so]
0x0000000000000001 (NEEDED)             Shared library: [libEGL.so]
0x0000000000000001 (NEEDED)             Shared library: [libOpenSLES.so]
0x0000000000000001 (NEEDED)             Shared library: [libc++_shared.so]
0x0000000000000001 (NEEDED)             Shared library: [libGLESv2.so]
0x0000000000000001 (NEEDED)             Shared library: [libm.so]
0x0000000000000001 (NEEDED)             Shared library: [libdl.so]
0x0000000000000001 (NEEDED)             Shared library: [libc.so]
< /code>
Когда я запускаю APK на моем Pixel 7 с Android 14, происходит следующая ошибка: < /p>
dlopen failed: TLS symbol "(null)" in dlopened "/apex/com.android.runtime/lib64/bionic/libclang_rt.hwasan-aarch64-android.so"
Полная ошибка:

Код: Выделить всё

09-13 21:43:19.312 28028 28028 D nativeloader: Load /data/app/~~VeP7A7hHnvshxaanDdLEyQ==/com.qux-GBK8s7jkWQ4TXb2mglMtUA==/lib/arm64/libfoobar.so using ns clns-4 from class loader (caller=/data/app/~~VeP7A7hHnvshxaanDdLEyQ==/com.qux-GBK8s7jkWQ4TXb2mglMtUA==/base.apk!classes2.dex): dlopen failed: TLS symbol "(null)" in dlopened "/apex/com.android.runtime/lib64/bionic/libclang_rt.hwasan-aarch64-android.so" referenced from "/apex/com.android.runtime/lib64/bionic/libclang_rt.hwasan-aarch64-android.so" using IE access model
Мой .so не делает ничего странного в отношении TLS. Я отключил все экзотические флаги компиляции. Из соображений предосторожности я увеличил minSdk до 29.
Есть какие-нибудь сведения о том, что происходит?

Подробнее здесь: https://stackoverflow.com/questions/789 ... ymbol-null
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»