Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android 8.0 Oreo Support #5

Closed
4 tasks done
sweisgerber-dev opened this issue Sep 29, 2017 · 9 comments
Closed
4 tasks done

Android 8.0 Oreo Support #5

sweisgerber-dev opened this issue Sep 29, 2017 · 9 comments
Assignees

Comments

@sweisgerber-dev
Copy link
Member

sweisgerber-dev commented Sep 29, 2017

Implementation in:

Affected Projects

  • ARTist
  • art
  • ArtistGui
  • dexterous
@sweisgerber-dev
Copy link
Member Author

Notes to self:

  • art::HGraphBuilder
  • art::HInstructionBuilder

@sweisgerber-dev
Copy link
Member Author

  • Compilation of dex2artist suceeds
  • dex2artist starts with adapted commandline flags and proper arm64 compilation
  • App starts and injects a few tracelogs, but crashes (controlled), because of an pending exception:

compiler/driver/compiler_driver.cc:663

  if (self->IsExceptionPending()) {
    ScopedObjectAccess soa(self);
    LOG(FATAL) << "Unexpected exception compiling: " << dex_file.PrettyMethod(method_idx) << "\n"
        << self->GetException()->Dump();
  }

de.heise.android.heiseonlineapp

14:57|weisgerber@dronebook ~/workspace/artist/ArtistGui $ ndk-stack -sym debug/android-26.full/ -dump checkme_06.log  
********** Crash dump: **********
Build fingerprint: 'google/sailfish/sailfish:8.0.0/OPR3.170623.007/4286350:user/release-keys'
pid: 10725, tid: 10730, name: Compiler driver  >>> /data/user/0/saarland.cispa.artist.artistgui/files/artist/dex2oat <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Stack frame #00 pc 0004aa9c  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine tgkill at /proc/self/cwd/bionic/libc/arch-arm/syscalls/tgkill.S:10
Stack frame #01 pc 0001a3c3  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine abort at bionic/libc/bionic/abort.cpp:49
Stack frame #02 pc 00339397  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::Runtime::Abort(char const*) at art/runtime/runtime.cc:522
Stack frame #03 pc 0033998f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::Runtime::Aborter(char const*) at art/runtime/runtime.cc:2332
Stack frame #04 pc 003f11e1  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine std::__1::function<void (char const*)>::operator()(char const*) const at external/libcxx/include/functional:1915 (discriminator 1)
Stack frame #05 pc 000e2d1f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompileMethod(art::Thread*, art::CompilerDriver*, art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, art::Handle<art::mirror::ClassLoader>, art::DexFile const&, art::optimizer::DexToDexCompilationLevel, bool, art::Handle<art::mirror::DexCache>) at art/compiler/driver/compiler_driver.cc:663 (discriminator 12)
Stack frame #06 pc 000ecee9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompileClassVisitor::Visit(unsigned int) at art/compiler/driver/compiler_driver.cc:2630 (discriminator 1)
Stack frame #07 pc 000e9887  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::ParallelCompilationManager::ForAllClosure::Run(art::Thread*) at art/compiler/driver/compiler_driver.cc:1613
Stack frame #08 pc 0036c051  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::ThreadPoolWorker::Run() at art/runtime/thread_pool.cc:83
Stack frame #09 pc 0036bc71  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::ThreadPoolWorker::Callback(void*) at art/runtime/thread_pool.cc:99
Stack frame #10 pc 00047dbf  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine __pthread_start(void*) at bionic/libc/bionic/pthread_create.cpp:215
Stack frame #11 pc 0001af7f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine __start_thread at bionic/libc/bionic/clone.cpp:46
14:57|weisgerber@dronebook ~/workspace/artist/ArtistGui $

de.wetteronline.wetterapp

14:30|weisgerber@dronebook ~/workspace/artist/ArtistGui $ ndk-stack -sym debug/android-26/ -dump checkme_05.log  
********** Crash dump: **********
Build fingerprint: 'google/sailfish/sailfish:8.0.0/OPR3.170623.007/4286350:user/release-keys'
pid: 10239, tid: 10239, name: dex2artist  >>> /data/user/0/saarland.cispa.artist.artistgui/files/artist/dex2oat <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Stack frame #00 pc 0004aa9c  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine tgkill at /proc/self/cwd/bionic/libc/arch-arm/syscalls/tgkill.S:10
Stack frame #01 pc 0001a3c3  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine abort at bionic/libc/bionic/abort.cpp:49
Stack frame #02 pc 00339397  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::Runtime::Abort(char const*) at art/runtime/runtime.cc:522
Stack frame #03 pc 0033998f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::Runtime::Aborter(char const*) at art/runtime/runtime.cc:2332
Stack frame #04 pc 003f11e1  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine std::__1::function<void (char const*)>::operator()(char const*) const at external/libcxx/include/functional:1915 (discriminator 1)
Stack frame #05 pc 000e2d1f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompileMethod(art::Thread*, art::CompilerDriver*, art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, art::Handle<art::mirror::ClassLoader>, art::DexFile const&, art::optimizer::DexToDexCompilationLevel, bool, art::Handle<art::mirror::DexCache>) at art/compiler/driver/compiler_driver.cc:663 (discriminator 12)
Stack frame #06 pc 000ecfd9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompileClassVisitor::Visit(unsigned int) at art/compiler/driver/compiler_driver.cc:2655 (discriminator 1)
Stack frame #07 pc 000e9887  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::ParallelCompilationManager::ForAllClosure::Run(art::Thread*) at art/compiler/driver/compiler_driver.cc:1613
Stack frame #08 pc 0036c8e5  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::ThreadPool::Wait(art::Thread*, bool, bool) at art/runtime/thread_pool.cc:227
Stack frame #09 pc 000e53b5  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::ParallelCompilationManager::ForAll(unsigned int, unsigned int, art::CompilationVisitor*, unsigned int) at art/compiler/driver/compiler_driver.cc:1589
Stack frame #10 pc 000e0ba9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompilerDriver::CompileDexFile(_jobject*, art::DexFile const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::ThreadPool*, unsigned int, art::TimingLogger*) at art/compiler/driver/compiler_driver.cc:2685 (discriminator 1)
Stack frame #11 pc 000df2dd  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompilerDriver::CompileAll(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::TimingLogger*) at art/compiler/driver/compiler_driver.cc:424
Stack frame #12 pc 000e1655  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompilerDriver::CompileAll(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::VdexFile*, art::TimingLogger*) at art/compiler/driver/compiler_driver.cc:450
Stack frame #13 pc 00018155  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat: Routine art::Dex2Oat::Compile() at art/dex2oat/dex2oat.cc:1801 (discriminator 2)
Stack frame #14 pc 00008dbb  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat: Routine art::CompileApp(art::Dex2Oat&) at art/dex2oat/dex2oat.cc:2920
Stack frame #15 pc 00017d45  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine __libc_init at bionic/libc/bionic/libc_init_dynamic.cpp:114
Stack frame #16 pc 000081e4  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat: Routine _start at libgcc2.c:?



14:30|weisgerber@dronebook ~/workspace/artist/ArtistGui $ ndk-stack -sym /home/weisgerber/mount/colossus04/weisgerber/aosp/aosp_8.0.0_r9_arm-eng/out/target/product/generic_arm64/obj/lib/ -dump checkme_05.log  
********** Crash dump: **********
Build fingerprint: 'google/sailfish/sailfish:8.0.0/OPR3.170623.007/4286350:user/release-keys'
pid: 10239, tid: 10239, name: dex2artist  >>> /data/user/0/saarland.cispa.artist.artistgui/files/artist/dex2oat <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Stack frame #00 pc 0004aa9c  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine __strtodg at sfp-exceptions.c:?
Stack frame #01 pc 0001a3c3  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine ??
??:0
Stack frame #02 pc 00339397  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::JNI::SetDoubleField(_JNIEnv*, _jobject*, _jfieldID*, double) at unwind-dw2-fde-dip.c:?
Stack frame #03 pc 0033998f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::JNI::GetStaticMethodID(_JNIEnv*, _jclass*, char const*, char const*) at unwind-dw2-fde-dip.c:?
Stack frame #04 pc 003f11e1  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine std::__1::__function::__func<art::CmdlineParser<art::RuntimeArgumentMap, art::RuntimeArgumentMap::Key>::ArgumentBuilder<art::JDWP::JdwpOptions>::ArgumentBuilder(art::CmdlineParser<art::RuntimeArgumentMap, art::RuntimeArgumentMap::Key>::Builder&, std::__1::shared_ptr<art::CmdlineParser<art::RuntimeArgumentMap, art::RuntimeArgumentMap::Key>::SaveDestination>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, art::JDWP::JdwpOptions& ()>::__clone() const at unwind-dw2-fde-dip.c:?
Stack frame #05 pc 000e2d1f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #06 pc 000ecfd9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #07 pc 000e9887  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #08 pc 0036c8e5  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::MemMap::AlignBy(unsigned long) at ??:?
Stack frame #09 pc 000e53b5  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #10 pc 000e0ba9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #11 pc 000df2dd  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #12 pc 000e1655  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine ??
??:0
Stack frame #13 pc 00018155  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat
Stack frame #14 pc 00008dbb  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat
Stack frame #15 pc 00017d45  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine ??
??:0
Stack frame #16 pc 000081e4  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat

14:45|weisgerber@dronebook ~/workspace/artist/ArtistGui $ ndk-stack -sym debug/android-26.full/ -dump checkme_05.log  
********** Crash dump: **********
Build fingerprint: 'google/sailfish/sailfish:8.0.0/OPR3.170623.007/4286350:user/release-keys'
pid: 10239, tid: 10239, name: dex2artist  >>> /data/user/0/saarland.cispa.artist.artistgui/files/artist/dex2oat <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Stack frame #00 pc 0004aa9c  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine tgkill at /proc/self/cwd/bionic/libc/arch-arm/syscalls/tgkill.S:10
Stack frame #01 pc 0001a3c3  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine abort at bionic/libc/bionic/abort.cpp:49
Stack frame #02 pc 00339397  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::Runtime::Abort(char const*) at art/runtime/runtime.cc:522
Stack frame #03 pc 0033998f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::Runtime::Aborter(char const*) at art/runtime/runtime.cc:2332
Stack frame #04 pc 003f11e1  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine std::__1::function<void (char const*)>::operator()(char const*) const at external/libcxx/include/functional:1915 (discriminator 1)
Stack frame #05 pc 000e2d1f  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompileMethod(art::Thread*, art::CompilerDriver*, art::DexFile::CodeItem const*, unsigned int, art::InvokeType, unsigned short, unsigned int, art::Handle<art::mirror::ClassLoader>, art::DexFile const&, art::optimizer::DexToDexCompilationLevel, bool, art::Handle<art::mirror::DexCache>) at art/compiler/driver/compiler_driver.cc:663 (discriminator 12)
Stack frame #06 pc 000ecfd9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompileClassVisitor::Visit(unsigned int) at art/compiler/driver/compiler_driver.cc:2655 (discriminator 1)
Stack frame #07 pc 000e9887  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::ParallelCompilationManager::ForAllClosure::Run(art::Thread*) at art/compiler/driver/compiler_driver.cc:1613
Stack frame #08 pc 0036c8e5  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart.so: Routine art::ThreadPool::Wait(art::Thread*, bool, bool) at art/runtime/thread_pool.cc:227
Stack frame #09 pc 000e53b5  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::ParallelCompilationManager::ForAll(unsigned int, unsigned int, art::CompilationVisitor*, unsigned int) at art/compiler/driver/compiler_driver.cc:1589
Stack frame #10 pc 000e0ba9  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompilerDriver::CompileDexFile(_jobject*, art::DexFile const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::ThreadPool*, unsigned int, art::TimingLogger*) at art/compiler/driver/compiler_driver.cc:2685 (discriminator 1)
Stack frame #11 pc 000df2dd  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompilerDriver::CompileAll(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::TimingLogger*) at art/compiler/driver/compiler_driver.cc:424
Stack frame #12 pc 000e1655  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libart-compiler.so: Routine art::CompilerDriver::CompileAll(_jobject*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::VdexFile*, art::TimingLogger*) at art/compiler/driver/compiler_driver.cc:450
Stack frame #13 pc 00018155  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat: Routine art::Dex2Oat::Compile() at art/dex2oat/dex2oat.cc:1801 (discriminator 2)
Stack frame #14 pc 00008dbb  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat: Routine art::CompileApp(art::Dex2Oat&) at art/dex2oat/dex2oat.cc:2920
Stack frame #15 pc 00017d45  /data/data/saarland.cispa.artist.artistgui/files/artist/lib/libc.so: Routine __libc_init at bionic/libc/bionic/libc_init_dynamic.cpp:114
Stack frame #16 pc 000081e4  /data/data/saarland.cispa.artist.artistgui/files/artist/dex2oat: Routine _start at libgcc2.c:?

test-apks (access restricted)

@sweisgerber-dev
Copy link
Member Author

sweisgerber-dev commented Oct 10, 2017

Injected app run

10-10 15:37:28.165 17944 17944 E zygote64: expected 1 dex files but found 2

10-10 15:37:28.066  1081  1784 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=de.heise.android.heiseonlineapp/.ui.ChannelActivity bnds=[255,245][512,440]} from uid 10035
10-10 15:37:28.069   803  4088 I ACDB-LOADER: ACDB AFE returned = -19
10-10 15:37:28.069   803  4088 D hardware_info: hw_info_append_hw_type : device_name = speaker
10-10 15:37:28.069   803  4088 D audio_hw_primary: enable_snd_device: snd_device(2: speaker)
10-10 15:37:28.069   803  4088 D audio_hw_primary: enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback speaker
10-10 15:37:28.069   872   997 E ANDR-PERF-OPTSHANDLER: Warning: Resource [2, 0] not supported for core 1. Instead use resource for core 0
10-10 15:37:28.069   872   997 E ANDR-PERF-RESOURCEQS: Failed to apply optimization [2, 2, 0]
10-10 15:37:28.101  1081  2426 I ActivityManager: Start proc 17944:de.heise.android.heiseonlineapp/u0a150 for activity de.heise.android.heiseonlineapp/.ui.ChannelActivity
10-10 15:37:28.165 17944 17944 E zygote64: expected 1 dex files but found 2

Error Research

bool OatFileAssistant::DexChecksumUpToDate(const OatFile& file, std::string* error_msg) {
  (...)
  // art::OatFile
  uint32_t number_of_dex_files = file.GetOatHeader().GetDexFileCount();
  if (required_dex_checksums->size() != number_of_dex_files) {
  (...)
}
bool OatFileAssistant::DexChecksumUpToDate(const VdexFile& file, std::string* error_msg) {
  (...)
  // art::VdexFile
  uint32_t number_of_dex_files = file.GetHeader().GetNumberOfDexFiles();
  if (required_dex_checksums->size() != number_of_dex_files) {
  (...)
}

sweisgerber-dev added a commit to Project-ARTist/art that referenced this issue Oct 11, 2017
- is not in use atm, because injected apps were not executed anyway.
  See: Project-ARTist/meta#5 (comment)
- Android 8.0 Oreo injection works, but base.apk must get replaced with
  injected APK for it to work
@sweisgerber-dev
Copy link
Member Author

ARTist now works on Android 8.0 Oreo!

Fixed stuff:

Follow up work:

@simonbuehler
Copy link

hi, can artistgui and artist be tested on sdk27 (8.1) already - i found no releases anywhere?

@schrnz
Copy link
Member

schrnz commented Dec 4, 2018

Hi, the problem is that while we had a working version of ARTist for Oreo, it it is outdated by now and therefore lacks a lot of functionality that we currently only have for 7 & 7.1, such as the clean module structure and SDK.

Progress is tracked in Project-ARTist/art#18, but I am not aware of anyone currently working on this since we lack the man power =/

You can either try to use an older version of the whole art + ARTist + ArtistGui ensemble that supports Oreo or try to port it over. Let me know if the latter is something you would consider.

May I ask for your ARTist use case? Maybe I can help there...

@simonbuehler
Copy link

i just wanted to give it a test dumping the network traffic from pogo, actually trying to get raid data from pokemongo to create raid maps from it ;)
should the 8.0 branch work on 8.1 ?

@schrnz
Copy link
Member

schrnz commented Dec 4, 2018

Not sure if we tested that, maybe @sweisgerber-dev has some insights here?

Btw if this is just for testing, an emulator with Android 7.1 could as well?

@sweisgerber-dev
Copy link
Member Author

sweisgerber-dev commented Dec 4, 2018

@simonbuehler
I never tested it on 8.1 yet, but the possibility is pretty large that it works.
Be sure to enable the setting:

  • Replace base.apk

in ARTistGui's settings dialog if you try to test it on 8.1, because w/o it it definitely won't work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants