Bug sense droidcon-13
Upcoming SlideShare
Loading in...5
×
 

Bug sense droidcon-13

on

  • 707 views

 

Statistics

Views

Total Views
707
Slideshare-icon Views on SlideShare
614
Embed Views
93

Actions

Likes
0
Downloads
8
Comments
0

3 Embeds 93

http://de.droidcon.com 63
http://eventifier.co 29
http://eventifier.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Bug sense droidcon-13 Bug sense droidcon-13 Presentation Transcript

    • 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 1Tuesday, 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 2Tuesday, April 9, 13
    • You are here because of ANDROID BUGSTuesday, 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 4Tuesday, 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 5Tuesday, 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 6Tuesday, 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 7Tuesday, April 9, 13
    • ISTLab ISTLab API Minefield What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 8Tuesday, 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 9Tuesday, 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 10Tuesday, 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 11Tuesday, 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 12Tuesday, 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 13Tuesday, 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 14Tuesday, 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 15Tuesday, 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 16Tuesday, April 9, 13
    • 10 api calls result in 17% of the crashesTuesday, 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 18Tuesday, 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 19Tuesday, 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 20Tuesday, April 9, 13