Weather icon indicating copy to clipboard operation
Weather copied to clipboard

Sometimes the app crashes on startup

Open Starcommander opened this issue 6 years ago • 11 comments

I have installed the version 5.3.2, and sometimes the app crashes on startup. A window is showing then with the message, that app has crashed. Restarting the app solves the problem. The device is an android 7.1.2 - LineageOS.

10-15 07:30:38.622 14900 14900 E AndroidRuntime: FATAL EXCEPTION: main 10-15 07:30:38.622 14900 14900 E AndroidRuntime: Process: com.a5corp.weather, PID: 14900 10-15 07:30:38.622 14900 14900 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.a5corp.weather.activity.WeatherActivity.o()' on a null object reference 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at com.a5corp.weather.fragment.WeatherFragment$14$2.run(Unknown Source) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:751) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6236) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891) 10-15 07:30:38.622 14900 14900 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781) 10-15 07:30:38.626 1102 15418 W ActivityManager: Force finishing activity com.a5corp.weather/.activity.WeatherActivity 10-15 07:30:38.644 1102 15418 W ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:883 com.android.server.am.AppErrors.crashApplicationInner:375 com.android.server.am.AppErrors.crashApplication:309 com.android.server.am.ActivityManagerService.handleApplicationCrashInner:13738 com.android.server.am.ActivityManagerService.handleApplicationCrash:13720

Starcommander avatar Oct 17 '18 22:10 Starcommander

This is a known bug, even I am trying to figure out why this happens, and it only happens sometimes, not everytime

Sparker0i avatar Oct 18 '18 07:10 Sparker0i

Do you have an idea, why we do not have a codeline number in stack trace? (Unknown Source) Would really help to find the bug. Also I wonder where we have a method o() in WeatherActivity.

Starcommander avatar Oct 18 '18 21:10 Starcommander

Maybe it has to do with minifyEnabled and shrinkResources in build.gradle?

Starcommander avatar Oct 18 '18 22:10 Starcommander

Also I wonder where we have a method o() in WeatherActivity.

Did you download the app from the Play Store?

Sparker0i avatar Oct 19 '18 04:10 Sparker0i

No, I got it from F-Droid.

Starcommander avatar Oct 19 '18 14:10 Starcommander

Yep, thought so. We can't say which method is o() as it was minified and then signed

Sparker0i avatar Oct 19 '18 14:10 Sparker0i

Rebuilt and reproduced. Maybe it has to do with this issue:

10-19 17:13:49.573 5871 5871 E WindowManager: android.view.WindowLeaked: Activity com.a5corp.weather.activity.WeatherActivity has leaked window DecorView@a3acddb[] that was originally added here 10-19 17:13:49.573 5871 5871 E WindowManager: at android.view.ViewRootImpl.(ViewRootImpl.java:418) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.app.Dialog.show(Dialog.java:329) 10-19 17:13:49.573 5871 5871 E WindowManager: at com.afollestad.materialdialogs.MaterialDialog.show(MaterialDialog.java:464) 10-19 17:13:49.573 5871 5871 E WindowManager: at com.a5corp.weather.fragment.WeatherFragment.onCreateView(WeatherFragment.java:193) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797) 10-19 17:13:49.573 5871 5871 E WindowManager: at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)

Starcommander avatar Oct 19 '18 16:10 Starcommander

The above stack seems to have to do with killing the app. Here the correct stack, as I think:

10-19 18:26:40.262 7016 7034 I FetchWeather: Execution Failed IO 10-19 18:26:40.263 7016 7034 W System.err: java.net.UnknownHostException: Unable to resolve host "api.openweathermap.org": No address associated with hostname 10-19 18:26:40.263 7016 7034 W System.err: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:125) 10-19 18:26:40.263 7016 7034 W System.err: at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74) 10-19 18:26:40.263 7016 7034 W System.err: at java.net.InetAddress.getAllByName(InetAddress.java:752) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:346) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:247) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405) 10-19 18:26:40.263 7016 7034 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243) 10-19 18:26:40.264 7016 7034 W System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 10-19 18:26:40.264 7016 7034 W System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java) 10-19 18:26:40.264 7016 7034 W System.err: at com.a5corp.weather.internet.FetchWeather.gsonWeather(FetchWeather.java:102) 10-19 18:26:40.264 7016 7034 W System.err: at com.a5corp.weather.internet.FetchWeather.doInBackground(FetchWeather.java:45) 10-19 18:26:40.264 7016 7034 W System.err: at com.a5corp.weather.internet.FetchWeather.doInBackground(FetchWeather.java:25) 10-19 18:26:40.264 7016 7034 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:305) 10-19 18:26:40.264 7016 7034 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 10-19 18:26:40.264 7016 7034 W System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 10-19 18:26:40.264 7016 7034 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 10-19 18:26:40.264 7016 7034 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 10-19 18:26:40.264 7016 7034 W System.err: at java.lang.Thread.run(Thread.java:761) 10-19 18:26:40.265 7016 7034 W System.err: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname) 10-19 18:26:40.265 7016 7034 W System.err: at libcore.io.Posix.android_getaddrinfo(Native Method) 10-19 18:26:40.265 7016 7034 W System.err: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55) 10-19 18:26:40.265 7016 7034 W System.err: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:106) 10-19 18:26:40.265 7016 7034 W System.err: ... 23 more 10-19 18:26:40.273 7016 7039 I System.out: metric 10-19 18:26:40.275 7016 7039 I FetchWeather: Execution Failed IO 10-19 18:26:40.275 7016 7039 W System.err: java.net.UnknownHostException: Unable to resolve host "api.openweathermap.org": No address associated with hostname 10-19 18:26:40.276 7016 7039 W System.err: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:95) 10-19 18:26:40.276 7016 7039 W System.err: at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74) 10-19 18:26:40.276 7016 7039 W System.err: at java.net.InetAddress.getAllByName(InetAddress.java:752) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:346) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:247) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 10-19 18:26:40.276 7016 7039 W System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java) 10-19 18:26:40.276 7016 7039 W System.err: at com.a5corp.weather.internet.FetchWeather.gsonWeather(FetchWeather.java:102) 10-19 18:26:40.276 7016 7039 W System.err: at com.a5corp.weather.internet.FetchWeather.doInBackground(FetchWeather.java:45) 10-19 18:26:40.276 7016 7039 W System.err: at com.a5corp.weather.internet.FetchWeather.doInBackground(FetchWeather.java:25) 10-19 18:26:40.277 7016 7039 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:305) 10-19 18:26:40.277 7016 7039 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 10-19 18:26:40.277 7016 7039 W System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 10-19 18:26:40.277 7016 7039 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 10-19 18:26:40.277 7016 7039 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 10-19 18:26:40.277 7016 7039 W System.err: at java.lang.Thread.run(Thread.java:761) 10-19 18:26:40.282 7016 7016 D AndroidRuntime: Shutting down VM 10-19 18:26:40.282 7016 7016 E AndroidRuntime: FATAL EXCEPTION: main 10-19 18:26:40.282 7016 7016 E AndroidRuntime: Process: com.a5corp.weather, PID: 7016 10-19 18:26:40.282 7016 7016 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.github.jorgecastilloprz.progressarc.ProgressArcView.stop()' on a null object reference 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at com.github.jorgecastilloprz.FABProgressCircle.hide(FABProgressCircle.java:166) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at com.a5corp.weather.fragment.WeatherFragment$4$1.run(WeatherFragment.java:273) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:751) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6186) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 10-19 18:26:40.282 7016 7016 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 10-19 18:26:40.284 944 956 W ActivityManager: Force finishing activity com.a5corp.weather/.activity.WeatherActivity

Starcommander avatar Oct 19 '18 16:10 Starcommander

10-19 18:26:40.263 7016 7034 W System.err: java.net.UnknownHostException: Unable to resolve host "api.openweathermap.org": No address associated with hostname

That is a specific case to your phone. Your phone is not able to access the site. That is why you got that error. That being said I am aware of the bug, but not sure why it is happening.

Sparker0i avatar Oct 19 '18 17:10 Sparker0i

Howto reproduce:

  • Activate WLAN on device, but not connected to any router.
  • Restart the app multible times, kill the app each time.

Reason: In FABProgressCircle the hide() function executes progressArc.stop(); But it is not ensured, whether progressArc is null or not. So this often throws a NullPointerException, and the app crashes.

How to solve:

--- a/app/src/main/java/com/a5corp/weather/fragment/WeatherFragment.java +++ b/app/src/main/java/com/a5corp/weather/fragment/WeatherFragment.java @@ -270,7 +270,9 @@ public class WeatherFragment extends Fragment { FirstStart(); } else { if (citys == null) + try{ fabProgressCircle.hide(); + } catch (Exception e) { Log.e("Exception", "FabProgressCircle was not initialized!", e); } cc = new CheckConnection(context()); if (!cc.isNetworkAvailable()) { showNoInternet();

Starcommander avatar Oct 19 '18 18:10 Starcommander

Will try this out later, thanks :+1:

Sparker0i avatar Oct 19 '18 19:10 Sparker0i