[osg-users] Android - corrupt block passed to dlfree

Jan Ciger jan.ciger at gmail.com
Mon Jul 6 12:16:57 PDT 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 06/07/15 19:02, Steven A. White ARA/SED wrote:
> The symptom seems to be a block of uninitialized memory being
> passed to a dlfree call .  The back trace can start from numerous
> sources based on the example code, but the failure is always based
> in std::allocator<char> >::~basic_string().   I would normally
> blame STL incompatibilities, but with the osgAndroidExampleGLES2 I
> can confirm that both the APK and the OSG libs were compiled
> against gnustl_static so I wouldn’t expect this to be the core
> conflict.
> 

Ouch, I have just spent a week chasing this exact bug, but not with
OSG but OSVR on Android.

The problem is most likely that you are linking with gnustl_static, in
fact. Rebuild everything with gnustl_dynamic and the crash in the
string destructor will most likely disappear.

My suspicion is that the app is not entirely statically linked and
when another copy of libc gets loaded into it at runtime by the
dynamic linker on Android, it is slightly different. And the code
crashes.

That the OSG example works doesn't mean much - for me the OSVR code
was working just fine when called from a normal app but the same code
crashing horribly when used from Unity - most likely because of
different memory layout or different shared libraries being linked at
runtime.

Yay for joys of the Android development ...

J.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iD8DBQFVmtQpn11XseNj94gRAlwpAJ4o4QFuV50ydnp/YAYX46fa5J8A3gCgwl0B
Kk7XjyBS+5yHQbB1Y+ySjoA=
=hbMZ
-----END PGP SIGNATURE-----



More information about the osg-users mailing list