Skip to content

android-elevation property crashes on Android 5.0 devices #7532

@hosikiti

Description

@hosikiti

Environment

  • CLI: 5.4.2
  • Cross-platform modules: 5.4.3
  • Android Runtime: 5.4.0

Describe the bug
With recently added CSS property, android-elevation and android-dynamic-elevation-offset, an Android 5.0.2 (Lollipop) device crashes on app startup. The same app seems runs correctly on devices after Android 6.0. (we tested Android 6.0 and Android 9.0). And even on Android 5.1.1 device, the app works without crash. So we assume that there are some issues regarding to setting elevation on only Android 5.0.

To Reproduce
Just add following style to the Button element.

Button {
	background-color: transparent;
	margin: 0 0;
	padding: 0 0;
	android-elevation: 0;
	android-dynamic-elevation-offset: 0;
}

Expected behavior
No crash.

Crash log

07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: can't call void android.view.View.setTranslationZ(float) on null object
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]     in call to CallVoidMethodV
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]     from void android.animation.PropertyValuesHolder.nCallFloatMethod(java.lang.Object, long, float)
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   | group="main" sCount=0 dsCount=0 obj=0x73e69000 self=0xb5007800
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   | sysTid=27527 nice=0 cgrp=apps sched=0/0 handle=0xb6f49ec8
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   | state=R schedstat=( 19977186121 3784867579 13162 ) utm=1936 stm=61 core=3 HZ=100
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   | stack=0xbe41c000-0xbe41e000 stackSize=8MB
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   | held mutexes= "mutator lock"(shared held)
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #00 pc 00004640  /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #01 pc 00002e8d  /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #02 pc 0023f37f  /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*, BacktraceMap*)+70)
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #03 pc 00224b23  /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, BacktraceMap*) const+154)
07-17 12:23:38.146 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #04 pc 000afb7d  /system/lib/libart.so (art::JniAbort(char const*, char const*)+584)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #05 pc 000b02b5  /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #06 pc 000b0ce7  /system/lib/libart.so (art::ScopedCheck::CheckVirtualMethod(_jobject*, _jmethodID*)+418)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #07 pc 000ba8b7  /system/lib/libart.so (art::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+70)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #08 pc 0005d27f  /system/lib/libandroid_runtime.so (???)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   native: #09 pc 000718e5  /system/framework/arm/boot.oat (Java_android_animation_PropertyValuesHolder_nCallFloatMethod__Ljava_lang_Object_2JF+132)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.PropertyValuesHolder.nCallFloatMethod(Native method)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.java:38)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:1296)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:952)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.ValueAnimator.animationFrame(ValueAnimator.java:1207)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1248)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.ValueAnimator$AnimationHandler.doAnimationFrame(ValueAnimator.java:659)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.animation.ValueAnimator$AnimationHandler.run(ValueAnimator.java:682)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.view.Choreographer.doCallbacks(Choreographer.java:580)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.view.Choreographer.doFrame(Choreographer.java:549)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.os.Handler.handleCallback(Handler.java:739)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.os.Handler.dispatchMessage(Handler.java:95)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.os.Looper.loop(Looper.java:211)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at android.app.ActivityThread.main(ActivityThread.java:5335)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at java.lang.reflect.Method.invoke!(Native method)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at java.lang.reflect.Method.invoke(Method.java:372)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
07-17 12:23:38.151 27527-27527/? A/art: art/runtime/check_jni.cc:65] 
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290] Runtime aborting...
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290] Aborting thread:
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290] "main" prio=5 tid=1 Native
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   | group="" sCount=0 dsCount=0 obj=0x73e69000 self=0xb5007800
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   | sysTid=27527 nice=0 cgrp=apps sched=0/0 handle=0xb6f49ec8
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   | state=R schedstat=( 20005584092 3793574136 13227 ) utm=1938 stm=62 core=2 HZ=100
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   | stack=0xbe41c000-0xbe41e000 stackSize=8MB
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   | held mutexes= "abort lock" "mutator lock"(shared held)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #00 pc 00004640  /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #01 pc 00002e8d  /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #02 pc 0023f37f  /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*, BacktraceMap*)+70)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #03 pc 00224b23  /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, BacktraceMap*) const+154)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #04 pc 00214da5  /system/lib/libart.so (art::AbortState::DumpThread(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, art::Thread*)+24)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #05 pc 00215055  /system/lib/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+436)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #06 pc 00215229  /system/lib/libart.so (art::Runtime::Abort()+72)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #07 pc 000a65bb  /system/lib/libart.so (art::LogMessage::~LogMessage()+1322)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #08 pc 000afd5b  /system/lib/libart.so (art::JniAbort(char const*, char const*)+1062)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #09 pc 000b02b5  /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #10 pc 000b0ce7  /system/lib/libart.so (art::ScopedCheck::CheckVirtualMethod(_jobject*, _jmethodID*)+418)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #11 pc 000ba8b7  /system/lib/libart.so (art::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+70)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #12 pc 0005d27f  /system/lib/libandroid_runtime.so (???)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   native: #13 pc 000718e5  /system/framework/arm/boot.oat (Java_android_animation_PropertyValuesHolder_nCallFloatMethod__Ljava_lang_Object_2JF+132)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.PropertyValuesHolder.nCallFloatMethod(Native method)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.java:38)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:1296)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:952)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.ValueAnimator.animationFrame(ValueAnimator.java:1207)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1248)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.ValueAnimator$AnimationHandler.doAnimationFrame(ValueAnimator.java:659)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.animation.ValueAnimator$AnimationHandler.run(ValueAnimator.java:682)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.view.Choreographer.doCallbacks(Choreographer.java:580)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.view.Choreographer.doFrame(Choreographer.java:549)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.os.Handler.handleCallback(Handler.java:739)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.os.Handler.dispatchMessage(Handler.java:95)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.os.Looper.loop(Looper.java:211)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at android.app.ActivityThread.main(ActivityThread.java:5335)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at java.lang.reflect.Method.invoke!(Native method)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at java.lang.reflect.Method.invoke(Method.java:372)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290] Dumping all threads without appropriate locks held: thread list lock mutator lock
07-17 12:23:38.170 27527-27527/? A/art: art/runtime/runtime.cc:290] 
07-17 12:23:38.170 27527-27527/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 27527 (te.app.xz.local)

[Test Result]
Xperia Z3 SO-01G, Android 5.0.2 ==> CRASH
HTC Nexus 9, Android 5.0 => CRASH

Xperia Z5 SOV32, Android 5.1.1 => Works
Xperia Z5 Premium SO-03H, Android 6.0 => Works
Google Pixel 3, Android 9 => Works

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions