ISTLab

                                                                                     java.lang.RuntimeException: Unable to resume activity {com.pinapps.android/
   java.lang.RuntimeException: Unable to start activity                              com.facebook.LoginActivity}: com.facebook.FacebookException: Cannot call LoginActivity
   ComponentInfo{com.pinapps.android/com.pinapps.android.ActAppDetails}:             with a null calling package. This can occur if the launchMode of the caller is singleInstance.
   java.lang.NullPointerException                                                    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2138)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2153)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1682)
   at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3553)    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
   at android.app.ActivityThread.access$700(ActivityThread.java:140)                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)           at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Handler.dispatchMessage(Handler.java:99)                            at android.os.Looper.loop(Looper.java:130)
   at android.os.Looper.loop(Looper.java:137)                                        at android.app.ActivityThread.main(ActivityThread.java:3701)
   at android.app.ActivityThread.main(ActivityThread.java:4898)                      at java.lang.reflect.Method.invokeNative(Native Method)




                   What BigData tell us about
   at java.lang.reflect.Method.invokeNative(Native Method)                            at java.lang.reflect.Method.invoke(Method.java:507)
   at java.lang.reflect.Method.invoke(Method.java:511)                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
   1008)                                                                             at dalvik.system.NativeStart.main(Native Method) Caused by:
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)                   com.facebook.FacebookException: Cannot call LoginActivity with a null calling package.
   at dalvik.system.NativeStart.main(Native Method) Caused by:                       This can occur if the launchMode of the caller is singleInstance.
   java.lang.NullPointerException                                                    at com.facebook.LoginActivity.onResume(LoginActivity.java:110)




                        Android Errors
   at com.pinapps.android.FragAppMedia.onCreateView(FragAppMedia.java:126)           at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1176)
   at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)          at android.app.Activity.performResume(Activity.java:3882)
                                                                                     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2128)
   ... 12 more                                                                       ... 12 more
   java.lang.RuntimeException: Unable to start activity                              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pinapps.android/
   ComponentInfo{com.pinapps.android/com.pinapps.android.ActSplash}:                 com.pinapps.android.ActAppDetails}: java.lang.IllegalStateException: ViewPager does not
   android.view.InflateException: Binary XML file line #2: Error inflating class        have adapter instance.
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1670)     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1686)      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
   at android.app.ActivityThread.access$1500(ActivityThread.java:118)                at android.app.ActivityThread.access$600(ActivityThread.java:130)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:932)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
   at android.os.Handler.dispatchMessage(Handler.java:99)                            at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:130)                                        at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:3706)                      at android.app.ActivityThread.main(ActivityThread.java:4745)
   at java.lang.reflect.Method.invokeNative(Native Method)                            at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:507)                                at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
   841)                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)                   at dalvik.system.NativeStart.main(Native Method) Caused by:
   at dalvik.system.NativeStart.main(Native Method) Caused by:                       java.lang.IllegalStateException: ViewPager does not have adapter instance.
   android.view.InflateException: Binary XML file line #2: Error inflating class        at com.viewpagerindicator.TitlePageIndicator.setViewPager(TitlePageIndicator.java:716)
   at android.view.LayoutInflater.createView(LayoutInflater.java:518)                  at com.pinapps.android.ActAppDetails.onCreate(ActAppDetails.java:129)
   at                                                                                at android.app.Activity.performCreate(Activity.java:5008)
   com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInfl   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
   ater.java:56)                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)           ... 11 more




                                     What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                                                                  1
Tuesday, April 9, 13
ISTLab
                                                                                                             ISTLab




                       I’m Panos Papadopoulos
                       Founder & CEO at BugSense
                       @panosjee



                                                            I’m Maria Kechagia
                                                          PhD student at AUEB
                                                          Researcher at ISTLab


                           What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013            2
Tuesday, April 9, 13
You are here because of

  ANDROID BUGS
Tuesday, April 9, 13
ISTLab
                                                                                                           ISTLab


                                     BigData Research

                                40M crashes
                                 3M stack traces
                               320M devices
                       From Mar 1 to May 30 2012

                         What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             4
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab


                   Crashing apps lead to user churn
                       Total Users



                       Affected Users



                       Lost Users




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             5
Tuesday, April 9, 13
ISTLab
                                                                                                                      ISTLab


                                                The Process


                        Android        Java Stack               Data
                                                              Cleaning                Data               Heuristics
                         Apps            Traces




                                               API                         Crash
                       Suggestions           Design                       Causes
                                                                       Categorization                   Signatures
                                            Problems




                                                                   6
                             What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                    6
Tuesday, April 9, 13
ISTLab
                                                                                                             ISTLab


                                    Heuristic Function

                                       (﴾F+ (﴾A+ I∗)﴿∗)﴿ | (﴾F∗ (﴾A+ I∗)﴿+)﴿E
                       This expresses various scenarios in which an exception can occur

                          Within the Android framework: F + E

                          Within the application: F ∗ A+ E

                          When the application calls an api: F∗ A+ I+ E

                          Within an api-‐registered application callback: F∗ (﴾A+ I+ A+)﴿+ E

                          When an api-‐registered application callback calls an api: F∗ (﴾A+ I+)﴿+ E




                           What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             7
Tuesday, April 9, 13
ISTLab
                                                                                                         ISTLab


                                        API Minefield




                       What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             8
Tuesday, April 9, 13
ISTLab
                                                                                                                     ISTLab


                                             Crash Categories

                         Memory Exhaustion                                                                            28

            Rece conditions and deadlocks                                                                             28

                Missing/Corrupted Resource                                           14

                                 Unclassified                             10

                        Invalid format/syntax                  5

                           Indexing problem                    5

                       Connectivity Problems               4

      Improper component identification                3

                       Insufficient Permission         3

                                                 0                  7.5                   15                  22.5         30




                                 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                9
Tuesday, April 9, 13
ISTLab
                                                                                                         ISTLab


          You are not to blame for all crashes!


                           86% app context
                            3% Android context
                           11% API context

                       What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             10
Tuesday, April 9, 13
ISTLab
                                                                                                                ISTLab

                                  Memory Exhaustion
                                    java.lang.outofmemory
                                      java.lang.outofmemory

                       37%      Although after Honeycomb bitmaps are stored into the
                                Dalvik heap, such exceptions continue to puzzle
                                developers. as mobile devices become smaller and
                                applications have heavier graphics, there is a need for
                                thrifty memory use and good performance.

                                                            Resource auto-‐resize interface
                                                            Restricted use of cache structures
                                                            Cheap file formats
                                                            Fixed heap memory
                                                            Use profiling (﴾Tracker Tab, MAT, HeapViz, etc.)﴿




                             What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013              11
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

                       Race Conditions & Deadlocks
                       android.database.sqlite.SQLiteOpenHelper.getReadableDatabase
                                        android.os.AsyncTask.execute
                              java.util.concurrent.RejectedExcutionException


                   28%      A lot of problems arise around the SQLite and the AsyncTask
                            classes, as they require extra attention concerning
                            multithreading errors.




                                                      Use non-‐blocking algorithms
                                                      Use Java’s non-‐locking primitives and higher level
                                                    concurrency abstractions.
                                                      Verification (﴾Java PathExplorer)﴿
                                                      Static checking (﴾Dimmunix, Jlint, FindBugs, Julia)﴿




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             12
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

                       Missing/Corrupted Resources
                       org.jaudiotagger.audio.exceptions.InvalidAudioFrameException



                   14%      The system fails to locate or open an external file. Note that,
                            here, we refer to external resources, such as an image or an
                            audio file, and not application components..




                                                       Use try/catch blocks
                                                       Use static analysis tools like Motorola Dev checker




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             13
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

            Improper Component Identification
                                 android.content.ActivityNotFoundException


                            A lot of applications crash due to either undeclared
                       3%   application components (﴾i.e. activities, services, broadcast
                            receivers, or content providers)﴿, in the AndroidManifest.xml
                            file, or system failure to detect a suitable component for a
                            specific task.
                            Malicious apps can try to launch an activity in order to exploit
                            the permissions of the running app.

                                                              Check the existence of the necessary
                                                            application
                                                              User easy to remember codes




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             14
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

                             Insufficient Permission
                                         android.app.Activity.startActivity
                                              java.lang.SecurityException

                            This case can be probably caused by a missing or insufficient
                       3%   permission for the particular activity, in the
                            AndroidManifest.xls file. Also, there is the possibility for more
                            than one entries to exist (﴾with different properties)﴿, for this
                            activity, in the AndroidManifest.xls file. The system manager,
                            however, allows unique activities characterized by a unique id.

                                                              Check the permissions related to a
                                                            component, before calling it to start.
                                                              Provide Clear documentation
                                                              User menu




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             15
Tuesday, April 9, 13
ISTLab
                                                                                                                            ISTLab


                           Top 10 Root cause Exceptions

                                   java.lang.NullPointerException                                                              29

                                     java.lang.outOfMemoryError                                    14

                              java.lang.IllegalArgumentException                         7

                                      java.lang.RuntimeException                     5

                                   java.lang.IllegalStateException               4

         android.view.WindowManager$BadTokenException                        3

                          android.database.sqlite.SQLiteException            3

                           java.lang.IndexOutOfBoundsException           2

                       java.lang.ArrayIndexOutOfBoundsException          2

                                   java.io.FileNotFoundException         2

                                                                     0                       7.5        15           22.5           30




                                   What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                       16
Tuesday, April 9, 13
10 api calls result in



                       17%
                         of the crashes


Tuesday, April 9, 13
ISTLab
                                                                                                                   ISTLab


                            Most Risky Android APIs
                                  android.app.Activity.setContentView                                              4
                                            android.app.Dialog.dismiss                          2
                                     android.view.LayoutInflater.inflate                        2
                                      android.app.Activity.startActivity             1
                       android.graphics.BitmapFactory.decodeResource                 1
                                              android.app.Dialog.show                1
  com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost                    1
                                android.graphics.Bitmap.createBItmap                 1
                                                   java.util.ArrayList.get           1
                                     android.view.LayoutInflater.inflate             1

                                                                             0           1       2             3    4




                             What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                 18
Tuesday, April 9, 13
ISTLab
                                                                                                         ISTLab




             #DROIDCON #LIVE #BUGSENSE
                            http://www.bugsense.com/live


                        One of the first 10 attendees to
                        tweet wins a mastiha liquor!
                       What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             19
Tuesday, April 9, 13
ISTLab
                                                                                                            ISTLab




                                     Questions?

                       BugSense helps you analyze & troubleshoot your mobile
                                      applications in minutes

                                           http://www.bugsense.com




                          What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013         20
Tuesday, April 9, 13

More Related Content

PDF
Droid con bugsense
PDF
Droidcon2012 berlin (2) droidway
PDF
Lounge multiplayer
PDF
Every moment is mobile: mobile marketing for the retail industry
PPT
J.-P. Seifert; Security-Aware Android Applications for the Enterprise
PDF
3rd Mobile Marketing event by Warply: Mobile as a Revenue Channel
PDF
Android programming -_pushing_the_limits
PDF
Droidcon de 2014 google cast
Droid con bugsense
Droidcon2012 berlin (2) droidway
Lounge multiplayer
Every moment is mobile: mobile marketing for the retail industry
J.-P. Seifert; Security-Aware Android Applications for the Enterprise
3rd Mobile Marketing event by Warply: Mobile as a Revenue Channel
Android programming -_pushing_the_limits
Droidcon de 2014 google cast

Similar to Bug sense droidcon-13 (20)

PPTX
DEVIEW2013: Automating Performance Tests for Android Applications
PPT
Google App Engine for Java
PDF
Icpc2010 bettenburg
PPT
JavaYDL18
PPT
Ruby conf2012
PDF
Testing Big in JavaScript
PDF
Google App Engine for Java
PPTX
Lecture #4 activities & fragments
PDF
DIY in 5 Minutes: Testing Django App with Pytest
PDF
Develop Android/iOS app using golang
PPT
Using Selenium to Test Native Apps (Wait, you can do that?)
PDF
Java - OOPS and Java Basics
PPT
ESW #1 - Developing For Android
PDF
[Ultracode Munich #4] Short introduction to the new Android build system incl...
PDF
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
PDF
AI_BIRDER: USING ARTIFICIAL INTELLIGENCE AND DEEP LEARNING TO CREATE A MOBILE...
PDF
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
PDF
Designing and Implementing a Multiuser Apps Platform
PPTX
Building Large Scale PHP Web Applications with Laravel 4
PPTX
Droidcon: Sean Owen: Driving Downloads via Intents- 29/10/2010
DEVIEW2013: Automating Performance Tests for Android Applications
Google App Engine for Java
Icpc2010 bettenburg
JavaYDL18
Ruby conf2012
Testing Big in JavaScript
Google App Engine for Java
Lecture #4 activities & fragments
DIY in 5 Minutes: Testing Django App with Pytest
Develop Android/iOS app using golang
Using Selenium to Test Native Apps (Wait, you can do that?)
Java - OOPS and Java Basics
ESW #1 - Developing For Android
[Ultracode Munich #4] Short introduction to the new Android build system incl...
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
AI_BIRDER: USING ARTIFICIAL INTELLIGENCE AND DEEP LEARNING TO CREATE A MOBILE...
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
Designing and Implementing a Multiuser Apps Platform
Building Large Scale PHP Web Applications with Laravel 4
Droidcon: Sean Owen: Driving Downloads via Intents- 29/10/2010
Ad

More from Droidcon Berlin (20)

PDF
crashing in style
PDF
Raspberry Pi
PDF
Android industrial mobility
PDF
Details matter in ux
PDF
From sensor data_to_android_and_back
PDF
droidparts
PDF
new_age_graphics_android_x86
PDF
5 tips of monetization
PDF
Testing and Building Android
PDF
Matchinguu droidcon presentation
PDF
Cgm life sdk_droidcon_2014_v3
PDF
The artofcalabash peterkrauss
PDF
Raesch, gries droidcon 2014
PDF
Android open gl2_droidcon_2014
PDF
20140508 quantified self droidcon
PDF
Tuning android for low ram devices
PDF
Froyo to kit kat two years developing & maintaining deliradio
PDF
Droidcon2013 security genes_trendmicro
PDF
Droidcon2013 commercialsuccess rannenberg
PDF
Droidcon2013 bootstrap luedeke
crashing in style
Raspberry Pi
Android industrial mobility
Details matter in ux
From sensor data_to_android_and_back
droidparts
new_age_graphics_android_x86
5 tips of monetization
Testing and Building Android
Matchinguu droidcon presentation
Cgm life sdk_droidcon_2014_v3
The artofcalabash peterkrauss
Raesch, gries droidcon 2014
Android open gl2_droidcon_2014
20140508 quantified self droidcon
Tuning android for low ram devices
Froyo to kit kat two years developing & maintaining deliradio
Droidcon2013 security genes_trendmicro
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 bootstrap luedeke
Ad

Recently uploaded (20)

PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
Improvisation in detection of pomegranate leaf disease using transfer learni...
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Flame analysis and combustion estimation using large language and vision assi...
PPTX
Build Your First AI Agent with UiPath.pptx
PDF
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
PPTX
Module 1 Introduction to Web Programming .pptx
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
4 layer Arch & Reference Arch of IoT.pdf
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PDF
CloudStack 4.21: First Look Webinar slides
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
Architecture types and enterprise applications.pdf
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
sustainability-14-14877-v2.pddhzftheheeeee
Credit Without Borders: AI and Financial Inclusion in Bangladesh
Improvisation in detection of pomegranate leaf disease using transfer learni...
The influence of sentiment analysis in enhancing early warning system model f...
Final SEM Unit 1 for mit wpu at pune .pptx
Flame analysis and combustion estimation using large language and vision assi...
Build Your First AI Agent with UiPath.pptx
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
Module 1 Introduction to Web Programming .pptx
Module 1.ppt Iot fundamentals and Architecture
4 layer Arch & Reference Arch of IoT.pdf
A proposed approach for plagiarism detection in Myanmar Unicode text
Basics of Cloud Computing - Cloud Ecosystem
CloudStack 4.21: First Look Webinar slides
Getting started with AI Agents and Multi-Agent Systems
NewMind AI Weekly Chronicles – August ’25 Week III
Convolutional neural network based encoder-decoder for efficient real-time ob...
A review of recent deep learning applications in wood surface defect identifi...
Architecture types and enterprise applications.pdf
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
sustainability-14-14877-v2.pddhzftheheeeee

Bug sense droidcon-13

  • 1. ISTLab java.lang.RuntimeException: Unable to resume activity {com.pinapps.android/ java.lang.RuntimeException: Unable to start activity com.facebook.LoginActivity}: com.facebook.FacebookException: Cannot call LoginActivity ComponentInfo{com.pinapps.android/com.pinapps.android.ActAppDetails}: with a null calling package. This can occur if the launchMode of the caller is singleInstance. java.lang.NullPointerException at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2138) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2153) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1682) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3553) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread.access$700(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:3701) at android.app.ActivityThread.main(ActivityThread.java:4898) at java.lang.reflect.Method.invokeNative(Native Method) What BigData tell us about at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 1008) at dalvik.system.NativeStart.main(Native Method) Caused by: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) com.facebook.FacebookException: Cannot call LoginActivity with a null calling package. at dalvik.system.NativeStart.main(Native Method) Caused by: This can occur if the launchMode of the caller is singleInstance. java.lang.NullPointerException at com.facebook.LoginActivity.onResume(LoginActivity.java:110) Android Errors at com.pinapps.android.FragAppMedia.onCreateView(FragAppMedia.java:126) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1176) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) at android.app.Activity.performResume(Activity.java:3882) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2128) ... 12 more ... 12 more java.lang.RuntimeException: Unable to start activity java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pinapps.android/ ComponentInfo{com.pinapps.android/com.pinapps.android.ActSplash}: com.pinapps.android.ActAppDetails}: java.lang.IllegalStateException: ViewPager does not android.view.InflateException: Binary XML file line #2: Error inflating class have adapter instance. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1670) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1686) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) at android.app.ActivityThread.access$1500(ActivityThread.java:118) at android.app.ActivityThread.access$600(ActivityThread.java:130) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:932) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:3706) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 841) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) at dalvik.system.NativeStart.main(Native Method) Caused by: at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: ViewPager does not have adapter instance. android.view.InflateException: Binary XML file line #2: Error inflating class at com.viewpagerindicator.TitlePageIndicator.setViewPager(TitlePageIndicator.java:716) at android.view.LayoutInflater.createView(LayoutInflater.java:518) at com.pinapps.android.ActAppDetails.onCreate(ActAppDetails.java:129) at at android.app.Activity.performCreate(Activity.java:5008) com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInfl at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) ater.java:56) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) ... 11 more What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 1 Tuesday, April 9, 13
  • 2. ISTLab ISTLab I’m Panos Papadopoulos Founder & CEO at BugSense @panosjee I’m Maria Kechagia PhD student at AUEB Researcher at ISTLab What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 2 Tuesday, April 9, 13
  • 3. You are here because of ANDROID BUGS Tuesday, April 9, 13
  • 4. ISTLab ISTLab BigData Research 40M crashes 3M stack traces 320M devices From Mar 1 to May 30 2012 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 4 Tuesday, April 9, 13
  • 5. ISTLab ISTLab Crashing apps lead to user churn Total Users Affected Users Lost Users What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 5 Tuesday, April 9, 13
  • 6. ISTLab ISTLab The Process Android Java Stack Data Cleaning Data Heuristics Apps Traces API Crash Suggestions Design Causes Categorization Signatures Problems 6 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 6 Tuesday, April 9, 13
  • 7. ISTLab ISTLab Heuristic Function (﴾F+ (﴾A+ I∗)﴿∗)﴿ | (﴾F∗ (﴾A+ I∗)﴿+)﴿E This expresses various scenarios in which an exception can occur Within the Android framework: F + E Within the application: F ∗ A+ E When the application calls an api: F∗ A+ I+ E Within an api-‐registered application callback: F∗ (﴾A+ I+ A+)﴿+ E When an api-‐registered application callback calls an api: F∗ (﴾A+ I+)﴿+ E What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 7 Tuesday, April 9, 13
  • 8. ISTLab ISTLab API Minefield What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 8 Tuesday, April 9, 13
  • 9. ISTLab ISTLab Crash Categories Memory Exhaustion 28 Rece conditions and deadlocks 28 Missing/Corrupted Resource 14 Unclassified 10 Invalid format/syntax 5 Indexing problem 5 Connectivity Problems 4 Improper component identification 3 Insufficient Permission 3 0 7.5 15 22.5 30 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 9 Tuesday, April 9, 13
  • 10. ISTLab ISTLab You are not to blame for all crashes! 86% app context 3% Android context 11% API context What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 10 Tuesday, April 9, 13
  • 11. ISTLab ISTLab Memory Exhaustion java.lang.outofmemory java.lang.outofmemory 37% Although after Honeycomb bitmaps are stored into the Dalvik heap, such exceptions continue to puzzle developers. as mobile devices become smaller and applications have heavier graphics, there is a need for thrifty memory use and good performance. Resource auto-‐resize interface Restricted use of cache structures Cheap file formats Fixed heap memory Use profiling (﴾Tracker Tab, MAT, HeapViz, etc.)﴿ What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 11 Tuesday, April 9, 13
  • 12. ISTLab ISTLab Race Conditions & Deadlocks android.database.sqlite.SQLiteOpenHelper.getReadableDatabase android.os.AsyncTask.execute java.util.concurrent.RejectedExcutionException 28% A lot of problems arise around the SQLite and the AsyncTask classes, as they require extra attention concerning multithreading errors. Use non-‐blocking algorithms Use Java’s non-‐locking primitives and higher level concurrency abstractions. Verification (﴾Java PathExplorer)﴿ Static checking (﴾Dimmunix, Jlint, FindBugs, Julia)﴿ What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 12 Tuesday, April 9, 13
  • 13. ISTLab ISTLab Missing/Corrupted Resources org.jaudiotagger.audio.exceptions.InvalidAudioFrameException 14% The system fails to locate or open an external file. Note that, here, we refer to external resources, such as an image or an audio file, and not application components.. Use try/catch blocks Use static analysis tools like Motorola Dev checker What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 13 Tuesday, April 9, 13
  • 14. ISTLab ISTLab Improper Component Identification android.content.ActivityNotFoundException A lot of applications crash due to either undeclared 3% application components (﴾i.e. activities, services, broadcast receivers, or content providers)﴿, in the AndroidManifest.xml file, or system failure to detect a suitable component for a specific task. Malicious apps can try to launch an activity in order to exploit the permissions of the running app. Check the existence of the necessary application User easy to remember codes What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 14 Tuesday, April 9, 13
  • 15. ISTLab ISTLab Insufficient Permission android.app.Activity.startActivity java.lang.SecurityException This case can be probably caused by a missing or insufficient 3% permission for the particular activity, in the AndroidManifest.xls file. Also, there is the possibility for more than one entries to exist (﴾with different properties)﴿, for this activity, in the AndroidManifest.xls file. The system manager, however, allows unique activities characterized by a unique id. Check the permissions related to a component, before calling it to start. Provide Clear documentation User menu What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 15 Tuesday, April 9, 13
  • 16. ISTLab ISTLab Top 10 Root cause Exceptions java.lang.NullPointerException 29 java.lang.outOfMemoryError 14 java.lang.IllegalArgumentException 7 java.lang.RuntimeException 5 java.lang.IllegalStateException 4 android.view.WindowManager$BadTokenException 3 android.database.sqlite.SQLiteException 3 java.lang.IndexOutOfBoundsException 2 java.lang.ArrayIndexOutOfBoundsException 2 java.io.FileNotFoundException 2 0 7.5 15 22.5 30 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 16 Tuesday, April 9, 13
  • 17. 10 api calls result in 17% of the crashes Tuesday, April 9, 13
  • 18. ISTLab ISTLab Most Risky Android APIs android.app.Activity.setContentView 4 android.app.Dialog.dismiss 2 android.view.LayoutInflater.inflate 2 android.app.Activity.startActivity 1 android.graphics.BitmapFactory.decodeResource 1 android.app.Dialog.show 1 com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost 1 android.graphics.Bitmap.createBItmap 1 java.util.ArrayList.get 1 android.view.LayoutInflater.inflate 1 0 1 2 3 4 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 18 Tuesday, April 9, 13
  • 19. ISTLab ISTLab #DROIDCON #LIVE #BUGSENSE http://www.bugsense.com/live One of the first 10 attendees to tweet wins a mastiha liquor! What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 19 Tuesday, April 9, 13
  • 20. ISTLab ISTLab Questions? BugSense helps you analyze & troubleshoot your mobile applications in minutes http://www.bugsense.com What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 20 Tuesday, April 9, 13