I use Scapix to generate Java interface for my Android app. It works perfectly when the app is built with Android optimizations disabled. But if I enable them (by specifying minifyEnabled true
in Gradle) I get the following runtime error when my native class gets called through the Scapix-generated interface:
__cxa_guard_acquire detected recursive initialization
2023-03-26 19:02:54.805 6251-6251 libc com.example.myapp A Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 6251 (myapp), pid 6251 (myapp)
Cmdline: com.example.myapp
pid: 6251, tid: 6251, name: myapp >>> com.example.myapp <<<
#01 pc 00000000000d71eb /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libc++_shared.so (BuildId: de4901415b117d03796c38214752f9d82ebc73ca)
#02 pc 00000000000ed1f4 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libc++_shared.so (__cxa_guard_acquire+244) (BuildId: de4901415b117d03796c38214752f9d82ebc73ca)
#03 pc 00000000000d463e /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libMyNativeLib.so (scapix::link::java::object<scapix::meta::string<c, o, m, /, s, c, a, p, i, x, /, N, a, t, i, v, e, E, x, c, e, p, t, i, o, n>, _jthrowable*>::class_object()+62) (BuildId: fbf539b845ed70794f0d2d77fdbb54f620592c61)
#04 pc 0000000000126a90 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libMyNativeLib.so (scapix::link::java::detail::throw_exception(_jthrowable*)+80) (BuildId: fbf539b845ed70794f0d2d77fdbb54f620592c61)
#05 pc 00000000000d483f /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libMyNativeLib.so (scapix::link::java::object<scapix::meta::string<c, o, m, /, s, c, a, p, i, x, /, N, a, t, i, v, e, E, x, c, e, p, t, i, o, n>, _jthrowable*>::class_object()+575) (BuildId: fbf539b845ed70794f0d2d77fdbb54f620592c61)
#06 pc 0000000000126a90 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libMyNativeLib.so (scapix::link::java::detail::throw_exception(_jthrowable*)+80) (BuildId: fbf539b845ed70794f0d2d77fdbb54f620592c61)
#07 pc 00000000000d41e0 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libMyNativeLib.so (scapix::link::java::native_methods<scapix::meta::string<c, o, m, /, s, c, a, p, i, x, /, N, a, t, i, v, e, E, x, c, e, p, t, i, o, n>, scapix::link::java::native_method<scapix::meta::string<f, i, n, a, l, i, z, e>, void (long), void (long), &(scapix::link::java::detail::native_exception::finalize(long))> >::register_()+480) (BuildId: fbf539b845ed70794f0d2d77fdbb54f620592c61)
#08 pc 00000000000d3747 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/base.apk!libMyNativeLib.so (scapix_JNI_OnLoad+87) (BuildId: fbf539b845ed70794f0d2d77fdbb54f620592c61)
#16 pc 0000000000160590 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/oat/x86_64/base.vdex (m4.a.<clinit>+4)
#24 pc 00000000000e8930 /data/app/~~gXjVxylFaFGZZQTr910l-g==/com.example.myapp-PwE5DB0K7_C1EcQOpuVJFQ==/oat/x86_64/base.vdex (com.example.MyNativeLib.MyNativeClass.<clinit>+0)
... (a long list of unrelated Android classes follows)