При включении ACRCloud Native Lib мои собственные сбои Native Lib
У меня есть приложение для Android, которое использует NDK. В моем коде C++ у меня есть вызов std::use_facet(). Само по себе мое приложение работает нормально, однако, когда я добавляю ACRCloud SDK, при запуске приложения происходит сбой:
Build fingerprint: 'google/taimen/taimen:9/PPR2.180905.005/4928864:user/release-keys'
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: Revision: 'rev_10'
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: ABI: 'arm'
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: pid: 2915, tid: 2915, name: .app >>> com.mycompany.android.app <<<
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: Cause: null pointer dereference
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: r0 00000000 r1 00000043 r2 d5b21700 r3 00000000
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: r4 ffd1a974 r5 ebd856ac r6 ebd856ac r7 d551c3a4
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: r8 d3acfae8 r9 f45842c0 r10 00000143 r11 ffd1a9b4
2018-10-17 14:48:36.357 2938-2938/? A/DEBUG: ip 00000000 sp ffd1a948 lr d473ae40 pc d473ae54
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: backtrace:
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #00 pc 03e2fe54 /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (std::ctype<char> const& std::use_facet<std::ctype<char>>(std::locale const&)+40)
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #01 pc 023ee45c /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (_ZNSt8__detail9_CompilerISt12regex_traitsIcEEC1EPKcS5_RKS2_NSt15regex_constants18syntax_option_typeE+232)
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #02 pc 023eb19c /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (_ZNSt8__detail13__compile_nfaISt12regex_traitsIcEEESt10shared_ptrINS_4_NFAIT_EEEPKNS5_9char_typeESA_RKS5_NSt15regex_constants18syntax_option_typeE+80)
2018-10-17 14:48:36.550 2938-2938/? A/DEBUG: #03 pc 023e8d28 /data/app/com.mycompany.android.app-APqEWGjyWJxWwxYs8NNiHA==/lib/arm/libMyApp.so (_ZNSt11basic_regexIcSt12regex_traitsIcEEC2IPKcEET_S6_NSt15regex_constants18syntax_option_typeE+240)
Сбой обнаруживается в моей родной библиотеке, но я полагаю, что это связано с тем, что библиотека ACRCloud находится там, что и является причиной этого.
Обратите внимание, что в момент сбоя еще не запущен код, который создает экземпляр ACRCloud SDK.
У меня такое ощущение, что ACRCloud также где-то использует тот же вызов метода, std::use_facet(), и во время компиляции вместо меня вводятся символы из ACRCloud, что вызывает конфликт.
Возможно, кто-то в ACRCloud может вмешаться.
2 ответа
Оказывается, мои настройки сборки были неверными. Я использую Bazel для сборки всего, и я обращался к библиотеке ACRCloud, используя правило cc_library, а не то, что должно было быть: filegroup.
Я думаю, что когда я использовал правило cc_library, во время компиляции что-то изменялось, и это приводило к моей ошибке; тогда как, если я импортирую его через файловую группу, артефакт будет просто введен без какого-либо касания.
Этот сбой вызван "/lib/arm/libMyApp.so". Это может быть ваша собственная библиотека. ACRCloud SDK не содержит эту библиотеку.