Native crash in SSL handshake on Android 4.4.2 with ArcGIS 10.2.3

6678
4
06-09-2014 11:52 PM
RudolfKopriva1
New Contributor
We see a lot of native crash issues on some devices with Android 4.4.2. The log indicates it happens in SSL communication. Is this a known issue? Do you have any ideas? Thank you.

Build fingerprint: 'Verizon/jfltevzw/jfltevzw:4.4.2/KOT49H/I545VRUFNC5:user/release-keys'
Revision: '11'
pid: 2721, tid: 3005, name: pool-5-thread-5 >>> onxmaps.hunt <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
Abort message: 'invalid address or address of corrupt block 0x7e31e028 passed to dlfree'
r0 00000000 r1 4011917a r2 deadbaad r3 4011cd0d
r4 7e31e028 r5 40127190 r6 41b54000 r7 7e31e030
r8 00000003 r9 7ed97bb5 sl 00000001 fp 7ed97bb9
ip 00000001 sp 82a7d9c0 lr 400ea873 pc 400ea874 cpsr 600f0030
d0 2064696c61766e69 d1 2073736572646461
d2 657264646120726f d3 6f6320666f207373
d4 3fd34413509f79fb d5 41568f570e698a86
d6 412e848000000000 d7 00000400fb561fc7
d8 7ff0000000000000 d9 41568c0b304b0668
d10 408f400000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 c07422af5ad9a77f d17 010001ff0d000013
d18 6743a514430fcb23 d19 657fcd52992ddb94
d20 4820450ad34fbe9e d21 a2fe0391c1ee451b
d22 bf5544b8ce928c56 d23 d4404b0a8749e7f1
d24 3fd5555555555555 d25 391377ce858a5d48
d26 bca0000000000000 d27 3940000000000000
d28 3ff0000000000000 d29 bef375cbdb605373
d30 412e848000000000 d31 3fd5555555555563
scr 60000013

backtrace:
#00 pc 00011874 /system/lib/libc.so (dlfree+1191)
#01 pc 0000dd13 /system/lib/libc.so (free+10)
#02 pc 00082485 /system/lib/libcrypto.so (CRYPTO_free+24)
#03 pc 0002aa85 /system/lib/libssl.so (ssl_parse_serverhello_tlsext+244)
#04 pc 00016bbd /system/lib/libssl.so (ssl3_get_server_hello+904)
#05 pc 000196bf /system/lib/libssl.so (ssl3_connect+642)
#06 pc 00024f55 /system/lib/libssl.so (SSL_do_handshake+72)
#07 pc 0000c67f /system/lib/libjavacrypto.so
#08 pc 00020bcc /system/lib/libdvm.so (dvmPlatformInvoke+112)
#09 pc 00051927 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#10 pc 0002a060 /system/lib/libdvm.so
#11 pc 00031510 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#12 pc 0002eba8 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#13 pc 00063e75 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
#14 pc 00063e99 /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
#15 pc 00058b6b /system/lib/libdvm.so
#16 pc 0000d278 /system/lib/libc.so (__thread_entry+72)
#17 pc 0000d410 /system/lib/libc.so (pthread_create+240)

code around pc:
400ea854 6a014478 62021e4a f7fdb95a e008fd39
400ea864 4621482a 44784a2a f001447a 4a13f9b3
400ea874 49286014 f8d14479 079a31bc f501d51c
400ea884 e8bd70e0 f02c40f8 4823b895 f7fd4478
400ea894 4822fd0d e7fa4478 42b7688f ae10f43f
400ea8a4 481fe611 e7f24478 4478481e 6888e7ef
400ea8b4 f43f4298 e606aed4 bf00bdf8 deadbaad
400ea8c4 0003cdae 0003cda0 0003cd08 0003283b
400ea8d4 0003cc7c 0003cc6a 0003cbf2 0003cbd0
400ea8e4 0003cb74 0003cb5e 0003caf8 0003cae0
400ea8f4 0003cace 0003ca76 0003ca50 0003c9c6
400ea904 0003c970 0003c956 0003c938 0002e90c
400ea914 0003249d 0003c914 00032479 00032471
400ea924 00032461 0003245b 460db538 b1704601
400ea934 0200ea45 f405fb00 04030c10 4620b143
400ea944 ef24f028 bf1842a8 34fff04f 4604e000

code around lr:
400ea850 482e61a3 6a014478 62021e4a f7fdb95a
400ea860 e008fd39 4621482a 44784a2a f001447a
400ea870 4a13f9b3 49286014 f8d14479 079a31bc
400ea880 f501d51c e8bd70e0 f02c40f8 4823b895
400ea890 f7fd4478 4822fd0d e7fa4478 42b7688f
400ea8a0 ae10f43f 481fe611 e7f24478 4478481e
400ea8b0 6888e7ef f43f4298 e606aed4 bf00bdf8
400ea8c0 deadbaad 0003cdae 0003cda0 0003cd08
400ea8d0 0003283b 0003cc7c 0003cc6a 0003cbf2
400ea8e0 0003cbd0 0003cb74 0003cb5e 0003caf8
400ea8f0 0003cae0 0003cace 0003ca76 0003ca50
400ea900 0003c9c6 0003c970 0003c956 0003c938
400ea910 0002e90c 0003249d 0003c914 00032479
400ea920 00032471 00032461 0003245b 460db538
400ea930 b1704601 0200ea45 f405fb00 04030c10
400ea940 4620b143 ef24f028 bf1842a8 34fff04f
0 Kudos
4 Replies
WillCrick
Occasional Contributor

Hi,

We have had another report of this issue (via the stack trace being the same) but have not identified the cause. Could you identify at what point this is occurring please? The code that is being executed at the time of the crash would be useful.

From other posts it seems to be something to do with server protocol redirects, could this be the problem for you?

thanks

Will

0 Kudos
RudolfKopriva1
New Contributor

Yes, we recently found and fixed the issue. We were calling the REST services manually using HttpClient, because the SDK does not support all REST parameters we need (transparency). The problem is that HttpClient is not threadsafe. We created tread safe DefaultHttpClient like this:

ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(localBasicHttpParams, localSchemeRegistry);

static DefaultHttpClient defaultClient = new DefaultHttpClient(cm, localBasicHttpParams);

We then use this client to execute requests to the REST service and that fixed the issue.

0 Kudos
WillCrick
Occasional Contributor

Thanks for the info, that is very useful.

For your info we do have a class which allows you to add additional rest parameters to requests issued by the API:

HttpRequestHandler | ArcGIS Android 10.2.4 API

In the HttpRequestListener, you can check to see what sort of request is being made and then append things that we dont currently support. This is one of the most useful, yet least known about classes that we have in the API!

w.

0 Kudos
nicogis
MVP Frequent Contributor
0 Kudos