Добрый день!
Стоит задача - использовать c++ библиотеку из другого Android-приложения, написанного не мной.
Сама библиотека устроена так:
1. Там есть методы на c++, по типу Java_com_, к которым мы подключаемся из java.
2. Есть методы на java, к которым обращается код из c++.
К библиотеке подключаюсь, часть методов работает.
А потом выдает такую ошибку.
10-23 15:32:07.262 29631-29674/com.test.test A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 29674 (Thread-7)
10-23 15:32:07.528 30482-30482/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-23 15:32:07.529 30482-30482/? A/DEBUG: Build fingerprint: 'HONOR/LLD-L31/HWLLD-H:8.0.0/HONORLLD-L31/144(C10):user/release-keys'
10-23 15:32:07.529 30482-30482/? A/DEBUG: Revision: '0'
10-23 15:32:07.529 30482-30482/? A/DEBUG: ABI: 'arm'
10-23 15:32:07.529 30482-30482/? A/DEBUG: pid: 29631, tid: 29674, name: Thread-7 >>> com.test.test <<<
10-23 15:32:07.529 30482-30482/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
10-23 15:32:07.529 30482-30482/? A/DEBUG: Cause: null pointer dereference
10-23 15:32:07.529 30482-30482/? A/DEBUG: r0 dd868f00 r1 c77bfbe4 r2 c77bfbe0 r3 c77bfc98
10-23 15:32:07.529 30482-30482/? A/DEBUG: r4 c77e4bac r5 00000000 r6 c77bfc28 r7 c330147d
10-23 15:32:07.529 30482-30482/? A/DEBUG: r8 c77bfe70 r9 00000000 sl b5ea9328 fp c77bfd54
10-23 15:32:07.529 30482-30482/? A/DEBUG: ip c6d6208c sp 00000000 lr 00000000 pc 00000000 cpsr 600f0010
10-23 15:32:07.529 30482-30482/? A/DEBUG: backtrace:
10-23 15:32:07.529 30482-30482/? A/DEBUG: #00 pc 00000000 <unknown>
Вопрос - что это может быть? В какую сторону копать? Что посоветуете?
Может можно как-то узнать больше backtrace?
В каких случаях может быть ошибка SEGV_MAPERR, можете, пожалуйста, написать конкретные примеры?
Я вижу, что какой-то указатель null, но в другом приложении, которое использует эту библиотеку, все работает.
Значит, проблема на стороне приложения, а не c++.
Assets такие же, все функции в java-коде есть (иначе при обращении к несуществующей функции было бы JNI_Error).
Может что нет каких-то ресурсов из папки res? Хотя это не должно быть причиной.
Что думаете?