We are poriting Android 5.0 to our SoC. Under 4 core condition we find dex2oat causes heap corruption.
The log is like: I/dex2oat2( 411): dex2oat2 F/libc ( 411): heap corruption detected by dlfree F/libc ( 411): Fatal signal 6 (SIGABRT), code -6 in tid 413 (Compiler driver) I/DEBUG ( 118): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 118): Revision: '0' I/DEBUG ( 118): ABI: 'arm' I/DEBUG ( 118): pid: 411, tid: 413, name: Compiler driver >>> dex2oat2 <<< I/DEBUG ( 118): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- I/DEBUG ( 118): Abort message: 'heap corruption detected by dlfree' I/DEBUG ( 118): r0 00000000 r1 0000019d r2 00000006 r3 00000000 I/DEBUG ( 118): r4 b342fdd8 r5 00000006 r6 0000000b r7 0000010c I/DEBUG ( 118): r8 b6a79198 r9 00000000 sl 00000000 fp b354da6c I/DEBUG ( 118): ip 0000019d sp b342f800 lr b6a32db1 pc b6a58e9c cpsr 60070010 I/DEBUG ( 118): I/DEBUG ( 118): backtrace: I/DEBUG ( 118): #00 pc 0003ce9c /system/lib/libc.so (tgkill+12) I/DEBUG ( 118): #01 pc 00016dad /system/lib/libc.so (pthread_kill+52) I/DEBUG ( 118): #02 pc 000179a7 /system/lib/libc.so (raise+10) I/DEBUG ( 118): #03 pc 00014169 /system/lib/libc.so (__libc_android_abort+36) I/DEBUG ( 118): #04 pc 000124f0 /system/lib/libc.so (abort+4) I/DEBUG ( 118): #05 pc 0001549f /system/lib/libc.so (__libc_fatal+16) I/DEBUG ( 118): #06 pc 00029b19 /system/lib/libc.so (__bionic_heap_corruption_error+8) I/DEBUG ( 118): #07 pc 0002bb8d /system/lib/libc.so (dlfree+312) I/DEBUG ( 118): #08 pc 0001225b /system/lib/libc.so (free+10) I/DEBUG ( 118): #09 pc 00243eb3 /system/lib/libart.so (art::verifier::MethodVerifier::~MethodVerifier()+434) I/DEBUG ( 118): #10 pc 0024f4c7 /system/lib/libart.so (art::verifier::MethodVerifier::VerifyMethod(unsigned int, art::DexFile const*, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLo) I/DEBUG ( 118): #11 pc 0024fa59 /system/lib/libart.so (art::verifier::MethodVerifier::VerifyClass(art::DexFile const*, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>, art::Dex) I/DEBUG ( 118): #12 pc 002500a5 /system/lib/libart.so (art::verifier::MethodVerifier::VerifyClass(art::mirror::Class*, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator) I/DEBUG ( 118): #13 pc 000d8317 /system/lib/libart.so (art::ClassLinker::VerifyClass(art::Handle<art::mirror::Class>)+622) I/DEBUG ( 118): #14 pc 0013c7ff /system/lib/libart-compiler.so I/DEBUG ( 118): #15 pc 00136621 /system/lib/libart-compiler.so I/DEBUG ( 118): #16 pc 0022fe35 /system/lib/libart.so (art::ThreadPoolWorker::Run()+36) I/DEBUG ( 118): #17 pc 00230685 /system/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+52) I/DEBUG ( 118): #18 pc 0001659b /system/lib/libc.so (__pthread_start(void*)+30) I/DEBUG ( 118): #19 pc 000144cb /system/lib/libc.so (__start_thread+6) I/DEBUG ( 118): I/DEBUG ( 118): Tombstone written to: /data/tombstones/tombstone_08 or I/dex2oat2( 402): dex2oat2 F/libc ( 402): heap corruption detected by dlmalloc_real F/libc ( 402): Fatal signal 6 (SIGABRT), code -6 in tid 402 (main) I/DEBUG ( 118): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 118): Revision: '0' I/DEBUG ( 118): ABI: 'arm' I/DEBUG ( 118): pid: 402, tid: 402, name: main >>> dex2oat2 <<< I/DEBUG ( 118): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- I/DEBUG ( 118): Abort message: 'heap corruption detected by dlmalloc_real' I/DEBUG ( 118): r0 00000000 r1 00000192 r2 00000006 r3 00000000 I/DEBUG ( 118): r4 b6fd8e38 r5 00000006 r6 0000000b r7 0000010c I/DEBUG ( 118): r8 bebbdc90 r9 b6fc0a64 sl 00000005 fp 00000005 I/DEBUG ( 118): ip 00000192 sp bebbda40 lr b6a7bdb1 pc b6aa1e9c cpsr 600d0010 I/DEBUG ( 118): I/DEBUG ( 118): backtrace: I/DEBUG ( 118): #00 pc 0003ce9c /system/lib/libc.so (tgkill+12) I/DEBUG ( 118): #01 pc 00016dad /system/lib/libc.so (pthread_kill+52) I/DEBUG ( 118): #02 pc 000179a7 /system/lib/libc.so (raise+10) I/DEBUG ( 118): #03 pc 00014169 /system/lib/libc.so (__libc_android_abort+36) I/DEBUG ( 118): #04 pc 000124f0 /system/lib/libc.so (abort+4) I/DEBUG ( 118): #05 pc 0001549f /system/lib/libc.so (__libc_fatal+16) I/DEBUG ( 118): #06 pc 00029b19 /system/lib/libc.so (__bionic_heap_corruption_error+8) I/DEBUG ( 118): #07 pc 0002b31f /system/lib/libc.so (dlmalloc_real+2942) I/DEBUG ( 118): #08 pc 00012287 /system/lib/libc.so (malloc+10) I/DEBUG ( 118): #09 pc 00049ee1 /system/lib/libc++.so (operator new(unsigned int)+16) I/DEBUG ( 118): #10 pc 00257e77 /system/lib/libart.so (art::verifier::RegTypeCache::FromClass(char const*, art::mirror::Class*, bool)+446) I/DEBUG ( 118): #11 pc 00243b91 /system/lib/libart.so (art::verifier::MethodVerifier::GetDeclaringClass()+72) I/DEBUG ( 118): #12 pc 00248499 /system/lib/libart.so (art::verifier::MethodVerifier::SetTypesFromSignature()+664) I/DEBUG ( 118): #13 pc 0024eba1 /system/lib/libart.so (art::verifier::MethodVerifier::VerifyCodeFlow()+444) I/DEBUG ( 118): #14 pc 0024ed9d /system/lib/libart.so (art::verifier::MethodVerifier::Verify()+120) I/DEBUG ( 118): #15 pc 0024f41b /system/lib/libart.so (art::verifier::MethodVerifier::VerifyMethod(unsigned int, art::DexFile const*, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLo) I/DEBUG ( 118): #16 pc 0024fcb1 /system/lib/libart.so (art::verifier::MethodVerifier::VerifyClass(art::DexFile const*, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>, art::Dex) I/DEBUG ( 118): #17 pc 002500a5 /system/lib/libart.so (art::verifier::MethodVerifier::VerifyClass(art::mirror::Class*, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator) I/DEBUG ( 118): #18 pc 000d8317 /system/lib/libart.so (art::ClassLinker::VerifyClass(art::Handle<art::mirror::Class>)+622) I/DEBUG ( 118): #19 pc 0013c7ff /system/lib/libart-compiler.so I/DEBUG ( 118): #20 pc 00136621 /system/lib/libart-compiler.so I/DEBUG ( 118): #21 pc 0023010d /system/lib/libart.so (art::ThreadPool::Wait(art::Thread*, bool, bool)+168) I/DEBUG ( 118): #22 pc 00139d3d /system/lib/libart-compiler.so I/DEBUG ( 118): #23 pc 0013a40f /system/lib/libart-compiler.so (art::CompilerDriver::Verify(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::Threa) I/DEBUG ( 118): #24 pc 0014383b /system/lib/libart-compiler.so (art::CompilerDriver::PreCompile(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::T) I/DEBUG ( 118): #25 pc 001446f1 /system/lib/libart-compiler.so (art::CompilerDriver::CompileAll(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::T) I/DEBUG ( 118): #26 pc 0000a675 /system/bin/dex2oat2 I/DEBUG ( 118): #27 pc 0000c835 /system/bin/dex2oat2 I/DEBUG ( 118): #28 pc 000123a1 /system/lib/libc.so (__libc_init+44) I/DEBUG ( 118): #29 pc 000046f4 /system/bin/dex2oat2 I/DEBUG ( 118): I/DEBUG ( 118): Tombstone written to: /data/tombstones/tombstone_07 We try to catch this bug under valgrind or libc.debug.malloc on. But with these debug routine on, the heap corruption is gone. Any idea of this kind of cases? -- -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting --- You received this message because you are subscribed to the Google Groups "android-porting" group. To unsubscribe from this group and stop receiving emails from it, send an email to android-porting+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.