C++クラスで変数を設定しようとするとクラッシュするJNI/C++コードがあります。私が任意の値にother_obj_
でbool
を設定したときにクラッシュ(または実際にそのオブジェクト内のすべての変数を変更する)ように見えるAndroid - JNIクラッシュオンセットネイティブC++変数
void set_vr_enabled(bool enabled) {
LOGW("Before bool set prints fine.");
what_eva = enabled;
LOGW("After never prints");
}
:よう
void AndroidReflectionViewer::NativeSetVrActive(JNIEnv* env, jboolean active) {
LOGW("This gets called fine");
other_obj_.set_vr_enabled(active);
LOGW("Code never gets to here");
}
はターンでother_obj_
機能が見えます。ログ・ステートメントを印刷するのは問題ありません。私もwhat_eva = true
を試しましたが、違いはありません。
? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x123e in tid 12243
[ 01-19 09:18:54.062 457: 457 W/ ]
debuggerd: handling request: pid=12243 uid=10143 gid=10143 tid=12243
I/nanohub: osLog: [BMI160] gyrPower: on=1, state=3
I/nanohub: osLog: [BMI160] magPower: on=1, state=4
? W/debuggerd: type=1400 audit(0.0:1870): avc: denied { search } for name="com.foo" dev="sda35" ino=877326 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
? W/debuggerd: type=1400 audit(0.0:1871): avc: denied { search } for name="com.foo" dev="sda35" ino=877326 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
Android sourceのavc:deniedエラーについて読んでいます。これらはエラーがどこから来たのかをデバッグするのに役立ちますが、実際に何が起こっているのかについては多くの示唆を与えません。したがって、実際の質問の場合:
このクラッシュを引き起こす原因は何か、どうすれば修正できますか?
これは私が同僚からこの問題に遭遇した3つの解決策であるため、これを回答として挙げました。それらのうちの1人だけが実際に働いていました、そして、私はそれを他の人たちからしっかりと分離しました。しかし、それらはすべて妥当な解決策のように思えますが、同様の問題を抱えている誰かが使用できる可能性があります。 – hubatish