aldebaran / libqi

NAOqi core framework
http://doc.aldebaran.com/libqi/
BSD 3-Clause "New" or "Revised" License
66 stars 53 forks source link

libqi crash on android #16

Open lenLRX opened 8 years ago

lenLRX commented 8 years ago

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.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)

#01  pc 00013265  /system/lib/libc.so (pthread_kill+48)
#02  pc 00013479  /system/lib/libc.so (raise+10)
#03  pc 000121af  /system/lib/libc.so
#04  pc 00021a5c  /system/lib/libc.so (abort+4)
#05  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)
#01  76e67370  00000006  
     76e67374  00000000  
     76e67378  785dba04  [anon:libc_malloc]
     76e6737c  4011047d  /system/lib/libc.so (raise+14)
#02  76e67380  76e6738c  [stack:25740]
     76e67384  4010f1b3  /system/lib/libc.so
#03  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)
#04  76e673b0  0000648c  
     76e673b4  76eba814  /data/app-lib/com.example.acer.hello-1/libgnustl_shared.so (__gnu_cxx::__verbose_terminate_handler()+352)
#05  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? )

lenLRX commented 8 years ago

Now I caught exception and is says that

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

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