cuplv / TraceRunner

Tool for generating dynamic traces of android applications.
3 stars 0 forks source link

Instrumented Oppia-mobile-android app crashes even after successful instrumentation #31

Closed sllam closed 7 years ago

sllam commented 7 years ago

this is the runtime exception:

02-14 16:13:11.337 3350-3350/org.digitalcampus.mobile.learning E/AndroidRuntime: FATAL EXCEPTION: main Process: org.digitalcampus.mobile.learning, PID: 3350 java.lang.RuntimeException: Unable to resume activity {org.digitalcampus.mobile.learning/org.digitalcampus.oppia.activity.WelcomeActivity}: java.lang.RuntimeException: methodName: onResume objects: [Ljava.lang.Class;@2e65311 types: [Ljava.lang.String;@986bc76 at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.RuntimeException: methodName: onResume objects: [Ljava.lang.Class;@2e65311 types: [Ljava.lang.String;@986bc76 at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverride(FrameworkResolver.java:425) at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverrideMemo(FrameworkResolver.java:349) at edu.colorado.plv.tracerunner_runtime_instrumentation.TraceRunnerRuntimeInstrumentation.logCallbackEntry(TraceRunnerRuntimeInstrumentation.java:158) at org.digitalcampus.oppia.activity.AppActivity.onResume(AppActivity.java) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258) at android.app.Activity.performResume(Activity.java:6312) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Caused by: java.lang.NoSuchMethodException: onResume [] at java.lang.Class.getMethod(Class.java:624) at java.lang.Class.getDeclaredMethod(Class.java:586) at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverride(FrameworkResolver.java:421) at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverrideMemo(FrameworkResolver.java:349)  at edu.colorado.plv.tracerunner_runtime_instrumentation.TraceRunnerRuntimeInstrumentation.logCallbackEntry(TraceRunnerRuntimeInstrumentation.java:158)  at org.digitalcampus.oppia.activity.AppActivity.onResume(AppActivity.java)  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)  at android.app.Activity.performResume(Activity.java:6312)  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  02-14 16:13:11.340 1543-2113/system_process W/ActivityManager: Force finishing activity org.digitalcampus.mobile.learning/org.digitalcampus.oppia.activity.WelcomeActivity 02-14 16:13:11.382 1543-2633/system_process I/OpenGLRenderer: Initialized EGL, version 1.4 02-14 16:13:11.844 1543-1560/system_process W/ActivityManager: Activity pause timeout for ActivityRecord{745f7b u0 org.digitalcampus.mobile.learning/org.digitalcampus.oppia.activity.WelcomeActivity t19 f} 02-14 16:13:12.593 1543-1561/system_process I/Choreographer: Skipped 71 frames! The application may be doing too much work on its main thread. 02-14 16:13:12.937 1543-1561/system_process W/art: Long monitor contention event with owner method=void com.android.server.am.ActivityStack$ActivityStackHandler.handleMessage(android.os.Message) from ActivityStack.java:283 waiters=0 for 117ms 02-14 16:13:13.457 1543-1560/system_process I/ActivityManager: Killing 1926:com.android.printspooler/u0a45 (adj 15): empty #17 02-14 16:13:18.536 2288-2296/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/com.google.android.gms/databases/metrics.db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 02-14 16:13:18.538 2288-2296/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/com.google.android.gms/databases/help_responses.db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 02-14 16:13:18.538 2288-2296/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/com.google.android.gms/databases/auto_complete_suggestions.db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.

sllam commented 7 years ago

app was instrumented with the following blacklist:

org.jf.util.*:org.joda.time.*:org.jarjar.*:com.squareup.*:org.digitalcampus.oppia.model.*:org.apache.http.*:okhttp3.internal.*:org.apache.*:com.splunk.*:okhttp3.*:com.androidplot.*:okio.*

(shawn edited to make * viewable)

sllam commented 7 years ago

https://github.com/DigitalCampus/oppia-mobile-android/issues/559

8546c1e

ftc commented 7 years ago

Updates: this is due to a chain of overrides:

fmwk-Object <: fmwk-ViewOutlineProvider <: app-RoundOutlineProvider <: app-FabOutlineProvider

RoundOutlineProvider implements callback public final void getOutline(... which overrides a framework method. This does not get overridden in FabOutlineProvider since final methods cannot be overridden. So when getOutline is called on an instance of FabOutlineProvider it sees a concrete insatance of FabOutlineProvider with no implementation of getOutline. Solution is probably to search parent classes for the method but I vaguely remember there was a reason why I didn't do that origionally. TODO: figure out if this is a problem for some reason?


02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: equals args: [java.lang.Object] modifiers: 1
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: getClass args: [] modifiers: 17
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: getOutline args: [android.view.Viewandroid.graphics.Outline] modifiers: 17
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: getSizeResourceId args: [] modifiers: 1
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: hashCode args: [] modifiers: 1
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: notify args: [] modifiers: 273
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: notifyAll args: [] modifiers: 273
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: toString args: [] modifiers: 1
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: wait args: [] modifiers: 273
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: wait args: [long] modifiers: 17
02-18 12:09:55.611  4995  4995 E TraceRunnerInst: class: edu.colorado.plv.apps.topeka.widget.outlineprovider.FabOutlineProvider method: wait args: [longint] modifiers: 273
02-18 12:09:55.611  4995  4995 D AndroidRuntime: Shutting down VM
--------- beginning of crash
02-18 12:09:55.611  4995  4995 E AndroidRuntime: FATAL EXCEPTION: main
02-18 12:09:55.611  4995  4995 E AndroidRuntime: Process: com.google.plv.apps.topeka, PID: 4995
02-18 12:09:55.611  4995  4995 E AndroidRuntime: java.lang.RuntimeException: methodName: getOutline objects: [class android.view.Viewclass android.graphics.Outline] types: [android.view.Viewandroid.graphics.Outline]
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverride(FrameworkResolver.java:448)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverrideMemo(FrameworkResolver.java:351)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at edu.colorado.plv.tracerunner_runtime_instrumentation.TraceRunnerRuntimeInstrumentation.logCallbackEntry(TraceRunnerRuntimeInstrumentation.java:158)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at edu.colorado.plv.apps.topeka.widget.outlineprovider.RoundOutlineProvider.getOutline(RoundOutlineProvider.java)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.View.rebuildOutline(View.java:12135)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.View.invalidateDrawable(View.java:16790)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.widget.ImageView.invalidateDrawable(ImageView.java:248)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:385)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.graphics.drawable.RippleDrawable.invalidateSelf(RippleDrawable.java:705)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.graphics.drawable.RippleDrawable.cancelExitingRipples(RippleDrawable.java:233)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.graphics.drawable.RippleDrawable.jumpToCurrentState(RippleDrawable.java:217)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.View.jumpDrawablesToCurrentState(View.java:17162)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.widget.ImageView.jumpDrawablesToCurrentState(ImageView.java:223)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.View.onAttachedToWindow(View.java:14043)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.widget.ImageView.onAttachedToWindow(ImageView.java:1475)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.View.dispatchAttachedToWindow(View.java:14514)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1364)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.Choreographer.doCallbacks(Choreographer.java:670)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.Choreographer.doFrame(Choreographer.java:606)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:739)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:95)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:148)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5417)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
02-18 12:09:55.611  4995  4995 E AndroidRuntime: Caused by: java.lang.NoSuchMethodException: getOutline [class android.view.View, class android.graphics.Outline]
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at java.lang.Class.getMethod(Class.java:624)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at java.lang.Class.getDeclaredMethod(Class.java:586)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        at edu.colorado.plv.tracerunner_runtime_instrumentation.FrameworkResolver.getFrameworkOverride(FrameworkResolver.java:423)
02-18 12:09:55.611  4995  4995 E AndroidRuntime:        ... 35 more