4 Replies Latest reply on Jan 4, 2017 8:45 AM by Martin Delto

    App crashes consistently on ET1 JB 4.1.1 -- works flawlessly on all other tablets

    Didrik Wold

      Thanks in advance for your time and consideration.

       

      I got the tablet updated and all the patches/fixes installed and everything looked great.

       

      However, I've now run into another problem. The application that we use to carry out our inspections, keeps crashing at the same point when I try to run it on the ET1. It's 100% consistent and repeatable. It's something as simple as every time I try to select an option from a specific drop-down menu, the app crashes immediately.

       

      The app functions flawlessly on every single other Android device I've tried, with the exception of the ET1. The only difference that I can see is the custom AOSP-based operating system you have on the ET1. What is missing there that could cause this problem? I'm guessing there's some framework/api/etc that's missing that the app needs? I just don't know what it is, or how to fix it.

       

      The other problem I have is that I neither have access to the source code, nor the developer of the app, to try and debug and figure out WHY this is happening.

       

      I really need to figure this out because without this particular application, the tablet is essentially useless to me.

       

      What can I do?

       

      Thanks again.

       

      All the best,

      Didrik

       

      PS - Is there a way to get root access on this tablet?

        • Re: App crashes consistently on ET1 JB 4.1.1 -- works flawlessly on all other tablets
          Dan Silva

          What would help to get to the bottom of this would be logs from the device.  If you are familiar with ADB (usually used by developers), you could run ADB logcat and take a look in the debug log to see what errors might be happening when the app crashes. You would need to load our USB driver on your Windows machine to use ADB with the ET1. 

          https://portal.motorolasolutions.com/Support/US-EN/Resolution?solutionId=95914

          You would also need to load some Android developer SDK stuff. 

          Android Debug Bridge | Android Developers


          Adb can be a little difficult to setup and get working properly, and the Android SDK is very large, so if you are not familiar with adb and already have it working, it might be easier to use our RxLogger tool to grab the logs.    Not sure if RxLogger is preloaded on the ET1, but if not you should be able to download it from here.

          Tips and Tricks

           

          If you can get a logcat log from when the app crashes and post the relevant section here, we might be able to at least tell you what appears to be causing the app to crash.

            • Re: App crashes consistently on ET1 JB 4.1.1 -- works flawlessly on all other tablets
              Didrik Wold

              Hi Daniel -- thanks for the quick reply!

               

              See below for the error log (not having the original source code, I don't think I can debug any further than this):

               

              10-09 20:55:47.019: W/ActivityThread(5690): Application com.PIC can be debugged on port 8100...

              10-09 20:55:47.065: D/dalvikvm(5690): GC_FOR_ALLOC freed 84K, 10% free 7391K/8131K, paused 24ms, total 25ms

              10-09 20:55:47.073: I/dalvikvm-heap(5690): Grow heap (frag case) to 8.304MB for 539252-byte allocation

              10-09 20:55:47.104: D/dalvikvm(5690): GC_CONCURRENT freed <1K, 10% free 7916K/8711K, paused 12ms+1ms, total 30ms

              10-09 20:55:47.104: D/dalvikvm(5690): WAIT_FOR_CONCURRENT_GC blocked 2ms

              10-09 20:55:47.136: V/PhoneStatusBar(449): setLightsOn(true)

              10-09 20:55:47.206: I/ActivityManager(314): Displayed com.PIC/.MainActivity: +266ms

              10-09 20:56:05.925: I/ActivityManager(314): START u0 {cmp=com.PIC/.PostLogin} from pid 5690

              10-09 20:56:06.097: D/dalvikvm(314): GC_FOR_ALLOC freed 232K, 23% free 12789K/16455K, paused 124ms, total 124ms

              10-09 20:56:06.206: V/PhoneStatusBar(449): setLightsOn(true)

              10-09 20:56:06.300: I/ActivityManager(314): Displayed com.PIC/.PostLogin: +193ms

              10-09 20:56:23.464: D/dalvikvm(5690): GC_CONCURRENT freed 170K, 9% free 8165K/8967K, paused 4ms+5ms, total 65ms

              10-09 20:56:23.464: D/dalvikvm(5690): WAIT_FOR_CONCURRENT_GC blocked 21ms

              10-09 20:56:23.534: D/dalvikvm(5690): GC_FOR_ALLOC freed 191K, 12% free 8168K/9223K, paused 58ms, total 58ms

              10-09 20:56:23.550: I/ActivityManager(314): START u0 {cmp=com.PIC/.Settings} from pid 5690

              10-09 20:56:23.651: D/dalvikvm(314): GC_FOR_ALLOC freed 220K, 23% free 12773K/16455K, paused 69ms, total 71ms

              10-09 20:56:23.769: D/dalvikvm(5690): GC_CONCURRENT freed 415K, 11% free 8273K/9287K, paused 12ms+13ms, total 47ms

              10-09 20:56:23.800: D/dalvikvm(5690): GC_FOR_ALLOC freed 38K, 12% free 8256K/9287K, paused 19ms, total 20ms

              10-09 20:56:23.800: I/dalvikvm-heap(5690): Grow heap (frag case) to 9.404MB for 804880-byte allocation

              10-09 20:56:23.823: D/dalvikvm(5690): GC_CONCURRENT freed <1K, 11% free 9042K/10119K, paused 2ms+2ms, total 23ms

              10-09 20:56:23.823: D/dalvikvm(5690): WAIT_FOR_CONCURRENT_GC blocked 10ms

              10-09 20:56:23.878: V/PhoneStatusBar(449): setLightsOn(true)

              10-09 20:56:24.214: D/dalvikvm(559): GC_CONCURRENT freed 428K, 13% free 7698K/8775K, paused 5ms+7ms, total 74ms

              10-09 20:56:28.550: D/dalvikvm(5690): GC_CONCURRENT freed 299K, 10% free 9262K/10247K, paused 17ms+7ms, total 83ms

              10-09 20:56:28.604: I/Choreographer(5690): Skipped 282 frames! The application may be doing too much work on its main thread.

              10-09 20:56:28.792: I/ActivityManager(314): Displayed com.PIC/.Settings: +5s132ms

              10-09 20:56:29.175: D/dalvikvm(5690): GC_CONCURRENT freed 451K, 11% free 9439K/10503K, paused 12ms+3ms, total 54ms

              10-09 20:56:29.292: I/Choreographer(5690): Skipped 30 frames! The application may be doing too much work on its main thread.

              10-09 20:56:30.425: I/Choreographer(5690): Skipped 53 frames! The application may be doing too much work on its main thread.

              10-09 20:56:30.854: W/InputMethodManagerService(314): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41320320 attribute=null

              10-09 20:56:57.901: D/dalvikvm(5690): GC_CONCURRENT freed 498K, 11% free 9573K/10695K, paused 13ms+7ms, total 59ms

              10-09 20:57:06.245: I/Choreographer(5690): Skipped 499 frames! The application may be doing too much work on its main thread.

              10-09 20:57:06.245: W/InputMethodManagerService(314): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@413ef300 attribute=null

              10-09 20:57:06.284: D/AndroidRuntime(5690): Shutting down VM

              10-09 20:57:06.284: W/dalvikvm(5690): threadid=1: thread exiting with uncaught exception (group=0x40b05300)

              10-09 20:57:06.292: E/AndroidRuntime(5690): FATAL EXCEPTION: main

              10-09 20:57:06.292: E/AndroidRuntime(5690): java.lang.NullPointerException

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.Spinner.makeAndAddView(Spinner.java:534)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.Spinner.layout(Spinner.java:485)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.Spinner.onLayout(Spinner.java:449)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.View.layout(View.java:13754)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewGroup.layout(ViewGroup.java:4362)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1866)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1687)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.Choreographer.doCallbacks(Choreographer.java:555)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.Choreographer.doFrame(Choreographer.java:525)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.os.Handler.handleCallback(Handler.java:615)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.os.Handler.dispatchMessage(Handler.java:92)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.os.Looper.loop(Looper.java:137)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at android.app.ActivityThread.main(ActivityThread.java:4812)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at java.lang.reflect.Method.invokeNative(Native Method)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at java.lang.reflect.Method.invoke(Method.java:511)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)

              10-09 20:57:06.292: E/AndroidRuntime(5690): at dalvik.system.NativeStart.main(Native Method)

              10-09 20:57:06.315: W/ActivityManager(314): Force finishing activity com.PIC/.Settings

              10-09 20:57:06.354: D/dalvikvm(5690): GC_CONCURRENT freed 834K, 14% free 9418K/10887K, paused 12ms+3ms, total 49ms

                • Re: App crashes consistently on ET1 JB 4.1.1 -- works flawlessly on all other tablets
                  Dan Silva

                  Someone else feel free to step in here if you see something I'm missing.

                   

                  I don't see anything specific in the logcat log that shows exactly what the issue is.  So nothing that tells me that the app requires something that is not on the device. It still could be the case, but nothing in the log is saying that.

                   

                  When you say the app is crashing, what exactly do you see?  Does it say the app has stopped responding and give you the choice to force close or wait?  If so, that is not really a crash, it's what's called ANR (App not responsive).

                   

                  There are some of these entries, which sounds like something is taking longer than expected on the UI thread:

                  10-09 20:57:06.245: I/Choreographer(5690): Skipped 499 frames! The application may be doing too much work on its main thread.


                  Android tries to keep that under control, because the whole device will seem to be "Locked up" if the OS allows an app to hog the UI thread.  This could lead to an ANR.  Is it possible that there is something different in the data that the app is using on the ET1? Maybe more data filling in this Spinner that seems to be trying to load, or maybe an empty/corrupted record or something like that?  Or possibly something that might make it take longer to load the needed data on the ET1?


                  There is a null pointer exception right after that, which I'm thinking might be from a force close of the app, but more likely is the main issue.  Again, if the app is trying to load some invalid data or maybe is looking for it in the wrong place, not connecting to a server, failure to decrypt encrypted data, etc.


                  It might be possible to get more details using RXLogger. Here's a link to a presentation that was done at our app forum that shows how to use rxlogger to get crash dumps, ANRs, etc.

                  Android Debugging Tools / RXlogger - hands on



                  In the end, you may need some help from the app developer, if that's possible.