ndk5 exception crash with third-party library

by wasabee18 » Thu, 12 May 2011 09:01:05 GMT


Sponsored Links
 i everyone, that's my first post, please be nice :)
My problem is as follows:

I have 2 library, namely lib1 and lib2 compiled with standalone
toolchain.
Both libs need to use stl and exception.
I am using ndkr5, and i have problem with exception !

According to the doc in ndk (document android-ndk-r5b/docs/CPLUSPLUS-
SUPPORT.html), it is mentioned that :
"
WARNING: IMPORTANT CAVEAT

AT THE MOMENT, OUR STLPORT IMPLEMENTATION DOES NOT SUPPORT
EXCEPTIONS
AND RTTI. PLEASE BE SURE TO NOT USE -fexceptions OR -frtti IN ALL
MODULES THAT USE IT.

IF YOU NEED THESE, PLEASE USE "gnustl_static".
"

so in my Application.mk, I have added:
APP_STL := gnustl_static

==================== my test with one single lib (promising)
=================================
I tested as follows:
1) Test 1 :
if i use try/catch within jni, it works with gnustl_static, but it
works as well for stlport_static. i assume it works for stlport_shared
as well
example:
try {
throw 1
} catch (in e) {
LOHI("catch int %d", e); // OK
}

2) Test 2 :
if i use try/catch within my external lib, say in lib1, then it works
with gnustl_static, but it works as well for stlport_static. i assume
it works for stlport_shared as well.
example:
try {
throw 1
} catch (in e) {
LOHI("catch int %d", e); // OK
}

3) Test 3:
if i throw the exception from the external lib and try to catch it
withing the jni code, then the app crashes if i use gnustl_static.
example:
lib.c
void func()
{
throw 1;
}
and in jni:
try{
func(); // CRASH
} catch (int e) {
LOHI("catch int %d", e);
}

I have figured that if i use stlport_static instead of gnustl_static,
then it works! This is contradictory to what documentation says ... ??
Can someone share their experience ?

Anyway, my first tests finished, I have tried with 2 libs instead of a
single one... and the problems started.

=========================== end my test with one single lib
================================


=================my external libs compiled with standalone toolchain
===========================
my 2 external libs are as follows:
lib1 has just one file lib1.c containing one function:
void lib1_func1(int *i)
{
throw 11;
}
According to doc android-ndk-r5b/docs/STANDALONE-TOOLCHAIN.html, it is
mentioned that:
"
The toolchain binaries *do* support C++ exceptions and RTTI by
default.
They are enabled by default, so use -fno-exceptions and -fno-rtti if
you
want to disable them when building sources with them (e.g. to generate
smaller machine code).

NOTE: You will need to explicitely link with libsupc++ if you use
these
features. To do this, use -lsupc++ when linking binaries, as in:

arm-linux-androideabi-g++ .... -lsupc++

"

so i compile and link against lsupc++ as:
arm-linux-androideabi-g++ -mthumb -O2 -g -Wall -fpic -c lib1.c -o
lib1.o
arm-linux-androideabi-g++ -shared -Wl,-soname,liblib1.so lib1.o -lsupc
++ -o liblib1.so

lib2 has just one file lib2.c containing one function:
void lib2_func1(int *i)
{
throw 21;
}
i compile it as (linking against libsupc++):
arm-linux-androideabi-g++ -mthumb -O2 -g -Wall -fpic -c lib2.c -o
lib2.o
arm-linux-androideabi-g++ -shared -Wl,-soname,liblib2.so lib2.o -lsupc
++ -o liblib2.so

=================== end external lib
===================================================

===================== Android.mk



Re: ndk5 exception crash with third-party library

by Marcin Orlowski » Thu, 12 May 2011 17:01:31 GMT


 



I beliee your problem shall be discussed on NDK list, not here (SDK).

Regards,
Marcin Orlowski

*Tray Agenda < http://bit.ly/trayagenda> ;* - keep you daily schedule handy...
*Date In Tray* < http://bit.ly/dateintraypro> ; - current date at glance...
WebnetMobile on *Facebook < http://webnetmobile.com/fb/> ;* and
*Twitter< http://webnetmobile.com/twitter/> ;
*

-- 


Sponsored Links


Re: ndk5 exception crash with third-party library

by wasabee18 » Fri, 20 May 2011 17:24:28 GMT


 sorry. I intended to post it on ndk list. my mistake.
I have re-posted to ndk list.

Thanks.






-- 



Other Threads

1. ProgressDialog - how to remove the numbers

I was following the progress dialog example in the ApiDemos.
all went great except for one thing - I want to remove the numbers
that appear underneath the bar (those running numbers that run from 0
to .getMax().

couldn't find how to do it.

anyone?

Ori

-- 

2. Booting Android from NAND

Hello,
I'm trying to boot Android from NAND.
I was able to write the kernel to NAND but I don't know how to write
the Android file system to NAND!
I tried to put it in a SD card and then fatload it but it doesn't seem
to work!
Can anyone please help?
Thanks

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: 

3. selecting item from a list

4. glTexImage2D very slow on phones like Nexus one

5. Strange black blank between keyboard and customized EditTextView

6. how to build the gallery application.

7. How does NotificationService work?