aldebaran/libqi

libqi crash on android

Opened this issue · 1 comments

I'm trying to build a app with libqi and it crash at the code below.
Application app = new Application(args);
I am using libqi-master libqi-java-master on Android 4.4.2 .
And the permissions are
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.READ_OWNER_DATA"/> <uses-permission android:name="android.permission.CLEAR_APP_CACHE"/> <uses-permission android:name="android.permission.WRITE_OWNER_DATA"/>

Then I found the tombstone
SYSTEM_TOMBSTONE@1463731363785.txt

backtrace:
#00 pc 000221a8 /system/lib/libc.so (tgkill+12)
#1 pc 00013265 /system/lib/libc.so (pthread_kill+48)
#2 pc 00013479 /system/lib/libc.so (raise+10)
#3 pc 000121af /system/lib/libc.so
#4 pc 00021a5c /system/lib/libc.so (abort+4)
#5 pc 00050810 /data/app-lib/com.example.acer.hello-1/libgnustl_shared.so (__gnu_cxx::__verbose_terminate_handler()+348)

stack:
76e67318 00000065
76e6731c 00000004
76e67320 4010d05d /system/lib/libc.so (dlmalloc)
76e67324 00000065
76e67328 76e67374 [stack:25740]
76e6732c 2e7f0a89
76e67330 0000002f
76e67334 2e7f0a89
76e67338 0000000b
76e6733c 00000001
76e67340 00000015
76e67344 72627cf0 [anon:libc_malloc]
76e67348 00000001
76e6734c 40137929 /system/lib/libc.so (write+12)
76e67350 401481d0 /system/lib/libc.so
76e67354 72627cf0 [anon:libc_malloc]
#00 76e67358 00000006
76e6735c 0000000d
76e67360 0000648c
76e67364 785db940 [anon:libc_malloc]
76e67368 785db940 [anon:libc_malloc]
76e6736c 40110269 /system/lib/libc.so (pthread_kill+52)
#1 76e67370 00000006
76e67374 00000000
76e67378 785dba04 [anon:libc_malloc]
76e6737c 4011047d /system/lib/libc.so (raise+14)
#2 76e67380 76e6738c [stack:25740]
76e67384 4010f1b3 /system/lib/libc.so
#3 76e67388 40148224 /system/lib/libc.so
76e6738c ffffffdf
76e67390 0000000a
76e67394 00000000
76e67398 40148224 /system/lib/libc.so
76e6739c 4015632c
76e673a0 0000000a
76e673a4 4014817c /system/lib/libc.so
76e673a8 00000001
76e673ac 4011ea60 /system/lib/libc.so (__pthread_clone)
#4 76e673b0 0000648c
76e673b4 76eba814 /data/app-lib/com.example.acer.hello-1/libgnustl_shared.so (__gnu_cxx::__verbose_terminate_handler()+352)
#5 76e673b8 785db7a0 [anon:libc_malloc]
76e673bc 00000000
76e673c0 785db7a0 [anon:libc_malloc]
76e673c4 785db748 [anon:libc_malloc]
76e673c8 770f2f34 /data/app-lib/com.example.acer.hello-1/libqi.so (boost::filesystem::filesystem_error::~filesystem_error())
76e673cc 7785b0b0 /data/app-lib/com.example.acer.hello-1/libqi.so
76e673d0 76e673dc [stack:25740]
76e673d4 76eb86e4 /data/app-lib/com.example.acer.hello-1/libgnustl_shared.so (__cxxabiv1::__terminate(void ()())+12)
76e673d8 76e673e4 [stack:25740]
76e673dc 76eb8784 /data/app-lib/com.example.acer.hello-1/libgnustl_shared.so (__cxxabiv1::__unexpected(void (
)()))
76e673e0 76e673fc [stack:25740]
76e673e4 76eb8ad0 /data/app-lib/com.example.acer.hello-1/libgnustl_shared.so (__cxa_throw+160)
76e673e8 785db7a0 [anon:libc_malloc]
76e673ec 0000000d
76e673f0 7786a8b8 /data/app-lib/com.example.acer.hello-1/libqi.so
76e673f4 76e674bc [stack:25740]

So I think that maybe some uncaught execption (boost::filesystem::filesystem_error) cause the crash.

I tried to read the code of libqi and i found there many function may throw an exception out of try{};

Maybe next step I should try to catch these excption in qimessaging-jni.so and rethrow them to the java side thus I can use System.out.println to show them on the log-cat.(is that possible to catch a exception in anothor library? )

Now I caught exception and is says that

boost::filesystem::status: Permission denied: "/sbin/java"

why does libqi want to access "/sbin/java"?