aziraphale / QuasselDroid

Quasselclient for Android
https://www.andrewgillard.com/qd/
GNU General Public License v3.0
2 stars 0 forks source link

Occasional crash/FC after device network connectivity changes while QuasselDroid is paused #46

Open aziraphale opened 11 years ago

aziraphale commented 11 years ago

(This is a duplicate of the upstream issue report)

This has been bugging me for ages but I've finally been bothered to run logcat after a crash. Unfortunately this is really hard to reproduce - simply pausing QD and disconnecting/reconnecting WiFi doesn't cause it. It seems to only occur after QD has been backgrounded for a long time.

I don't know enough about Android dev to figure things out much beyond that and, despite now having a stack trace to see where the unhandled exception is being thrown from, I'm not sure what the best solution would be, so hopefully someone smarter than me can get this sorted!

If it helps, I'm running Android 4.1.2 (custom ROM, Release 30) and the latest committed code of QuasselDroid.

Here's the relevant dump from logcat:


I/ActivityManager( 1659): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.iskrembilen.quasseldroid/.gui.SplashActivity bnds=[120,203][240,368] u=0} from pid 1886
D/dalvikvm(12917): Late-enabling CheckJNI
I/ActivityManager( 1659): Start proc com.iskrembilen.quasseldroid for activity com.iskrembilen.quasseldroid/.gui.MainActivity: pid=12917 uid=10082 gids={3003, 1028}
D/dalvikvm( 1433): GC_EXPLICIT freed 38K, 75% free 2195K/8451K, paused 15ms+2ms, total 47ms
D/dalvikvm( 1433): GC_EXPLICIT freed <1K, 75% free 2195K/8451K, paused 2ms+2ms, total 30ms
D/dalvikvm( 1433): GC_EXPLICIT freed <1K, 75% free 2195K/8451K, paused 7ms+2ms, total 48ms
E/Trace   (12917): error opening trace file: No such file or directory (2)
D/dalvikvm( 1659): GC_CONCURRENT freed 1774K, 31% free 14000K/20231K, paused 8ms+29ms, total 308ms
W/Resources(12917): Converting to string: TypedValue{t=0x10/d=0xa a=-1}
W/Resources(12917): Converting to string: TypedValue{t=0x10/d=0x14 a=-1}
W/Resources(12917): Converting to string: TypedValue{t=0x10/d=0x14 a=-1}
I/ActionBarSherlock(12917): Registering ActionBarSherlockCompat with qualifier @com.actionbarsherlock.ActionBarSherlock$Implementation(api=7, dpi=-1)
I/ActionBarSherlock(12917): Registering ActionBarSherlockNative with qualifier @com.actionbarsherlock.ActionBarSherlock$Implementation(api=14, dpi=-1)
I/ActionBarSherlock(12917): Using implementation: ActionBarSherlockNative
D/ActionBarSherlock(12917): [<ctor>] activity: com.iskrembilen.quasseldroid.gui.MainActivity@421634e0, flags: 1
D/ActionBarSherlock(12917): [setContentView] layoutResId: 2130903073
D/ActionBarSherlock(12917): [getActionBar]
D/AndroidRuntime(12917): Shutting down VM
W/dalvikvm(12917): threadid=1: thread exiting with uncaught exception (group=0x41da8300)
E/AndroidRuntime(12917): FATAL EXCEPTION: main
E/AndroidRuntime(12917): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.iskrembilen.quasseldroid/com.iskrembilen.quasseldroid.gui.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(12917):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185)
E/AndroidRuntime(12917):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
E/AndroidRuntime(12917):    at android.app.ActivityThread.access$600(ActivityThread.java:142)
E/AndroidRuntime(12917):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
E/AndroidRuntime(12917):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(12917):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(12917):    at android.app.ActivityThread.main(ActivityThread.java:4931)
E/AndroidRuntime(12917):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(12917):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(12917):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime(12917):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
E/AndroidRuntime(12917):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(12917): Caused by: java.lang.NullPointerException
E/AndroidRuntime(12917):    at com.iskrembilen.quasseldroid.gui.MainActivity$FragmentAdapter.onPageSelected(MainActivity.java:319)
E/AndroidRuntime(12917):    at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:545)
E/AndroidRuntime(12917):    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:523)
E/AndroidRuntime(12917):    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:494)
E/AndroidRuntime(12917):    at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:486)
E/AndroidRuntime(12917):    at com.iskrembilen.quasseldroid.gui.MainActivity.setBuffer(MainActivity.java:396)
E/AndroidRuntime(12917):    at com.iskrembilen.quasseldroid.gui.MainActivity.onCreate(MainActivity.java:177)
E/AndroidRuntime(12917):    at android.app.Activity.performCreate(Activity.java:5008)
E/AndroidRuntime(12917):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
E/AndroidRuntime(12917):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139)
E/AndroidRuntime(12917):    ... 11 more
W/ActivityManager( 1659):   Force finishing activity com.iskrembilen.quasseldroid/.gui.MainActivity
E/com.parse.push.connection(12396): could not construct writer
E/com.parse.push.connection(12396): java.net.SocketException: sendto failed: EPIPE (Broken pipe)
E/com.parse.push.connection(12396):     at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
E/com.parse.push.connection(12396):     at libcore.io.IoBridge.sendto(IoBridge.java:475)
E/com.parse.push.connection(12396):     at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507)
E/com.parse.push.connection(12396):     at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
E/com.parse.push.connection(12396):     at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
E/com.parse.push.connection(12396):     at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167)
E/com.parse.push.connection(12396):     at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158)
E/com.parse.push.connection(12396):     at com.parse.PushConnection.trySend(SourceFile:243)
E/com.parse.push.connection(12396):     at com.parse.PushService.sendMessage(SourceFile:352)
E/com.parse.push.connection(12396):     at com.parse.PushService.sendSubscriptionInformation(SourceFile:365)
E/com.parse.push.connection(12396):     at com.parse.PushService.access$700(SourceFile:61)
E/com.parse.push.connection(12396):     at com.parse.PushService$3.doInBackground(SourceFile:424)
E/com.parse.push.connection(12396):     at com.parse.PushService$3.doInBackground(SourceFile:394)
E/com.parse.push.connection(12396):     at com.parse.os.ParseAsyncTask$2.call(SourceFile:215)
E/com.parse.push.connection(12396):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
E/com.parse.push.connection(12396):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
E/com.parse.push.connection(12396):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
E/com.parse.push.connection(12396):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
E/com.parse.push.connection(12396):     at java.lang.Thread.run(Thread.java:856)
E/com.parse.push.connection(12396): Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe)
E/com.parse.push.connection(12396):     at libcore.io.Posix.sendtoBytes(Native Method)
E/com.parse.push.connection(12396):     at libcore.io.Posix.sendto(Posix.java:146)
E/com.parse.push.connection(12396):     at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
E/com.parse.push.connection(12396):     at libcore.io.IoBridge.sendto(IoBridge.java:473)
E/com.parse.push.connection(12396):     ... 17 more
W/ActivityManager( 1659): Activity pause timeout for ActivityRecord{42158410 com.iskrembilen.quasseldroid/.gui.MainActivity}

A long way (5100 lines) before the above dump was the only other mention of quasseldroid in the log:


E/MobileDataStateTracker( 1659): default: unknown network type: 0
D/ConnectivityService( 1659): ConnectivityChange for mobile: DISCONNECTED/DISCONNECTED
D/ConnectivityService( 1659): Attempting to switch to wifi
D/ConnectivityService( 1659): Attempting to switch to BLUETOOTH_TETHER
D/ConnectivityService( 1659): resetConnections(rmnet0, 3)
I/LocationManagerService( 1659): request passive (pid 1659) 0 0
D/PhoneStatusBar( 1781): addNotification score=0
I/ActivityManager( 1659): No longer want com.iskrembilen.quasseldroid (pid 4460): hidden #16
I/WindowState( 1659): WIN DEATH: Window{4281caa0 com.iskrembilen.quasseldroid/com.iskrembilen.quasseldroid.gui.MainActivity paused=false}
D/ConnectivityService( 1659): handleInetConditionChange: no active default network - ignore

If I figure out a way of fixing this myself in my fork, I'll submit a pull request, but don't hold your breath :-p