briar issueshttps://code.briarproject.org/briar/briar/-/issues2021-11-04T11:03:25Zhttps://code.briarproject.org/briar/briar/-/issues/1900Crash when scanning QR code2021-11-04T11:03:25ZakwizgranCrash when scanning QR code* Android version: 4.2.2
* Phone model: ThL W200S
* Briar version: 1.2.9
Stacktrace:
```
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at...* Android version: 4.2.2
* Phone model: ThL W200S
* Briar version: 1.2.9
Stacktrace:
```
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:838)
Caused by: com.google.zxing.NotFoundException
com.google.zxing.NotFoundException
```
Edited log:
```
08-20 18:28:48.357 I/CameraView: Best size 960x540
08-20 18:28:48.380 I/CameraView: Video stabilisation enabled: true
08-20 18:28:48.380 I/CameraView: Scene mode: auto
08-20 18:28:48.380 I/CameraView: Focus mode: continuous-picture
08-20 18:28:48.380 I/CameraView: Flash mode: off
08-20 18:28:48.380 I/CameraView: Preview size: 960x540
08-20 18:28:48.398 I/ConnectionChooserImpl: Got connection for org.briarproject.bramble.lan
08-20 18:28:48.398 I/ConnectionChooserImpl: Already stopped
08-20 18:28:48.408 I/KeyAgreementConnector: Starting BQP listeners
08-20 18:28:48.408 I/BluetoothPlugin: Key agreement UUID f4ef05da-bb49-32d7-91d7-025efce30d3f
08-20 18:28:48.420 I/KeyAgreementConnector: Listening via org.briarproject.bramble.bluetooth
08-20 18:28:48.425 I/ConnectionChooserImpl: Got connection for org.briarproject.bramble.bluetooth
08-20 18:28:48.425 I/ConnectionChooserImpl: Already stopped
08-20 18:28:48.452 I/RenewableWakeLock: Releasing wake lock org.briarproject.briar.android
08-20 18:28:48.454 I/BluetoothConnectionLimiterImpl: Connection closed, 0 open
08-20 18:28:48.471 I/CameraView: Surface created
08-20 18:28:48.471 I/CameraView: Surface changed: 720x1118
08-20 18:28:48.479 I/CameraView: Best size 960x540
08-20 18:28:48.482 I/KeyAgreementConnector: Listening via org.briarproject.bramble.lan
08-20 18:28:48.489 I/CameraView: Video stabilisation enabled: true
08-20 18:28:48.489 I/CameraView: Scene mode: auto
08-20 18:28:48.489 I/CameraView: Focus mode: continuous-picture
08-20 18:28:48.489 I/CameraView: Flash mode: off
08-20 18:28:48.489 I/CameraView: Preview size: 960x540
08-20 18:28:48.489 I/CameraView: Starting preview
08-20 18:28:48.786 I/BluetoothConnectionLimiterImpl: Key agreement ended
08-20 18:28:48.790 I/CameraView: Stopping preview
08-20 18:28:48.790 I/KeyAgreementConnector: Stopping BQP listeners
08-20 18:28:48.792 I/ConnectionChooserImpl: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
08-20 18:28:48.792 I/ConnectionChooserImpl: java.net.SocketException: Socket closed
08-20 18:28:48.793 I/ConnectionChooserImpl: Closing 0 unused connections
08-20 18:28:48.921 I/CameraView: Releasing camera
08-20 18:28:49.236 I/BluetoothConnectionLimiterImpl: Key agreement started
08-20 18:28:49.236 I/BluetoothConnectionLimiterImpl: Key agreement ended
08-20 18:28:49.651 I/CameraView: Surface destroyed
08-20 18:28:49.677 W/BriarService: Trim memory: running critically low
08-20 18:28:53.718 I/CameraView: Setting preview consumer
08-20 18:28:53.719 I/CameraView: Opening camera
08-20 18:28:53.720 I/CameraView: Using back-facing camera
08-20 18:28:53.883 I/CameraView: Screen rotation 0 degrees, camera orientation 90 degrees
08-20 18:28:53.890 I/CameraView: Scene modes: [auto, portrait, landscape, night, night-portrait, theatre, beach, snow, sunset, steadyphoto, fireworks, sports, party, candlelight, hdr]
08-20 18:28:53.890 I/CameraView: Focus modes: [auto, macro, infinity, continuous-picture, continuous-video, manual, fullscan]
08-20 18:28:53.909 I/CameraView: Video stabilisation enabled: true
08-20 18:28:53.909 I/CameraView: Scene mode: auto
08-20 18:28:53.909 I/CameraView: Focus mode: continuous-picture
08-20 18:28:53.909 I/CameraView: Flash mode: off
08-20 18:28:53.909 I/CameraView: Preview size: 640x480
08-20 18:28:53.914 I/KeyAgreementConnector: Stopping BQP listeners
08-20 18:28:53.914 I/ConnectionChooserImpl: Closing 0 unused connections
08-20 18:28:53.914 I/KeyAgreementConnector: Starting BQP listeners
08-20 18:28:53.915 I/BluetoothPlugin: Key agreement UUID 5a6c42f2-82d3-3e9a-bdaa-8c685cc96898
08-20 18:28:53.931 I/KeyAgreementConnector: Listening via org.briarproject.bramble.bluetooth
08-20 18:28:53.962 I/KeyAgreementConnector: Listening via org.briarproject.bramble.lan
08-20 18:28:53.968 I/BluetoothConnectionLimiterImpl: Key agreement ended
08-20 18:28:53.975 I/CameraView: Surface created
08-20 18:28:53.975 I/CameraView: Surface changed: 720x1118
08-20 18:28:53.979 I/CameraView: Best size 960x540
08-20 18:28:53.988 I/CameraView: Video stabilisation enabled: true
08-20 18:28:53.988 I/CameraView: Scene mode: auto
08-20 18:28:53.988 I/CameraView: Focus mode: continuous-picture
08-20 18:28:53.988 I/CameraView: Flash mode: off
08-20 18:28:53.988 I/CameraView: Preview size: 960x540
08-20 18:28:53.988 I/CameraView: Starting preview
08-20 18:28:54.251 I/BluetoothConnectionLimiterImpl: Key agreement started
08-20 18:28:54.251 I/KeyAgreementFragment: Local payload is 48 bytes
08-20 18:28:55.411 I/RenewableWakeLock: Renewing wake lock org.briarproject.briar.android
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/1898OOM error at startup2023-08-24T14:06:26ZakwizgranOOM error at startupI'm opening a new ticket for this because it doesn't seem to have the same cause as #1607.
* Android version: 9
* Phone model: Motorola Moto Z4 (foles)
* Briar version: 1.2.7 (eb562f8)
* System memory: 3629 MiB total, 1421 MiB free, 291...I'm opening a new ticket for this because it doesn't seem to have the same cause as #1607.
* Android version: 9
* Phone model: Motorola Moto Z4 (foles)
* Briar version: 1.2.7 (eb562f8)
* System memory: 3629 MiB total, 1421 MiB free, 291 MiB threshold
* VM memory: 6 MiB allocated, 3 MiB free, 128 MiB maximum
Stacktrace:
```
java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available
```
Log:
```
05-07 02:51:43.754 I/BriarApplicationImpl: Created
05-07 02:51:43.769 I/CryptoComponentImpl: Default SecureRandom: AndroidOpenSSL SHA1PRNG
05-07 02:51:43.889 I/CryptoComponentImpl: Installed SecureRandom: UnixPRNG SHA1PRNG
05-07 02:51:44.047 I/LifecycleManagerImpl: Registering executor TimeLoggingExecutor
05-07 02:51:44.047 I/LifecycleManagerImpl: Registering executor ThreadPoolExecutor
05-07 02:51:44.047 I/LifecycleManagerImpl: Registering executor ScheduledThreadPoolExecutor
05-07 02:51:44.047 I/LifecycleManagerImpl: Registering service AndroidNetworkManager
05-07 02:51:44.048 I/LifecycleManagerImpl: Registering service AndroidBatteryManager
05-07 02:51:44.048 I/LifecycleManagerImpl: Registering service KeyManagerImpl
05-07 02:51:44.049 I/LifecycleManagerImpl: Registering open database hook IdentityManagerImpl
05-07 02:51:44.049 I/LifecycleManagerImpl: Registering executor TimeLoggingExecutor
05-07 02:51:44.057 I/LifecycleManagerImpl: Registering service ValidationManagerImpl
05-07 02:51:44.059 I/LifecycleManagerImpl: Registering open database hook ClientVersioningManagerImpl
05-07 02:51:44.059 I/LifecycleManagerImpl: Registering service ClientVersioningManagerImpl
05-07 02:51:44.060 I/LifecycleManagerImpl: Registering open database hook TransportPropertyManagerImpl
05-07 02:51:44.061 I/LifecycleManagerImpl: Registering service PluginManagerImpl
05-07 02:51:44.061 I/LifecycleManagerImpl: Registering service RendezvousPollerImpl
05-07 02:51:44.065 I/LifecycleManagerImpl: Registering open database hook BlogManagerImpl
05-07 02:51:44.067 I/LifecycleManagerImpl: Registering open database hook FeedManagerImpl
05-07 02:51:44.072 I/LifecycleManagerImpl: Registering open database hook GroupInvitationManagerImpl
05-07 02:51:44.073 I/LifecycleManagerImpl: Registering open database hook MessagingManagerImpl
05-07 02:51:44.076 I/LifecycleManagerImpl: Registering open database hook ForumSharingManagerImpl
05-07 02:51:44.077 I/LifecycleManagerImpl: Registering open database hook BlogSharingManagerImpl
05-07 02:51:44.080 I/LifecycleManagerImpl: Registering open database hook IntroductionManagerImpl
05-07 02:51:44.081 I/LifecycleManagerImpl: Registering service AndroidNotificationManagerImpl
05-07 02:51:44.082 I/LifecycleManagerImpl: Registering service ScreenFilterMonitorImpl
05-07 02:51:44.082 I/LifecycleManagerImpl: Registering service NetworkUsageLogger
05-07 02:51:44.082 I/LifecycleManagerImpl: Registering service DozeWatchdogImpl
05-07 02:51:44.085 I/LifecycleManagerImpl: Registering service LockManagerImpl
05-07 02:51:44.086 I/LifecycleManagerImpl: Registering open database hook RecentEmojiImpl
05-07 02:51:44.209 I/BaseActivity: Starting SplashScreenActivity
05-07 02:51:44.868 I/BaseActivity: Starting NavDrawerActivity
05-07 02:51:44.915 I/AccountManagerImpl: Found database key in primary file
05-07 02:51:44.917 I/BaseActivity: Starting StartupActivity
05-07 02:51:46.391 I/BaseActivity: Stopping NavDrawerActivity
05-07 02:51:46.400 I/BaseActivity: Stopping SplashScreenActivity
05-07 02:51:56.059 I/AccountManagerImpl: Found database key in primary file
```
Looks like the app threw an OOM while showing the password screen, with only 6 MB of 128 MB allocated. :shrug:Android 1.4https://code.briarproject.org/briar/briar/-/issues/1776NPE in exit transition2021-11-04T11:03:23ZakwizgranNPE in exit transition* Android version: 10
* Phone model: Huawei ELE-L29
* Briar version: 1.2.9 (9d96ce6)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.Activity.isTopOfTask()' on a null object referenc...* Android version: 10
* Phone model: Huawei ELE-L29
* Briar version: 1.2.9 (9d96ce6)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.Activity.isTopOfTask()' on a null object reference
at android.app.ExitTransitionCoordinator.notifyComplete(ExitTransitionCoordinator.java:437)
at android.app.ExitTransitionCoordinator.onReceiveResult(ExitTransitionCoordinator.java:91)
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8347)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/1698SecurityException when binding Bluetooth socket2022-12-28T13:18:55ZakwizgranSecurityException when binding Bluetooth socket* Android version: 9
* Phone model: Honor COL-L29 (COL-L29RU)
* Briar version: 1.2.4 (75dfa80)
Stacktrace:
```
java.lang.SecurityException: Not allowed for non-active users
at android.os.Parcel.createException(Parcel.java:1953)
...* Android version: 9
* Phone model: Honor COL-L29 (COL-L29RU)
* Briar version: 1.2.4 (75dfa80)
Stacktrace:
```
java.lang.SecurityException: Not allowed for non-active users
at android.os.Parcel.createException(Parcel.java:1953)
at android.os.Parcel.readException(Parcel.java:1921)
at android.os.Parcel.readException(Parcel.java:1871)
at android.bluetooth.IBluetoothSocketManager$Stub$Proxy.createSocketChannel(IBluetoothSocketManager.java:207)
at android.bluetooth.BluetoothSocket.bindListen(BluetoothSocket.java:456)
at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:2152)
at android.bluetooth.BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(BluetoothAdapter.java:2103)
at org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPlugin.openServerSocket(AndroidBluetoothPlugin.java:158)
at org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPlugin.openServerSocket(AndroidBluetoothPlugin.java:57)
at org.briarproject.bramble.plugin.bluetooth.BluetoothPlugin.lambda$bind$0$BluetoothPlugin(BluetoothPlugin.java:179)
at org.briarproject.bramble.plugin.bluetooth.-$$Lambda$BluetoothPlugin$5LFrMRmXQDZNSHk-RYMiHxB1iBE.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
```
Edited log:
```
12-23 13:01:56.423 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
...
12-23 13:01:57.318 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
...
12-23 13:02:01.460 I/AndroidBluetoothPlugin: Scan mode: None
12-23 13:02:02.034 I/AndroidBluetoothPlugin: Scan mode: None
12-23 13:02:02.051 I/BluetoothPlugin: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
12-23 13:02:02.069 I/BluetoothPlugin: Bluetooth disabled
12-23 13:02:02.070 I/BluetoothConnectionLimiterImpl: All connections closed
...
12-23 13:02:05.087 I/BluetoothPlugin: Bluetooth enabled
12-23 13:02:05.257 I/BluetoothPlugin: Local address null
```
No activities are shown stopping/starting when the screen turns off/on, which suggests Briar's running in the background. Looks like there might be a restriction on background apps binding Bluetooth sockets.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1674NPE in ContactListFragment2021-11-04T11:03:44ZakwizgranNPE in ContactListFragment* Android version: 10
* Phone model: Google Pixel 2 XL (taimen)
* Briar version: 1.2.4 (75dfa80)
* User feedback: "Opened the app after many messages were sent."
Stacktrace:
```
java.lang.NullPointerException: Attempt to read from field...* Android version: 10
* Phone model: Google Pixel 2 XL (taimen)
* Briar version: 1.2.4 (75dfa80)
* User feedback: "Opened the app after many messages were sent."
Stacktrace:
```
java.lang.NullPointerException: Attempt to read from field 'android.widget.ImageView org.briarproject.briar.android.contact.ContactItemViewHolder.avatar' on a null object reference
at org.briarproject.briar.android.contact.ContactListFragment.lambda$onCreateView$0$ContactListFragment(ContactListFragment.java:140)
at org.briarproject.briar.android.contact.-$$Lambda$ContactListFragment$DvpyzIeg2gO44NHGy22U4l_irhw.onItemClick(Unknown Source:4)
at org.briarproject.briar.android.contact.ContactItemViewHolder.lambda$bind$0$ContactItemViewHolder(ContactItemViewHolder.java:58)
at org.briarproject.briar.android.contact.-$$Lambda$ContactItemViewHolder$M1B1WNtK1OEXOZpZndUVONB779k.onClick(Unknown Source:6)
at android.view.View.performClick(View.java:7140)
at android.view.View.performClickInternal(View.java:7117)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27351)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
```
Edited log:
```
11-26 19:32:16.943 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
11-26 19:32:25.628 I/BaseActivity: Starting ConversationActivity
11-26 19:32:25.674 I/BaseActivity: Starting UnlockActivity
11-26 19:32:25.697 I/BaseActivity: Stopping UnlockActivity
11-26 19:32:25.698 I/BaseActivity: Stopping ConversationActivity
11-26 19:32:25.751 I/BaseActivity: Starting UnlockActivity
11-26 19:32:25.776 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
11-26 19:32:25.997 I/BaseActivity: Starting NavDrawerActivity
11-26 19:32:26.025 I/BaseActivity: Starting UnlockActivity
11-26 19:32:26.103 I/BaseActivity: Stopping NavDrawerActivity
11-26 19:32:26.207 I/BaseActivity: Stopping UnlockActivity
11-26 19:32:26.830 I/BaseActivity: Starting NavDrawerActivity
11-26 19:32:27.387 I/BaseActivity: Stopping UnlockActivity
11-26 19:32:29.054 I/ConversationActivity: Eagerly loading text for latest message
11-26 19:32:29.108 I/ContactListFragment: Concurrent update, reloading
11-26 19:32:30.076 I/ContactListFragment: Conversation message received, updating item
```
There are some odd things about this log:
1. ConversationActivity and UnlockActivity seem to be started while the screen is off. I'm guessing this isn't really the case, it's just that the SCREEN_ON broadcast was received a while after the screen was actually turned on.
2. ConversationActivity is stopped at 19:32:25 and not subsequently started. But at 19:32:29 it eagerly loads the text for a new message.
* It shouldn't be doing any work while stopped.
* If we show the contact list after unlocking then we should clear the stack down to the existing instance of NavDrawerActivity, if any, which should destroy any existing instance of ConversationActivity.
3. A message arrives while ContactListFragment is loading the contact list, which presumably started at 19:32:26 when NavDrawerActivity was started. This causes ContactListFragment to reload the contact list. It's not clear whether the reload has completed before we try to update the item, triggering the crash.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1672IllegalStateException animating FabSpeedDial2023-05-30T16:09:33ZakwizgranIllegalStateException animating FabSpeedDial* Android version: 6.0
* Phone model: Huawei CRO-L22
* Briar version: 1.2.4 (75dfa80)
Stacktrace:
```
java.lang.IllegalStateException: Cannot start this animator on a detached view!
at android.view.RenderNode.addAnimator(RenderN...* Android version: 6.0
* Phone model: Huawei CRO-L22
* Briar version: 1.2.4 (75dfa80)
Stacktrace:
```
java.lang.IllegalStateException: Cannot start this animator on a detached view!
at android.view.RenderNode.addAnimator(RenderNode.java:812)
at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:300)
at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:282)
at android.animation.RevealAnimator.<init>(RevealAnimator.java:37)
at android.view.ViewAnimationUtils.createCircularReveal(ViewAnimationUtils.java:55)
at io.github.kobakei.materialfabspeeddial.FabSpeedDial$6.run(FabSpeedDial.java:491)
at android.os.Handler.handleCallback(Handler.java:820)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5811)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:802)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:692)
```
Edited log:
```
11-24 04:48:14.450 I/AndroidAccountManager: No database key in preferences
11-24 04:48:14.452 I/AccountManagerImpl: Found database key in primary file
11-24 04:48:14.456 I/BaseActivity: Starting StartupActivity
11-24 04:48:16.369 I/IdentityManagerImpl: Identity stored
11-24 04:48:16.413 I/LifecycleManagerImpl: Starting services
11-24 04:48:16.425 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
11-24 04:48:16.428 I/AndroidNetworkManager: Received broadcast android.net.wifi.WIFI_AP_STATE_CHANGED
11-24 04:48:16.471 I/PluginManagerImpl: Starting simplex plugins
11-24 04:48:16.471 I/PluginManagerImpl: Starting duplex plugins
11-24 04:48:16.618 I/BriarActivity: Recreating NavDrawerActivity after signing in
11-24 04:48:16.864 I/BaseActivity: Stopping NavDrawerActivity
11-24 04:48:17.022 I/BaseActivity: Starting NavDrawerActivity
11-24 04:48:17.339 I/BaseActivity: Stopping SetupActivity
11-24 04:48:17.507 I/BaseActivity: Stopping StartupActivity
11-24 04:48:56.433 I/BaseActivity: Stopping NavDrawerActivity
11-24 04:48:56.653 I/BaseActivity: Starting NavDrawerActivity
11-24 04:48:56.843 I/BaseActivity: Stopping NavDrawerActivity
11-24 04:48:56.982 I/BaseActivity: Starting NavDrawerActivity
```Android 1.2https://code.briarproject.org/briar/briar/-/issues/1637Wrong orientation of (exotic) rotated images2022-04-26T10:45:03ZTorsten GroteWrong orientation of (exotic) rotated imagesWhen sending a photo with an EXIF orientation of 90, it is shown rotated 90 degrees to the left in the preview of the sender, the conversation and image view of the receiver. However, it is shown correctly in Android's Gallery app.When sending a photo with an EXIF orientation of 90, it is shown rotated 90 degrees to the left in the preview of the sender, the conversation and image view of the receiver. However, it is shown correctly in Android's Gallery app.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1602Add block status table to database2022-06-15T12:02:16ZakwizgranAdd block status table to databaseFor multi-block messages we need to track the sync status of individual blocks as well as whole messages.
Subtask of #1240.For multi-block messages we need to track the sync status of individual blocks as well as whole messages.
Subtask of #1240.Multi-block messagesakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1601Delete block rows for deleted messages2022-06-15T12:02:17ZakwizgranDelete block rows for deleted messagesAs well as deleting the content of blocks when we delete a message, it would be nice if we could delete the rows from the blocks table.
Subtask of #1239.As well as deleting the content of blocks when we delete a message, it would be nice if we could delete the rows from the blocks table.
Subtask of #1239.Multi-block messageshttps://code.briarproject.org/briar/briar/-/issues/1595Add blocks table to database2022-06-15T12:02:17ZakwizgranAdd blocks table to databaseSubtask of #1240Subtask of #1240Multi-block messagesakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1525IllegalThreadStateException when starting contact exchange task2021-11-04T11:03:43ZakwizgranIllegalThreadStateException when starting contact exchange task* Android version: 8.1.0
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: OnePlus A0001 (bacon)
* User feedback: "Tried to connect @ 35C3 during the event."
Stacktrace:
```
java.lang.IllegalThreadStateException
at java.lang.Threa...* Android version: 8.1.0
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: OnePlus A0001 (bacon)
* User feedback: "Tried to connect @ 35C3 during the event."
Stacktrace:
```
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:724)
at org.briarproject.bramble.contact.ContactExchangeTaskImpl.startExchange(ContactExchangeTaskImpl.java:113)
at org.briarproject.briar.android.keyagreement.ContactExchangeActivity.lambda$startContactExchange$0(ContactExchangeActivity.java:66)
at org.briarproject.briar.android.keyagreement.-$$Lambda$ContactExchangeActivity$fyog59L3yYwzJYBvp0hzYrpHYRo.run(Unknown Source:4)
at org.briarproject.briar.android.controller.DbControllerImpl.lambda$runOnDbThread$0(DbControllerImpl.java:35)
at org.briarproject.briar.android.controller.-$$Lambda$DbControllerImpl$SwC9ndeQwlnMM-VN8yvqCJG1ESc.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
```
This exception is thrown if start() is called when the thread isn't in the initial state. A couple of guesses about how this could have happened:
* A ContactExchangeTask instance was reused across multiple contacts
* A ContactExchangeActivity instance received multiple KeyAgreementFinishedEvents, possibly relating to different contacts, each of which cause it to start its ContactExchangeTask
Assigning to myself as I'm refactoring this code for remote contacts.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1500Check PNGs for exploits before passing them to Android2021-11-04T11:03:44ZakwizgranCheck PNGs for exploits before passing them to AndroidWe need to find out how to detect PNGs that can exploit this vulnerability, so we can avoid passing them to Android:
https://www.zdnet.com/article/opening-this-image-file-grants-hackers-access-to-your-android-phone/
Subtask of #1237.We need to find out how to detect PNGs that can exploit this vulnerability, so we can avoid passing them to Android:
https://www.zdnet.com/article/opening-this-image-file-grants-hackers-access-to-your-android-phone/
Subtask of #1237.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1499Tor process crashes2023-09-15T16:50:20ZTorsten GroteTor process crashesWhen enabling/disabling the Tor plugin in quick succession one sometimes can get the Tor process to exit.
There's two ways that have been observed so far:
The first one prints an exception whenever trying to make control commands:
```r...When enabling/disabling the Tor plugin in quick succession one sometimes can get the Tor process to exit.
There's two ways that have been observed so far:
The first one prints an exception whenever trying to make control commands:
```ruby
W/TorPlugin: java.io.IOException: Tor is no longer running
java.io.IOException: Tor is no longer running
at net.freehaven.tor.control.TorControlConnection.react(TorControlConnection.java:325)
```
The second one doesn't print anything to the log. The TorPlugin seems to hang (only prints on the event thread) and signing out of Briar isn't possible anymore. It just hangs at the sign out fragment.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1493Latest message isn't always fully visible after loading conversation2021-11-04T11:03:44ZakwizgranLatest message isn't always fully visible after loading conversationWhen opening a private conversation where the latest message contains multiple images, the bottom of the latest message is sometimes below the viewport, making it necessary to scroll down manually to see the whole message. This can happe...When opening a private conversation where the latest message contains multiple images, the bottom of the latest message is sometimes below the viewport, making it necessary to scroll down manually to see the whole message. This can happen regardless of whether the latest message has any text.
Logging shows that we're eagerly loading the text of the latest message, if it has any, and automatically scrolling to the bottom after adding the text and images to each message, as expected. But for some reason this scrolling doesn't make the whole of the latest message visible.
Steps to reproduce:
* Check out the 1242-display-image-attachments-fake-data branch (commit 54082209)
* Create a test contact with no messages
* Repeatedly send a message to the contact, close and reopen the conversation (fake attachments will be added to the message when the conversation's reopened)
* Once there's more than a screenful of messages and the latest message has multiple images, repeatedly close and reopen the conversation without sending any more messages
* It may take a lot of tries to reproduce the bug
The bug seems to be a race condition. I was able to reproduce it on the Nexus 5X and the Moto G 4G.
Subtask of #1237.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1486UI lifecycle callbacks may be called when not signed in2022-04-19T15:48:27ZakwizgranUI lifecycle callbacks may be called when not signed inIf the user relaunches Briar from the recent apps list, activities may be recreated, started and resumed before `BriarActivity#onResume()` checks whether the user's signed in and launches PasswordActivity.
Usually this only applies to N...If the user relaunches Briar from the recent apps list, activities may be recreated, started and resumed before `BriarActivity#onResume()` checks whether the user's signed in and launches PasswordActivity.
Usually this only applies to NavDrawerActivity, because it's on the top of the stack when the user signs out. But if Briar's killed without signing out, other activities may be on the top of the stack when the user relaunches Briar.
Some of our lifecycle callbacks start operations that could throw exceptions if the user isn't signed in, as in #1482.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1480Change Light theme background color to pure white2021-11-04T11:03:42ZElio Qoshielio@ura.designChange Light theme background color to pure whiteThe background color in the light theme has been changed to a light gray in the past, although it was not intended for that use. The referred color is `#E3EBEE`
That color should be changed to pure white `#ffffff` to adhere to Material D...The background color in the light theme has been changed to a light gray in the past, although it was not intended for that use. The referred color is `#E3EBEE`
That color should be changed to pure white `#ffffff` to adhere to Material Design standards regarding color.
Examples:
![image](/uploads/2c880d352b6b6681259242b2013ee8d8/image.png) ![image](/uploads/39c80803a6c42724d9768fe652194507/image.png)Android 1.4https://code.briarproject.org/briar/briar/-/issues/1457IllegalArgumentException when resuming activity2021-11-04T11:03:44ZakwizgranIllegalArgumentException when resuming activity* Android version: 7.0
* Phone model: Motorola Moto G (5) Plus (potter)
* Briar version: 1.1.1 (9476782)
Stacktrace:
```
java.lang.RuntimeException: Unable to resume activity {org.briarproject.briar.android/org.briarproject.briar.androi...* Android version: 7.0
* Phone model: Motorola Moto G (5) Plus (potter)
* Briar version: 1.1.1 (9476782)
Stacktrace:
```
java.lang.RuntimeException: Unable to resume activity {org.briarproject.briar.android/org.briarproject.briar.android.contact.ConversationActivity}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3421)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3461)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Caused by: java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1687)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:5569)
at android.app.Activity.isTopOfTask(Activity.java:5969)
at android.app.Activity.onResume(Activity.java:1256)
at android.support.v4.app.FragmentActivity.onResume(FragmentActivity.java:485)
at org.briarproject.briar.android.activity.BriarActivity.onResume(BriarActivity.java:82)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1291)
at android.app.Activity.performResume(Activity.java:6776)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3398)
... 8 more
java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1687)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:5569)
at android.app.Activity.isTopOfTask(Activity.java:5969)
at android.app.Activity.onResume(Activity.java:1256)
at android.support.v4.app.FragmentActivity.onResume(FragmentActivity.java:485)
at org.briarproject.briar.android.activity.BriarActivity.onResume(BriarActivity.java:82)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1291)
at android.app.Activity.performResume(Activity.java:6776)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3398)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3461)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/1432Headless integration tests2020-11-18T17:04:10ZTorsten GroteHeadless integration testsWe should add some integration tests for the REST API endpoints to catch breakage.We should add some integration tests for the REST API endpoints to catch breakage.Headless MVPhttps://code.briarproject.org/briar/briar/-/issues/1422ActivityRecord not found for ConversationActivity2022-06-13T15:11:23ZakwizgranActivityRecord not found for ConversationActivity* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J727A (j7popelteuc)
* User feedback: "It would not open any more."
Stacktrace:
```
java.lang.IllegalArgumentException: reportSizeConfigurations: Activit...* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J727A (j7popelteuc)
* User feedback: "It would not open any more."
Stacktrace:
```
java.lang.IllegalArgumentException: reportSizeConfigurations: ActivityRecord not found for: Token{72da83 ActivityRecord{c281601 u0 org.briarproject.briar.android/.contact.ConversationActivity t-1 f}}
at android.os.Parcel.readException(Parcel.java:2025)
at android.os.Parcel.readException(Parcel.java:1967)
at android.app.IActivityManager$Stub$Proxy.reportSizeConfigurations(IActivityManager.java:9838)
at android.app.ActivityThread.reportSizeConfigurations(ActivityThread.java:3102)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1711)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6958)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
```
Log:
```
10-08 10:37:18.003 I/AndroidAccountManager: No database key in preferences
10-08 10:37:18.005 I/AccountManagerImpl: Found database key in primary file
10-08 10:37:18.005 I/SplashScreenActivity: Account exists
10-08 10:37:18.403 I/AndroidAccountManager: No database key in preferences
10-08 10:37:18.403 I/AccountManagerImpl: Found database key in primary file
10-08 10:37:28.469 I/AndroidAccountManager: No database key in preferences
10-08 10:37:28.470 I/AccountManagerImpl: Found database key in primary file
10-08 10:37:29.093 I/BriarService: Created
10-08 10:37:29.114 I/LifecycleManagerImpl: Starting services
10-08 10:37:49.668 I/IdentityManagerImpl: No local author to store
10-08 10:37:49.671 I/IdentityManagerImpl: Local author loaded
10-08 10:37:49.679 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
10-08 10:37:55.291 I/PluginManagerImpl: Starting poller
10-08 10:37:55.292 I/PluginManagerImpl: Starting simplex plugins
10-08 10:37:55.292 I/PluginManagerImpl: Starting duplex plugins
10-08 10:37:55.308 I/AndroidLanTcpPlugin: Not connected to wifi
10-08 10:37:55.309 I/TorPlugin: Starting Tor
10-08 10:37:55.401 I/BluetoothPlugin: Local address null
10-08 10:37:55.452 I/BriarRecyclerView: Adding Handler Callback
10-08 10:37:57.166 I/TorPlugin: Oct 08 06:37:57.161 [notice] Tor 0.2.9.16 (git-645ef2e2854b2225) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2o and Zlib 1.2.8.
10-08 10:37:57.213 I/TorPlugin: Oct 08 06:37:57.165 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
10-08 10:37:57.214 I/TorPlugin: Oct 08 06:37:57.167 [notice] Read configuration file \"/data/user/0/org.briarproject.briar.android/app_tor/torrc\".
10-08 10:37:57.214 I/TorPlugin: Oct 08 06:37:57.191 [notice] Opening Control listener on 127.0.0.1:59051
10-08 10:37:57.214 I/TorPlugin: Oct 08 06:37:57.191 [notice] DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
10-08 10:37:57.216 I/TorPlugin: Auth cookie created
10-08 10:37:58.718 I/BriarRecyclerView: Adding Handler Callback
10-08 10:37:59.346 I/BriarRecyclerView: Removing Handler Callback
10-08 10:38:00.017 I/KeyboardAwareLinearLayout: onKeyboardOpen(542)
10-08 10:38:00.628 I/TorPlugin: Online: true, wifi: false
10-08 10:38:00.628 I/TorPlugin: Country code: US
10-08 10:38:00.628 I/TorPlugin: Enabling network, not using bridges
10-08 10:38:00.646 I/TorPlugin: NOTICE DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
10-08 10:38:00.646 I/RenewableWakeLock: Acquiring wake lock LocationManagerService
10-08 10:38:00.667 I/TorPlugin: NOTICE Opening Socks listener on 127.0.0.1:59050
10-08 10:38:01.703 I/TorPlugin: NOTICE Bootstrapped 80%: Connecting to the Tor network
10-08 10:38:01.704 I/TorPlugin: OR connection LAUNCHED $7AA7FC80E3E0D32E929D2CC094EACF529C95264C~steinpilz
10-08 10:38:01.705 I/TorPlugin: OR connection LAUNCHED $1E17564CDD5A6B70A6F73C053A479BC5EE2D0A89~Unnamed
10-08 10:38:01.930 I/TorPlugin: NOTICE Bootstrapped 85%: Finishing handshake with first hop
10-08 10:38:02.641 I/TorPlugin: OR connection CONNECTED $1E17564CDD5A6B70A6F73C053A479BC5EE2D0A89~Unnamed
10-08 10:38:02.660 I/TorPlugin: NOTICE Bootstrapped 90%: Establishing a Tor circuit
10-08 10:38:02.660 I/TorPlugin: OR connection CONNECTED $7AA7FC80E3E0D32E929D2CC094EACF529C95264C~steinpilz
10-08 10:38:02.934 I/TorPlugin: First circuit built
10-08 10:38:03.696 I/TorPlugin: NOTICE Tor has successfully opened a circuit. Looks like client functionality is working.
10-08 10:38:03.696 I/TorPlugin: NOTICE Bootstrapped 100%: Done
10-08 10:38:03.697 I/FeedManagerImpl: Tor started, scheduling RSS feed fetcher
10-08 10:38:03.698 I/Poller: Polling plugin org.briarproject.bramble.tor
10-08 10:38:24.455 I/BriarRecyclerView: Removing Handler Callback
10-08 10:38:25.001 I/TorPlugin: Creating hidden service
10-08 10:38:25.028 I/TorPlugin: Hidden service tsb[scrubbed]
10-08 10:38:25.078 I/TorPlugin: Connecting to vye[scrubbed]
10-08 10:38:34.140 I/TorPlugin: Connected to vye[scrubbed]
10-08 10:38:35.400 I/DuplexOutgoingSession: Generated ack: false
10-08 10:38:35.446 I/DuplexOutgoingSession: Next send time decreased
10-08 10:38:35.446 I/DuplexOutgoingSession: Checking for retransmittable messages
10-08 10:38:35.446 I/DuplexOutgoingSession: Generated batch: false
10-08 10:38:35.485 I/ConnectionRegistryImpl: Outgoing connection registered: org.briarproject.bramble.tor
10-08 10:38:35.485 I/ConnectionRegistryImpl: Contact connected
10-08 10:38:35.533 I/DuplexOutgoingSession: Next send time decreased
10-08 10:38:35.591 I/DuplexOutgoingSession: Generated offer: true
10-08 10:38:35.592 I/DuplexOutgoingSession: Sent offer
10-08 10:38:35.592 I/DuplexOutgoingSession: Generated request: false
10-08 10:38:35.634 I/DuplexOutgoingSession: Generated batch: false
10-08 10:38:35.684 I/DuplexOutgoingSession: Generated offer: false
10-08 10:38:35.962 I/DuplexOutgoingSession: Generated request: true
10-08 10:38:35.962 I/DuplexOutgoingSession: Sent request
10-08 10:38:35.963 I/DuplexOutgoingSession: Generated request: false
10-08 10:38:37.048 I/DuplexOutgoingSession: Generated batch: true
10-08 10:38:37.048 I/DuplexOutgoingSession: Sent batch
10-08 10:38:37.091 I/DuplexOutgoingSession: Generated batch: false
10-08 10:38:37.619 I/DuplexOutgoingSession: Generated ack: true
10-08 10:38:37.619 I/DuplexOutgoingSession: Sent ack
10-08 10:38:37.786 I/DuplexOutgoingSession: Generated ack: false
10-08 10:38:45.493 I/Poller: Polling plugin org.briarproject.bramble.tor
10-08 10:38:45.496 I/ConnectionRegistryImpl: 1 contacts connected: org.briarproject.bramble.tor
10-08 10:38:50.421 I/BriarRecyclerView: Adding Handler Callback
10-08 10:39:00.649 I/RenewableWakeLock: Renewing wake lock LocationManagerService
10-08 10:39:03.698 I/FeedManagerImpl: Updating RSS feeds...
10-08 10:39:03.785 I/FeedManagerImpl: Done updating RSS feeds
10-08 10:39:05.679 I/TorPlugin: Descriptor uploaded
10-08 10:39:05.849 I/TorPlugin: Descriptor uploaded
10-08 10:39:07.478 I/TorPlugin: Descriptor uploaded
10-08 10:39:07.619 I/DuplexOutgoingSession: Sending keepalive
10-08 10:39:07.738 I/TorPlugin: Descriptor uploaded
10-08 10:39:08.159 I/TorPlugin: Descriptor uploaded
10-08 10:39:10.053 I/TorPlugin: Descriptor uploaded
10-08 10:39:11.885 I/DuplexOutgoingSession: Generated request: true
10-08 10:39:11.886 I/DuplexOutgoingSession: Sent request
10-08 10:39:11.886 I/DuplexOutgoingSession: Generated request: false
10-08 10:39:13.477 I/DuplexOutgoingSession: Generated ack: true
10-08 10:39:13.477 I/DuplexOutgoingSession: Sent ack
10-08 10:39:13.638 I/ConversationActivity: Message received, adding
10-08 10:39:13.660 I/DuplexOutgoingSession: Generated ack: false
10-08 10:39:36.968 I/DuplexOutgoingSession: Checking for retransmittable messages
10-08 10:39:37.036 I/DuplexOutgoingSession: Generated batch: false
10-08 10:39:37.081 I/DuplexOutgoingSession: Generated offer: false
10-08 10:39:43.478 I/DuplexOutgoingSession: Sending keepalive
10-08 10:39:45.494 I/Poller: Polling plugin org.briarproject.bramble.tor
10-08 10:39:45.498 I/ConnectionRegistryImpl: 1 contacts connected: org.briarproject.bramble.tor
10-08 10:40:00.651 I/RenewableWakeLock: Renewing wake lock LocationManagerService
10-08 10:40:08.417 I/BriarRecyclerView: Adding Handler Callback
```
From the log, it looks like the crash happened soon after startup, after sending and receiving private messages. The last line of the log suggests a transition between activities was in progress.
(Incidentally, when reading logs I often rely on the BriarRecyclerView's messages about its handler callback to make guesses about what's happening to the UI. Maybe we should just log the name of each activity when it starts and stops?)Android 1.4https://code.briarproject.org/briar/briar/-/issues/1398IndexOutOfBoundsException in contact list2021-11-04T11:03:43ZakwizgranIndexOutOfBoundsException in contact list* Android version: 7.0
* Briar version: 1.1.1 (9476782)
* Phone model: AGM A8 (T88Q_14)
* User feedback: "Spontaneously crashes by itself. The impact of any third-party applications is not noticed. I cannot name any apparent reasons."
S...* Android version: 7.0
* Briar version: 1.1.1 (9476782)
* Phone model: AGM A8 (T88Q_14)
* User feedback: "Spontaneously crashes by itself. The impact of any third-party applications is not noticed. I cannot name any apparent reasons."
Stacktrace:
```
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{91bdea4 position=3 id=-1, old Pos=3, pLpos:-1 scrap [attachedScrap] tmpDetached no parent} android.support.v7.widget.RecyclerView{63190e8 VFED.V... .F....I. 0,0-720,1120 #7f09012d app:id/recyclerView}, adapter:org.briarproject.briar.android.contact.ContactListAdapter@cb5480b, layout:android.support.v7.widget.LinearLayoutManager@8a536e8, context:org.briarproject.briar.android.navdrawer.NavDrawerActivity@679576e
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5610)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5792)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3763)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3527)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1171)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:724)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2342)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2069)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6307)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
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:6086)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
```Android 1.4