rovo89 / android_art

Android ART with modifications for the Xposed framework.
Other
371 stars 211 forks source link

Yandexbus app can't start after installing xposed v79 #26

Closed tema-borisov closed 8 years ago

tema-borisov commented 8 years ago

app: https://play.google.com/store/apps/details?id=ru.yandex.yandexbus works fine on xposed v78-sdk23-arm64, won't start with v79-sdk23-arm64

Other app from the same developer can't display maps in interface after updating to v79 https://play.google.com/store/apps/details?id=ru.yandex.taxi

This probably means that there are some issue with native libs these apps are using.

I'm on Nexus 6P 6.0.1, stock rom. Checked yandexbus on friends Nexus 5X 6.0.1 without exposed - it works there.

mementor commented 8 years ago

No problems with xposed-v79-sdk22-arm without any installed modules, btw. Both apps works just fine.

larionov commented 8 years ago

Logcat of starting yandex maps on Nexus 6P with v80-sdk23-arm64: http://pastebin.com/SxHjPNuu

ostrosablin commented 8 years ago

@rovo89 In MyAndroidTools issue you said:

I can reproduce the yandexbus issue also on the Nexus 5 (arm) 6.0.1, but unfortunately, there isn't any clear error message in the log, no real crash.

I've noticed that behavior, too. However, it's possible to get real crash output. You just have to stop yandexbus app from settings, then on next launch attempt, it will show "application stopped" dialog, offering to send crash report. Also, in logcat there would be "beginning of crash" line.

As for tcmclient.jar that I've mentioned in my duplicate issue: sorry, my bad. I've double-checked output and that line appears even on clean CM13, so it's unrelated. I've also checked if rebooting with modules disabled will help, but it still crashes yandexbus.

Alexey71 commented 8 years ago

Yandex maps crash v80, v78 fine. Lenovo k3 note - Android 6 03-23 00:54:08.375 E/DEBUG ( 258): AM write failed: Broken pipe 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] Throwing new exception 'Attempt to read from field 'java.lang.ThreadLocal$Values java.lang.Thread.localValues' on a null object reference' with unexpected pending exception: java.lang.NullPointerException: Attempt to read from field 'java.lang.ThreadLocal$Values java.lang.Thread.localValues' on a null object reference 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] at java.lang.ThreadLocal$Values java.lang.ThreadLocal.values(java.lang.Thread) (ThreadLocal.java:121) 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] at java.lang.Object java.lang.ThreadLocal.get() (ThreadLocal.java:54) 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] at java.lang.String java.lang.IntegralToString.convertInt(java.lang.AbstractStringBuilder, int) (IntegralToString.java:216) 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] at void java.lang.IntegralToString.appendInt(java.lang.AbstractStringBuilder, int) (IntegralToString.java:173) 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] at java.lang.StringBuilder java.lang.StringBuilder.append(int) (StringBuilder.java:139) 03-23 01:11:20.302 F/art (17789): art/runtime/thread.cc:1432] at java.lang.String java.lang.StackTraceElement.toString() (StackTraceElement.java:226)

watchmakerful commented 8 years ago

Yandex Maps don't work too on all my devices regardless of xposed version.

wanam commented 8 years ago

Hi @rovo89 ,

I'm just guessing, but did you try to add back the old signature of CompilerDriver::IsFastInvoke method that was changed here https://github.com/rovo89/android_art/commit/65cb87a32ad00ad8bb1c9283eb2d0853a9f6e089 .

I think this is the most relevant change that could break any possible dependency of this app native code with the compiler:

    dd23a37c  dd774724  /data/app/ru.yandex.yandexmaps-1/oat/arm/base.odex
    dd23a384  f4b123bb  /system/lib/libart.so (art::ClassLinker::ResolveMethod(art::DexFile const&, unsigned int, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>, art::ArtMethod*, art::InvokeType)+246)

I can give it try if you didn't already.

rovo89 commented 8 years ago

@wanam I haven't checked this, and I'll be busy with other stuff in the next time, so if you could give it a try, that would be great.

wanam commented 8 years ago

Tried to add back the old signature that invokes the new one with "is_quickened=false", now i can see the map before it crashes, before it used to crash on the splash screen.

A minor improvement but sadly the same error remains:

E art : No implementation found for void com.yandex.metrica.impl.NativeCrashesHelper.setUpNativeUncaughtExceptionHandler(java.lang.String) (tried Java_com_yandex_metrica_impl_NativeCrashesHelper_setUpNativeUncaughtExceptionHandler and Java_com_yandex_metrica_impl_NativeCrashesHelper_setUpNativeUncaughtExceptionHandler__Ljava_lang_String_2)

johninthehouse commented 8 years ago

Greetings

Having the same issues, Yandex Maps is not working while Xposed v80 installed on device. Device: M8 - Marshmallow 6.0

wanam commented 8 years ago

The latest wip change (https://github.com/wanam/android_art/commit/93eccd115adcc11e65238e5d31a9b9e6fc733287) seems to be the culprit, reverting this change fixes Yandex maps app. You can give it a try here: https://www.androidfilehost.com/?w=files&flid=53344

Alexey71 commented 8 years ago

Lenovo k3 note, android 6 - x64. Work!. Thx

ostrosablin commented 8 years ago

Many, many thanks! It works on my Nexus 5 running CM13.

rovo89 commented 8 years ago

OK, this is an AOSP change for 6.0.1 though (which explains why it worked for 6.0). Maybe I have to double-check whether it still exists in the latest Android releases. Or maybe it conflicts with some Xposed changes?

Alexey71 commented 8 years ago

In version 82 have not added a fix?

dsurnov commented 8 years ago

Freshly installed v83 - not working. Nexus 5, 6.0.1 stock

ostrosablin commented 8 years ago

Looks like we have to use wanam's build for a while, until rovo89 accepts changes into the upstream.

rovo89 commented 8 years ago

Well, I'm a bit hesitant because the fix/workaround is to revert a security-related commit that Google added in 6.0.1. I would at least need to understand why that app is crashing, but I couldn't analyze it because don't give this issue much priority. It might as well be an issue in the app itself.

p4nz commented 8 years ago

Same issue with v83 on 1+1 running 6.0.1.

dsurnov commented 8 years ago

Wrote about the issue to yandex, but they have simply responded, that they can not guarantee correct work of their apps on rooted devices. I guess that means that they will not analise the problem too.

ostrosablin commented 8 years ago

It's a sad state of affairs. I'm sure that many people from mobile development department of Yandex itself have rooted phones and some might even have xposed installed. I understand they can't make apps usable on all devices, but rooted devices are so common.

watchmakerful commented 8 years ago

Wrote about the issue to yandex, but they have simply responded, that they can not guarantee correct work of their apps on rooted devices. Reply them that Xposed does not necessarily need root for running, it needs root only for installing.

2016-05-01 11:28 GMT+03:00 Ostrosablin Vitaly notifications@github.com:

It's a sad state of affairs. I'm sure that many people from mobile development department of Yandex itself have rooted phones and some might even have xposed installed. I understand they can't make apps usable on all devices, but rooted devices are so common.

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/rovo89/android_art/issues/26#issuecomment-216025344

rovo89 commented 8 years ago

Ok, I decided to revert the AOSP commit, so this should be fixed in v84.

Several reasons:

Therefore, this can hardly be a super-critical security fix and it should be OK to revert it.