Whatsapp ART support

nano91

Member
Jan 9, 2011
30
2
28
It's not a matter of better support of features, it all boils down to: which app are all my friends currently using? This is basically a social media app, and if I don't have any friends on any of the other apps, what's the point of using them?

I would love to tell my friends to make a switch to something better, but then that would mean I have to have to tell everyone to switch, and then they would have to make their friends switch too, etc... OR use two messaging services. It is simply too much headache.

In this time of social media, it seems like whatever works best in the beginning is the one that is going to last (take facebook vs google+).
That's exactly what is bugging me. I'm an early adaptor, computer science student and really like to try out new things, that's why it's probably easier for me to switch to new stuff. But normal people don't do this. they take, what came first and stay at it until it goes down. facebook is slowly going down (thankfully), and hopefully whatsapp will too.

i know it's hard to convince someone to switch. it takes time as there need to be a few people before it gets rolling, so hopefully this will happen sometime soon. i had lots of troubles with whatsapp, that's why i don't really like them.
 

Metal5150

Member
Nov 16, 2012
10
2
0
São Paulo
hi guys.

basically, there is 2 issue here.

1. The Package Installer.
(this is where under ART, it does not install properlly and then cause the -42 issue even when you switch back to dalvik).
This, google has confirm is a issue and needs to fix. the work around is to delete the /data/data/com.whatsapp.X directory, then you can re-install under dalvik.

2. Whatsapp apk itself is not ART compatible.
it seems that version 2.11.50 (i tested so far, or 2.11.42) can run/be compiled with linART.
so, if you able to install in under Dalvik, when switch to ART, the optimizing Application on start will then create .oat which will run.
any older version seems to have "obsolete" flag on whatsapp server. eg 2.11.12 which can be both install and run under ART.


In summary. to run whatsapp, you need either 2.11.42 or .50 (these 2 are tested) installed under dalvik mode. (Do not upgrade it), then switch to ART. Job done.
That is it!!! Thanks a lot
 

cernekee

Senior Member
Jun 2, 2013
186
423
0
Bug 61916 has some additional details:

Google said:
There are two separate issues here. The first is that whatsapp fails to in install with ART.
[...]
This really isn't a WhatsApp issue. They have bytecode that fails to verify for ART, but verified just fine for Dalvik. In ART we tried to add more aggressive checking of monitorenter/monitorexit balance where Dalvik did not but we are going to back that off now that it is clear there are apps relying on this pattern.

The second is that if an app fails to install due a problem with dexopt(Dalvik) or dex2oat(ART) the you can't install the app in the future. This is a separate PackageManager issues that is long existing and filed elsewhere. The best way to fix it is to remove the data directory for the app as #9 suggests, though I haven't validated those instructions.
Based on this description I suspected that the error was being thrown by art/runtime/verifier/register_line.cc:

Code:
void RegisterLine::PopMonitor(uint32_t reg_idx) {
  const RegType& reg_type = GetRegisterType(reg_idx);
  if (!reg_type.IsReferenceTypes()) {
    verifier_->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "monitor-exit on non-object (" << reg_type << ")";
  } else if (monitors_.empty()) {
    verifier_->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "monitor-exit stack underflow";
In Dalvik, gDvm.monitorVerification defaults to false, causing monitorEntries to stay NULL, so the enter/exit matching described by the Google engineer is disabled (as expected on Dalvik) unless Xverifyopt:checkmon is used:

Code:
void handleMonitorExit(RegisterLine* workLine, u4 regIdx, u4 insnIdx,
    VerifyError* pFailure)
{
    if (!regTypeIsReference(getRegisterType(workLine, regIdx))) {
        LOG_VFY("VFY: monitor-exit on non-object");
        *pFailure = VERIFY_ERROR_GENERIC;
        return;
    }

    if (workLine->monitorEntries == NULL) {
        /* should only be true if monitor verification is disabled */
        assert(!gDvm.monitorVerification);
        return;
    }
But the error I saw when I actually tried to install the latest WhatsApp didn't appear to be "monitor-exit"-related, so I am puzzled:

Code:
I/ActivityManager(  611): START u0 {dat=file:///storage/emulated/0/.nogapps/blankstore/com.whatsapp/APP-48348.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras)} from pid 2057
I/art     (  611): Heap trim of managed (duration=5.292552ms, advised=1548KB) and native (duration=1.301927ms, advised=20KB) heaps. Managed heap utilization of 65%.
W/ActivityManager(  611): No content provider found for permission revoke: file:///storage/emulated/0/.nogapps/blankstore/com.whatsapp/APP-48348.apk
I/ActivityManager(  611): Displayed com.android.packageinstaller/.InstallAppProgress: +74ms
W/ActivityManager(  611): No content provider found for permission revoke: file:///storage/emulated/0/.nogapps/blankstore/com.whatsapp/APP-48348.apk
I/PackageManager(  611): Copying native libraries to /data/app-lib/vmdl-995514050
W/PackageManager(  611): Package com.whatsapp desires unavailable shared library com.google.android.maps; ignoring!
W/PackageManager(  611): Package com.whatsapp desires unavailable shared library com.sec.android.app.multiwindow; ignoring!
I/PackageManager(  611): Running dexopt on: com.whatsapp
I/dex2oat ( 5360): dex2oat: /data/dalvik-cache/[email protected]@[email protected]
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawDividersHorizontal(android.graphics.Canvas) would have incorrectly overridden the package-private method in android.widget.LinearLayout
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawDividersVertical(android.graphics.Canvas) would have incorrectly overridden the package-private method in android.widget.LinearLayout
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawHorizontalDivider(android.graphics.Canvas, int) would have incorrectly overridden the package-private method in android.widget.LinearLayout
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawVerticalDivider(android.graphics.Canvas, int) would have incorrectly overridden the package-private method in android.widget.LinearLayout
I/dex2oat ( 5360): Verification error in void android.support.v4.i.a(int)
E/dex2oat ( 5360): Verification failed on class android.support.v4.i in /data/app/com.whatsapp-1.apk because: Verifier rejected class android.support.v4.i due to bad method void android.support.v4.i.a(int)
W/dex2oat ( 5360): Verification of void com.whatsapp.App.<clinit>() took 196.769322ms
I/dex2oat ( 5360): Verification error in void com.whatsapp.gallerypicker.tc.run()
E/dex2oat ( 5360): Verification failed on class com.whatsapp.gallerypicker.tc in /data/app/com.whatsapp-1.apk because: Verifier rejected class com.whatsapp.gallerypicker.tc due to bad method void com.whatsapp.gallerypicker.tc.run()
W/dex2oat ( 5360): Verification of void com.whatsapp.seb.<clinit>() took 294.038228ms
I/dex2oat ( 5360): Verification error in boolean android.support.v4.app.eb.d()
E/dex2oat ( 5360): Verification failed on class android.support.v4.app.eb in /data/app/com.whatsapp-1.apk because: Verifier rejected class android.support.v4.app.eb due to bad method boolean android.support.v4.app.eb.d()
E/dex2oat ( 5360): Rejecting class com.whatsapp.gallerypicker.db that attempts to sub-class erroneous class android.support.v4.i in /data/app/com.whatsapp-1.apk
E/dex2oat ( 5360): Rejecting class com.whatsapp.up that attempts to sub-class erroneous class android.support.v4.i in /data/app/com.whatsapp-1.apk
W/dex2oat ( 5360): Verification of void ud.<clinit>() took 798.117343ms
F/dex2oat ( 5360): art/runtime/verifier/method_verifier.cc:4119] Check failed: it != dex_gc_maps_->end() Didn't find GC map for: void com.whatsapp.gallerypicker.db.<init>(int)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] Runtime aborting...
F/dex2oat ( 5360): art/runtime/runtime.cc:203] Aborting thread:
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 1" prio=5 tid=4 Runnable (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b91ab8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5362 nice=0 cgrp=default sched=0/0 handle=0xb8b901e8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4385870832 340327663 29166 ) utm=333 stm=105 core=1 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb50b8000-0xb50bc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Thread::DumpStack(std::ostream&) const+87 [0xb6cf7eac] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6cf003c] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Runtime::Abort()+79 [0xb6cf05cc] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::LogMessage::~LogMessage()+505 [0xb6b9d93a] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::verifier::MethodVerifier::GetDexGcMap(art::MethodReference)+331 [0xb6d0d040] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CreateNativeGcMap()+59 [0xb6dbe4c4] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::AssembleLIR()+375 [0xb6dbe7cc] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+39 [0xb6dbe808] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eae] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+33 [0xb6de8252] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1197 [0xb6dfa46e] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+729 [0xb6dfa9e2] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31a] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+41 [0xb6d037be] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+37 [0xb6d03cfe] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] Dumping all threads without appropriate locks held: thread list lock mutator lock
F/dex2oat ( 5360): art/runtime/runtime.cc:203] All threads:
F/dex2oat ( 5360): art/runtime/runtime.cc:203] DALVIK THREADS (4):
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "main" prio=5 tid=1 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8a757b0
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5360 nice=0 cgrp=default sched=0/0 handle=0xb6f3c154
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4383188388 278452786 33649 ) utm=330 stm=108 core=2 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xbe148000-0xbe14c000 stackSize=8MB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   kernel: (couldn't read /proc/self/task/5360/stack)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::StoreValue(art::RegLocation, art::RegLocation)+362 [0xb6dc70f7] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::GenSget(unsigned int, art::RegLocation, bool, bool)+484 [0xb6dbf0c9] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CompileDalvikInstruction(art::MIR*, art::BasicBlock*, art::LIR*)+2204 [0xb6dcf62d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::MethodBlockCodeGen(art::BasicBlock*)+204 [0xb6dd03cd] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::MethodMIR2LIR()+110 [0xb6dd0597] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+74 [0xb6dbe82b] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eb1] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+34 [0xb6de8253] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1200 [0xb6dfa471] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+566 [0xb6dfa93f] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPool::Wait(art::Thread*, bool, bool)+136 [0xb6d03bb5] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6df2a07] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::Compile(_jobject*, std::vector<art::DexFile const*, std::allocator<art::DexFile const*> > const&, art::ThreadPool&, art::base::TimingLogger&)+224 [0xb6df9995] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileAll(_jobject*, std::vector<art::DexFile const*, std::allocator<art::DexFile const*> > const&, art::base::TimingLogger&)+60 [0xb6df9d39] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6f450e7] (dex2oat)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6f480fd] (dex2oat)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __libc_init+50 [0xb6ea534b] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6f419f0] (dex2oat)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 0" prio=5 tid=2 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b90430
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5361 nice=0 cgrp=default sched=0/0 handle=0xb8b8ff70
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4195403071 327270940 31708 ) utm=298 stm=121 core=1 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb51b8000-0xb51bc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   kernel: (couldn't read /proc/self/task/5361/stack)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: std::vector<unsigned int, std::allocator<unsigned int> >::_M_insert_overflow(unsigned int*, unsigned int const&, std::__true_type const&, unsigned int, bool)+226 [0xb6db7247] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CreateMappingTables()+288 [0xb6dbda0d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::AssembleLIR()+370 [0xb6dbe7c7] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+40 [0xb6dbe809] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eb1] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+34 [0xb6de8253] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1200 [0xb6dfa471] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+730 [0xb6dfa9e3] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+44 [0xb6d037c1] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+40 [0xb6d03d01] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 2" prio=5 tid=3 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b910b0
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5363 nice=0 cgrp=default sched=0/0 handle=0xb8b90e68
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4224706748 281845724 32835 ) utm=292 stm=130 core=3 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb4fb8000-0xb4fbc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   kernel: (couldn't read /proc/self/task/5363/stack)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7e4b] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+34 [0xb6de8253] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1200 [0xb6dfa471] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+566 [0xb6dfa93f] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+44 [0xb6d037c1] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+40 [0xb6d03d01] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 1" prio=5 tid=4 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b91ab8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5362 nice=0 cgrp=default sched=0/0 handle=0xb8b901e8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4413047557 352854277 29459 ) utm=335 stm=106 core=0 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb50b8000-0xb50bc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Thread::DumpStack(std::ostream&) const+87 [0xb6cf7eac] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadList::DumpLocked(std::ostream&)+67 [0xb6d02e1c] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6cf00ee] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Runtime::Abort()+79 [0xb6cf05cc] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::LogMessage::~LogMessage()+505 [0xb6b9d93a] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::verifier::MethodVerifier::GetDexGcMap(art::MethodReference)+331 [0xb6d0d040] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CreateNativeGcMap()+59 [0xb6dbe4c4] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::AssembleLIR()+375 [0xb6dbe7cc] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+39 [0xb6dbe808] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eae] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+33 [0xb6de8252] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1197 [0xb6dfa46e] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+729 [0xb6dfa9e2] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31a] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+41 [0xb6d037be] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+37 [0xb6d03cfe] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/libc    ( 5360): Fatal signal 6 (SIGABRT) at 0x000014f0 (code=-6), thread 5362 (Thread pool wor)
F/dex2oat ( 5360): art/runtime/verifier/method_verifier.cc:4119] Check failed: it != dex_gc_maps_->end() Didn't find GC map for: void com.whatsapp.up.<init>(com.whatsapp.App, int)
What dex2oat errors is everyone else seeing?
 
  • Like
Reactions: edeprada

GTMoraes

Senior Member
Dec 3, 2010
1,553
337
0
Recife
Bug 61916 has some additional details:



Based on this description I suspected that the error was being thrown by art/runtime/verifier/register_line.cc:

Code:
void RegisterLine::PopMonitor(uint32_t reg_idx) {
  const RegType& reg_type = GetRegisterType(reg_idx);
  if (!reg_type.IsReferenceTypes()) {
    verifier_->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "monitor-exit on non-object (" << reg_type << ")";
  } else if (monitors_.empty()) {
    verifier_->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "monitor-exit stack underflow";
In Dalvik, gDvm.monitorVerification defaults to false, causing monitorEntries to stay NULL, so the enter/exit matching described by the Google engineer is disabled (as expected on Dalvik) unless Xverifyopt:checkmon is used:

Code:
void handleMonitorExit(RegisterLine* workLine, u4 regIdx, u4 insnIdx,
    VerifyError* pFailure)
{
    if (!regTypeIsReference(getRegisterType(workLine, regIdx))) {
        LOG_VFY("VFY: monitor-exit on non-object");
        *pFailure = VERIFY_ERROR_GENERIC;
        return;
    }

    if (workLine->monitorEntries == NULL) {
        /* should only be true if monitor verification is disabled */
        assert(!gDvm.monitorVerification);
        return;
    }
But the error I saw when I actually tried to install the latest WhatsApp didn't appear to be "monitor-exit"-related, so I am puzzled:

Code:
I/ActivityManager(  611): START u0 {dat=file:///storage/emulated/0/.nogapps/blankstore/com.whatsapp/APP-48348.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras)} from pid 2057
I/art     (  611): Heap trim of managed (duration=5.292552ms, advised=1548KB) and native (duration=1.301927ms, advised=20KB) heaps. Managed heap utilization of 65%.
W/ActivityManager(  611): No content provider found for permission revoke: file:///storage/emulated/0/.nogapps/blankstore/com.whatsapp/APP-48348.apk
I/ActivityManager(  611): Displayed com.android.packageinstaller/.InstallAppProgress: +74ms
W/ActivityManager(  611): No content provider found for permission revoke: file:///storage/emulated/0/.nogapps/blankstore/com.whatsapp/APP-48348.apk
I/PackageManager(  611): Copying native libraries to /data/app-lib/vmdl-995514050
W/PackageManager(  611): Package com.whatsapp desires unavailable shared library com.google.android.maps; ignoring!
W/PackageManager(  611): Package com.whatsapp desires unavailable shared library com.sec.android.app.multiwindow; ignoring!
I/PackageManager(  611): Running dexopt on: com.whatsapp
I/dex2oat ( 5360): dex2oat: /data/dalvik-cache/[email protected]@[email protected]
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawDividersHorizontal(android.graphics.Canvas) would have incorrectly overridden the package-private method in android.widget.LinearLayout
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawDividersVertical(android.graphics.Canvas) would have incorrectly overridden the package-private method in android.widget.LinearLayout
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawHorizontalDivider(android.graphics.Canvas, int) would have incorrectly overridden the package-private method in android.widget.LinearLayout
W/dex2oat ( 5360): Before Android 4.1, method void com.actionbarsherlock.internal.widget.IcsLinearLayout.drawVerticalDivider(android.graphics.Canvas, int) would have incorrectly overridden the package-private method in android.widget.LinearLayout
I/dex2oat ( 5360): Verification error in void android.support.v4.i.a(int)
E/dex2oat ( 5360): Verification failed on class android.support.v4.i in /data/app/com.whatsapp-1.apk because: Verifier rejected class android.support.v4.i due to bad method void android.support.v4.i.a(int)
W/dex2oat ( 5360): Verification of void com.whatsapp.App.<clinit>() took 196.769322ms
I/dex2oat ( 5360): Verification error in void com.whatsapp.gallerypicker.tc.run()
E/dex2oat ( 5360): Verification failed on class com.whatsapp.gallerypicker.tc in /data/app/com.whatsapp-1.apk because: Verifier rejected class com.whatsapp.gallerypicker.tc due to bad method void com.whatsapp.gallerypicker.tc.run()
W/dex2oat ( 5360): Verification of void com.whatsapp.seb.<clinit>() took 294.038228ms
I/dex2oat ( 5360): Verification error in boolean android.support.v4.app.eb.d()
E/dex2oat ( 5360): Verification failed on class android.support.v4.app.eb in /data/app/com.whatsapp-1.apk because: Verifier rejected class android.support.v4.app.eb due to bad method boolean android.support.v4.app.eb.d()
E/dex2oat ( 5360): Rejecting class com.whatsapp.gallerypicker.db that attempts to sub-class erroneous class android.support.v4.i in /data/app/com.whatsapp-1.apk
E/dex2oat ( 5360): Rejecting class com.whatsapp.up that attempts to sub-class erroneous class android.support.v4.i in /data/app/com.whatsapp-1.apk
W/dex2oat ( 5360): Verification of void ud.<clinit>() took 798.117343ms
F/dex2oat ( 5360): art/runtime/verifier/method_verifier.cc:4119] Check failed: it != dex_gc_maps_->end() Didn't find GC map for: void com.whatsapp.gallerypicker.db.<init>(int)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] Runtime aborting...
F/dex2oat ( 5360): art/runtime/runtime.cc:203] Aborting thread:
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 1" prio=5 tid=4 Runnable (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b91ab8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5362 nice=0 cgrp=default sched=0/0 handle=0xb8b901e8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4385870832 340327663 29166 ) utm=333 stm=105 core=1 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb50b8000-0xb50bc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Thread::DumpStack(std::ostream&) const+87 [0xb6cf7eac] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6cf003c] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Runtime::Abort()+79 [0xb6cf05cc] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::LogMessage::~LogMessage()+505 [0xb6b9d93a] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::verifier::MethodVerifier::GetDexGcMap(art::MethodReference)+331 [0xb6d0d040] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CreateNativeGcMap()+59 [0xb6dbe4c4] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::AssembleLIR()+375 [0xb6dbe7cc] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+39 [0xb6dbe808] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eae] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+33 [0xb6de8252] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1197 [0xb6dfa46e] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+729 [0xb6dfa9e2] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31a] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+41 [0xb6d037be] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+37 [0xb6d03cfe] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] Dumping all threads without appropriate locks held: thread list lock mutator lock
F/dex2oat ( 5360): art/runtime/runtime.cc:203] All threads:
F/dex2oat ( 5360): art/runtime/runtime.cc:203] DALVIK THREADS (4):
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "main" prio=5 tid=1 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8a757b0
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5360 nice=0 cgrp=default sched=0/0 handle=0xb6f3c154
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4383188388 278452786 33649 ) utm=330 stm=108 core=2 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xbe148000-0xbe14c000 stackSize=8MB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   kernel: (couldn't read /proc/self/task/5360/stack)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::StoreValue(art::RegLocation, art::RegLocation)+362 [0xb6dc70f7] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::GenSget(unsigned int, art::RegLocation, bool, bool)+484 [0xb6dbf0c9] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CompileDalvikInstruction(art::MIR*, art::BasicBlock*, art::LIR*)+2204 [0xb6dcf62d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::MethodBlockCodeGen(art::BasicBlock*)+204 [0xb6dd03cd] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::MethodMIR2LIR()+110 [0xb6dd0597] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+74 [0xb6dbe82b] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eb1] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+34 [0xb6de8253] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1200 [0xb6dfa471] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+566 [0xb6dfa93f] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPool::Wait(art::Thread*, bool, bool)+136 [0xb6d03bb5] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6df2a07] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::Compile(_jobject*, std::vector<art::DexFile const*, std::allocator<art::DexFile const*> > const&, art::ThreadPool&, art::base::TimingLogger&)+224 [0xb6df9995] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileAll(_jobject*, std::vector<art::DexFile const*, std::allocator<art::DexFile const*> > const&, art::base::TimingLogger&)+60 [0xb6df9d39] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6f450e7] (dex2oat)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6f480fd] (dex2oat)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __libc_init+50 [0xb6ea534b] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6f419f0] (dex2oat)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 0" prio=5 tid=2 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b90430
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5361 nice=0 cgrp=default sched=0/0 handle=0xb8b8ff70
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4195403071 327270940 31708 ) utm=298 stm=121 core=1 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb51b8000-0xb51bc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   kernel: (couldn't read /proc/self/task/5361/stack)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: std::vector<unsigned int, std::allocator<unsigned int> >::_M_insert_overflow(unsigned int*, unsigned int const&, std::__true_type const&, unsigned int, bool)+226 [0xb6db7247] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CreateMappingTables()+288 [0xb6dbda0d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::AssembleLIR()+370 [0xb6dbe7c7] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+40 [0xb6dbe809] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eb1] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+34 [0xb6de8253] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1200 [0xb6dfa471] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+730 [0xb6dfa9e3] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+44 [0xb6d037c1] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+40 [0xb6d03d01] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 2" prio=5 tid=3 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b910b0
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5363 nice=0 cgrp=default sched=0/0 handle=0xb8b90e68
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4224706748 281845724 32835 ) utm=292 stm=130 core=3 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb4fb8000-0xb4fbc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   kernel: (couldn't read /proc/self/task/5363/stack)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7e4b] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+34 [0xb6de8253] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1200 [0xb6dfa471] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+566 [0xb6dfa93f] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31d] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+44 [0xb6d037c1] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+40 [0xb6d03d01] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] "Thread pool worker 1" prio=5 tid=4 Native (still starting up)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | group="" sCount=0 dsCount=0 obj=0x00000000 self=0xb8b91ab8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | sysTid=5362 nice=0 cgrp=default sched=0/0 handle=0xb8b901e8
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | state=R schedstat=( 4413047557 352854277 29459 ) utm=335 stm=106 core=0 HZ=100
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   | stack=0xb50b8000-0xb50bc000 stackSize=1024KB
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Thread::DumpStack(std::ostream&) const+87 [0xb6cf7eac] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadList::DumpLocked(std::ostream&)+67 [0xb6d02e1c] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6cf00ee] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Runtime::Abort()+79 [0xb6cf05cc] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::LogMessage::~LogMessage()+505 [0xb6b9d93a] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::verifier::MethodVerifier::GetDexGcMap(art::MethodReference)+331 [0xb6d0d040] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::CreateNativeGcMap()+59 [0xb6dbe4c4] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::AssembleLIR()+375 [0xb6dbe7cc] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::Mir2Lir::Materialize()+39 [0xb6dbe808] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6de7eae] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ArtQuickCompileMethod+33 [0xb6de8252] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileMethod(art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, _jobject*, art::DexFile const&, art::DexToDexCompilationLevel)+1197 [0xb6dfa46e] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::CompilerDriver::CompileClass(art::ParallelCompilationManager const*, unsigned int)+729 [0xb6dfa9e2] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: ??? [0xb6def31a] (libart-compiler.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Run()+41 [0xb6d037be] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: art::ThreadPoolWorker::Callback(void*)+37 [0xb6d03cfe] (libart.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: __thread_entry+72 [0xb6ea4170] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   native: pthread_create+240 [0xb6ea4308] (libc.so)
F/dex2oat ( 5360): art/runtime/runtime.cc:203]   (no managed stack frames)
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/dex2oat ( 5360): art/runtime/runtime.cc:203] 
F/libc    ( 5360): Fatal signal 6 (SIGABRT) at 0x000014f0 (code=-6), thread 5362 (Thread pool wor)
F/dex2oat ( 5360): art/runtime/verifier/method_verifier.cc:4119] Check failed: it != dex_gc_maps_->end() Didn't find GC map for: void com.whatsapp.up.<init>(com.whatsapp.App, int)
What dex2oat errors is everyone else seeing?
The problem is that we may be looking at the wrong part of the code.
It may be a ART bug or WhatsApp "induced bug", conflicting with something. Few other apps (ePSXe, DraStic, FF Dimensioins, 4, and 5 (FF3 works)) also crashes with ART. They might crash for different reasons or they may crash for the same reason, so it may or may not help pinpointing the problem debugging them


Older versions of WhatsApp works. I've eyeballed both apk's and I think it may be related to the added libs, but I'm not too sure. You might try installing it and see how the log goes. I'm a begginer with pretty much no knowledge on coding so I'm shooting in the dark here.
It's the WhatsApp 2.11.42 btw
 
Last edited:

luiseteyo

Senior Member
Oct 24, 2011
2,457
2,220
0
Madrid
The problem is that we may be looking at the wrong part of the code.
It may be a ART bug or WhatsApp "induced bug", conflicting with something. Few other apps (ePSXe, DraStic, FF Dimensioins, 4, and 5 (FF3 works)) also crashes with ART. They might crash for different reasons or they may crash for the same reason, so it may or may not help pinpointing the problem debugging them


Older versions of WhatsApp works. I've eyeballed both apk's and I think it may be related to the added libs, but I'm not too sure. You might try installing it and see how the log goes. I'm a begginer with pretty much no knowledge on coding so I'm shooting in the dark here.
It's the WhatsApp 2.11.42 btw
Google said in bug report that was an Android ART bug related, not whatsapp's
 
  • Like
Reactions: chrone

cernekee

Senior Member
Jun 2, 2013
186
423
0
Few other apps (ePSXe, DraStic, FF Dimensioins, 4, and 5 (FF3 works)) also crashes with ART. They might crash for different reasons or they may crash for the same reason, so it may or may not help pinpointing the problem debugging them
Could you please post the dex2oat logcats, taken immediately after installation fails? This helps in identifying a pattern and seeing whether different packages are showing different symptoms.

Also, if there are apps which fail when matching up monitor-exit's, it may be relatively straightforward to disable the checks in dex2oat that are causing problems.

Older versions of WhatsApp works. I've eyeballed both apk's and I think it may be related to the added libs, but I'm not too sure.
Comment #27 from the bug report addresses this:

Google said:
The libs having nothing to do with it. The app is failing to install due to a legitimate bytecode verification error. Our workaround is to disable the verification (which is what Dalvik was doing).
FWIW I run plenty of other packages with native libraries under ART.
 

GTMoraes

Senior Member
Dec 3, 2010
1,553
337
0
Recife
Could you please post the dex2oat logcats, taken immediately after installation fails? This helps in identifying a pattern and seeing whether different packages are showing different symptoms.
I'd love to, but I'm using a slightly modded ROM (SlimKat) which enabling ART seems to bootloop. :(
 
  • Like
Reactions: mussi96

cernekee

Senior Member
Jun 2, 2013
186
423
0
Per the hints from Google, I was able to get current versions of WhatsApp to install under ART by overriding one of the verifier checks.

Here is the procedure to replace libart.so and clean up any partially-installed WhatsApp package, tested on a Nexus 5 running AOSP 4.4:

Code:
adb root
adb remount
adb shell "rm -rf /data/data/com.whatsapp"
adb pull /system/lib/libart.so libart.so.bak
adb push libart.so /system/lib/
If something goes wrong it may well result in a bootloop, so if you need to restore from backup, boot to recovery and use:

Code:
adb shell "mount /system"
adb push libart.so.bak /system/lib/libart.so
Source changes: https://github.com/cernekee/android_art/commit/fc2ac71d0d9e147c607bff9371fe2ef25d8470af

Note that I have not tested this on a Nexus 4 (despite this thread's current location).

Update 2013/12/07: Google's official fix is posted here. This was included in KK 4.4.1.
 

Attachments

Last edited:

alienmind

Senior Member
Mar 4, 2011
1,890
1,616
0
Colmenar Viejo
Everything working OK with the new libart.so version!

Out of curiosity, did you manually patched libart.so or it's source patched from AOSP? I was looking into the MonitorEnter / MonitorExit issue myself from the Google hints...
 

cernekee

Senior Member
Jun 2, 2013
186
423
0
Out of curiosity, did you manually patched libart.so or it's source patched from AOSP?
Patched the source and rebuilt

Prior to making the change I had added some instrumentation to figure out why it was aborting, since the text sent to MethodVerifier::Fail() wasn't getting output anywhere (even in the "dex2oatd" debug builds).

BTW, to run it manually, you can do something like:

Code:
cd /data/local/tmp
dex2oat --zip-location=whatsapp.apk --zip-fd=3 --oat-file=test.oat 3< whatsapp.apk
while watching logcat in another window.