NPE when opening settings during failed startup
- Android version: 7.1.2
- Phone model: Samsung GT-I9100
- Briar version: 0.16.17 (347c2f22)
- User feedback: "Infinite init loop after password entry in Contacts, Blogs, ... Entering Settings, Crash Report"
Stacktrace:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.briarproject.bramble.api.StringMap.getBoolean(java.lang.String, boolean)' on a null object reference
at org.briarproject.briar.android.settings.SettingsFragment.lambda$onCreatePreferences$0$SettingsFragment(SettingsFragment.java:151)
at org.briarproject.briar.android.settings.SettingsFragment$$Lambda$0.onPreferenceClick(Unknown Source)
at android.support.v7.preference.Preference.performClick(Preference.java:1116)
at android.support.v7.preference.Preference.performClick(Preference.java:1099)
at android.support.v7.preference.Preference$1.onClick(Preference.java:169)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
The user's comment about "infinite init loop" seems to refer to the database failing to open. The log shows LifecycleManagerImpl
starting services at 06:52, then apparently the call to DatabaseComponent#open()
still hasn't returned at 08:37 when the user opens the settings screen.
So we seem to have two bugs here:
- Startup failed for some reason
- SettingsFragment didn't wait for startup to complete before trying to access settings
Log extract:
02-16 06:52:35.663 I/ACRA (21540): ACRA is enabled for org.briarproject.briar.beta, initializing...
02-16 06:52:35.804 I/BriarApplicationImpl(21540): Created
02-16 06:52:35.904 I/CryptoComponentImpl(21540): Default SecureRandom: AndroidOpenSSL SHA1PRNG
02-16 06:52:35.985 I/CryptoComponentImpl(21540): Installed SecureRandom: LinuxPRNG SHA1PRNG
02-16 06:52:36.013 I/BriarApplicationImpl(21560): Created
02-16 06:52:36.027 I/CryptoComponentImpl(21560): Default SecureRandom: AndroidOpenSSL SHA1PRNG
02-16 06:52:36.049 I/CryptoComponentImpl(21560): Installed SecureRandom: LinuxPRNG SHA1PRNG
02-16 06:52:36.052 I/LifecycleManagerImpl(21540): Registering executor TimeLoggingExecutor
02-16 06:52:36.055 I/LifecycleManagerImpl(21540): Registering executor ThreadPoolExecutor
02-16 06:52:36.055 I/LifecycleManagerImpl(21540): Registering executor DelegatedScheduledExecutorService
02-16 06:52:36.059 I/LifecycleManagerImpl(21560): Registering executor TimeLoggingExecutor
02-16 06:52:36.059 I/LifecycleManagerImpl(21560): Registering executor ThreadPoolExecutor
02-16 06:52:36.059 I/LifecycleManagerImpl(21560): Registering executor DelegatedScheduledExecutorService
02-16 06:52:36.061 I/LifecycleManagerImpl(21540): Registering service KeyManagerImpl
02-16 06:52:36.061 I/LifecycleManagerImpl(21540): Registering executor TimeLoggingExecutor
02-16 06:52:36.064 I/LifecycleManagerImpl(21560): Registering service KeyManagerImpl
02-16 06:52:36.064 I/LifecycleManagerImpl(21540): Registering service ValidationManagerImpl
02-16 06:52:36.064 I/LifecycleManagerImpl(21560): Registering executor TimeLoggingExecutor
02-16 06:52:36.065 I/LifecycleManagerImpl(21560): Registering service ValidationManagerImpl
02-16 06:52:36.065 I/LifecycleManagerImpl(21540): Registering client TransportPropertyManagerImpl
02-16 06:52:36.065 I/LifecycleManagerImpl(21540): Registering service PluginManagerImpl
02-16 06:52:36.069 I/LifecycleManagerImpl(21540): Registering client BlogManagerImpl
02-16 06:52:36.070 I/LifecycleManagerImpl(21540): Registering client FeedManagerImpl
02-16 06:52:36.071 I/LifecycleManagerImpl(21540): Registering client GroupInvitationManagerImpl
02-16 06:52:36.071 I/LifecycleManagerImpl(21540): Registering client MessagingManagerImpl
02-16 06:52:36.072 I/LifecycleManagerImpl(21560): Registering client TransportPropertyManagerImpl
02-16 06:52:36.072 I/LifecycleManagerImpl(21560): Registering service PluginManagerImpl
02-16 06:52:36.073 I/LifecycleManagerImpl(21560): Registering client BlogManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21540): Registering client ForumSharingManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21560): Registering client FeedManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21540): Registering client BlogSharingManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21560): Registering client GroupInvitationManagerImpl
02-16 06:52:36.074 I/LifecycleManagerImpl(21560): Registering client MessagingManagerImpl
02-16 06:52:36.075 I/LifecycleManagerImpl(21560): Registering client ForumSharingManagerImpl
02-16 06:52:36.075 I/LifecycleManagerImpl(21560): Registering client BlogSharingManagerImpl
02-16 06:52:36.075 I/LifecycleManagerImpl(21540): Registering client IntroductionManagerImpl
02-16 06:52:36.082 I/LifecycleManagerImpl(21560): Registering client IntroductionManagerImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21540): Registering service AndroidNotificationManagerImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21560): Registering service AndroidNotificationManagerImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21540): Registering service NetworkUsageLogger
02-16 06:52:36.101 I/LifecycleManagerImpl(21540): Registering service DozeWatchdogImpl
02-16 06:52:36.101 I/LifecycleManagerImpl(21560): Registering service NetworkUsageLogger
02-16 06:52:36.101 I/LifecycleManagerImpl(21560): Registering service DozeWatchdogImpl
02-16 06:52:36.925 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 06:52:36.994 I/TextInputLayout(21540): EditText added is not a TextInputEditText. Please switch to using that class instead.
02-16 06:52:37.744 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 06:52:42.510 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 06:52:42.526 I/BriarService(21540): Created
02-16 06:52:42.554 I/LifecycleManagerImpl(21540): Starting services
02-16 06:52:43.037 W/IInputConnectionWrapper(21540): finishComposingText on inactive InputConnection
02-16 06:52:45.991 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 07:14:58.613 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 07:15:04.718 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 08:34:42.669 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 08:34:54.789 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 08:34:54.798 I/BriarRecyclerView(21540): Adding Handler Callback
02-16 08:35:54.856 I/BriarRecyclerView(21540): Updating Content...
02-16 08:36:54.916 I/BriarRecyclerView(21540): Updating Content...
02-16 08:37:11.963 I/BriarRecyclerView(21540): Removing Handler Callback
02-16 08:37:34.413 E/ACRA (21540): ACRA caught a NullPointerException for org.briarproject.briar.beta