briar issueshttps://code.briarproject.org/briar/briar/-/issues2023-10-06T16:19:42Zhttps://code.briarproject.org/briar/briar/-/issues/2449InvalidQrCode - Briar fails to pair with Mailbox2023-10-06T16:19:42ZLaurens NikolaisenInvalidQrCode - Briar fails to pair with MailboxWhen trying to pair Briar with a working Mailbox-Server hosted on a Linux Server, it fails with the following error:
`InvalidQrCode`
The Mailbox works with the Linux Desktop client without any issues. I did test on a Pixel 5 as well as ...When trying to pair Briar with a working Mailbox-Server hosted on a Linux Server, it fails with the following error:
`InvalidQrCode`
The Mailbox works with the Linux Desktop client without any issues. I did test on a Pixel 5 as well as a Pixel 4a running CalyxOS. Using older versions of the App did not work as well for me.
Relevant logs:
```
0-05 23:26:56.750 I/TorWrapper: V3 descriptor uploaded for f24[scrubbed]
10-05 23:26:57.735 I/CameraView: Setting preview consumer
10-05 23:26:57.736 I/CameraView: Opening camera
10-05 23:26:57.740 I/CameraView: Using back-facing camera
10-05 23:26:57.769 I/CameraView: Screen rotation 0 degrees, camera orientation 90 degrees
10-05 23:26:57.775 I/CameraView: Focus modes: [infinity, auto, macro, continuous-video, continuous-picture]
10-05 23:26:57.776 I/CameraView: Video stabilisation enabled: true
10-05 23:26:57.776 I/CameraView: Scene mode: null
10-05 23:26:57.776 I/CameraView: Focus mode: continuous-picture
10-05 23:26:57.776 I/CameraView: Flash mode: off
10-05 23:26:57.776 I/CameraView: Preview size: 1920x1080
10-05 23:26:57.783 I/CameraView: Surface created
10-05 23:26:57.783 I/CameraView: Surface changed: 1080x1984
10-05 23:26:57.784 I/CameraView: Size 2560x1280, stretch 1.0887097, zoom 6.5536, score 0.14015481
10-05 23:26:57.784 I/CameraView: Size 2048x1536, stretch 1.3777777, zoom 6.291456, score 0.11536383
10-05 23:26:57.784 I/CameraView: Size 1920x1440, stretch 1.3777777, zoom 5.5296, score 0.1312584
10-05 23:26:57.784 I/CameraView: Size 1920x1080, stretch 1.0333333, zoom 4.1472, score 0.23334827
10-05 23:26:57.784 I/CameraView: Size 1920x960, stretch 1.0887097, zoom 3.6864, score 0.24916407
10-05 23:26:57.784 I/CameraView: Size 1600x1200, stretch 1.3777777, zoom 3.84, score 0.18901211
10-05 23:26:57.784 I/CameraView: Size 1440x1080, stretch 1.3777777, zoom 3.1104, score 0.2333483
10-05 23:26:57.784 I/CameraView: Size 1280x960, stretch 1.3777777, zoom 2.4576, score 0.29533142
10-05 23:26:57.784 I/CameraView: Size 1280x720, stretch 1.0333333, zoom 1.8432, score 0.5250336
10-05 23:26:57.784 I/CameraView: Size 1024x768, stretch 1.3777777, zoom 1.572864, score 0.46145532
10-05 23:26:57.784 I/CameraView: Size 800x600, stretch 1.3777777, zoom 1.0416666, score 0.69677424
10-05 23:26:57.784 I/CameraView: Size 720x480, stretch 1.2246914, zoom 1.4467592, score 0.5643871
10-05 23:26:57.784 I/CameraView: Size 640x480, stretch 1.3777777, zoom 1.6276041, score 0.44593552
10-05 23:26:57.784 I/CameraView: Size 640x360, stretch 1.0333333, zoom 2.1701388, score 0.44593552
10-05 23:26:57.784 I/CameraView: Size 352x288, stretch 1.5030303, zoom 4.9321337, score 0.13489549
10-05 23:26:57.784 I/CameraView: Size 320x240, stretch 1.3777777, zoom 6.5104165, score 0.11148388
10-05 23:26:57.784 I/CameraView: Size 176x144, stretch 1.5030303, zoom 19.728535, score 0.033723872
10-05 23:26:57.784 I/CameraView: Best size 800x600
10-05 23:26:57.785 I/CameraView: Video stabilisation enabled: true
10-05 23:26:57.785 I/CameraView: Scene mode: null
10-05 23:26:57.785 I/CameraView: Focus mode: continuous-picture
10-05 23:26:57.785 I/CameraView: Flash mode: off
10-05 23:26:57.785 I/CameraView: Preview size: 800x600
10-05 23:26:57.785 I/CameraView: Starting preview
10-05 23:27:02.136 I/TorWrapper: V3 descriptor uploaded for f24[scrubbed]
10-05 23:27:03.534 I/MailboxViewModel: Got result from decoder
10-05 23:27:03.540 I/MailboxViewModel: New pairing state: QrCodeReceived
10-05 23:27:03.542 I/MailboxViewModel: New pairing state: InvalidQrCode
10-05 23:27:03.549 I/CameraView: Stopping preview
10-05 23:27:03.565 I/CameraView: Releasing camera
10-05 23:27:03.854 I/CameraView: Surface destroyed
10-05 23:27:06.620 I/BaseActivity: Pausing MailboxActivity
```
Additional Logs:
```
# Timestamp
ReportTime: 2023-10-05 23:27:10.844
# Build Information
BuildTimestamp: 2023-08-23 09:45:39.000
BuildType: release
Debug: false
Flavor: official
GitHash: b68d24d
# Device Information
AndroidApi: 33
AndroidVersion: 13
AppStandbyBucket: 5
Brand: google
Model: Pixel 5
Product: redfin
android.hardware.audio.low_latency: true
android.hardware.audio.output: true
android.hardware.audio.pro: true
android.hardware.bluetooth: true
android.hardware.bluetooth_le: true
android.hardware.camera: true
android.hardware.camera.any: true
android.hardware.camera.autofocus: true
android.hardware.camera.capability.manual_post_processing: true
android.hardware.camera.capability.manual_sensor: true
android.hardware.camera.capability.raw: true
android.hardware.camera.concurrent: true
android.hardware.camera.flash: true
android.hardware.camera.front: true
android.hardware.camera.level.full: true
android.hardware.context_hub: true
android.hardware.device_unique_attestation: true
android.hardware.faketouch: true
android.hardware.fingerprint: true
android.hardware.identity_credential: true
android.hardware.location: true
android.hardware.location.gps: true
android.hardware.location.network: true
android.hardware.microphone: true
android.hardware.nfc: true
android.hardware.nfc.any: true
android.hardware.nfc.ese: true
android.hardware.nfc.hce: true
android.hardware.nfc.hcef: true
android.hardware.nfc.uicc: true
android.hardware.opengles.aep: true
android.hardware.ram.normal: true
android.hardware.reboot_escrow: true
android.hardware.screen.landscape: true
android.hardware.screen.portrait: true
android.hardware.se.omapi.ese: true
android.hardware.se.omapi.uicc: true
android.hardware.security.model.compatible: true
android.hardware.sensor.accelerometer: true
android.hardware.sensor.barometer: true
android.hardware.sensor.compass: true
android.hardware.sensor.gyroscope: true
android.hardware.sensor.hifi_sensors: true
android.hardware.sensor.light: true
android.hardware.sensor.proximity: true
android.hardware.sensor.stepcounter: true
android.hardware.sensor.stepdetector: true
android.hardware.strongbox_keystore: true
android.hardware.telephony: true
android.hardware.telephony.calling: true
android.hardware.telephony.carrierlock: true
android.hardware.telephony.cdma: true
android.hardware.telephony.data: true
android.hardware.telephony.euicc: true
android.hardware.telephony.gsm: true
android.hardware.telephony.ims: true
android.hardware.telephony.messaging: true
android.hardware.telephony.radio.access: true
android.hardware.telephony.subscription: true
android.hardware.touchscreen: true
android.hardware.touchscreen.multitouch: true
android.hardware.touchscreen.multitouch.distinct: true
android.hardware.touchscreen.multitouch.jazzhand: true
android.hardware.usb.accessory: true
android.hardware.usb.host: true
android.hardware.vulkan.compute: true
android.hardware.vulkan.level: true
android.hardware.vulkan.version: true
android.hardware.wifi: true
android.hardware.wifi.aware: true
android.hardware.wifi.direct: true
android.hardware.wifi.passpoint: true
android.hardware.wifi.rtt: true
android.software.activities_on_secondary_displays: true
android.software.app_enumeration: true
android.software.app_widgets: true
android.software.autofill: true
android.software.backup: true
android.software.cant_save_state: true
android.software.companion_device_setup: true
android.software.controls: true
android.software.cts: true
android.software.device_admin: true
android.software.device_id_attestation: true
android.software.file_based_encryption: true
android.software.home_screen: true
android.software.incremental_delivery: true
android.software.input_methods: true
android.software.ipsec_tunnels: true
android.software.live_wallpaper: true
android.software.managed_users: true
android.software.midi: true
android.software.opengles.deqp.level: true
android.software.picture_in_picture: true
android.software.print: true
android.software.secure_lock_screen: true
android.software.securely_removes_users: true
android.software.sip: true
android.software.sip.voip: true
android.software.telecom: true
android.software.verified_boot: true
android.software.voice_recognizers: true
android.software.vulkan.deqp.level: true
android.software.webview: true
android.software.window_magnification: true
com.google.android.feature.GOOGLE_EXPERIENCE: true
com.google.android.feature.PIXEL_2017_EXPERIENCE: true
com.google.android.feature.PIXEL_2018_EXPERIENCE: true
com.google.android.feature.PIXEL_2019_EXPERIENCE: true
com.google.android.feature.PIXEL_2019_MIDYEAR_EXPERIENCE: true
com.google.android.feature.PIXEL_2020_EXPERIENCE: true
com.google.android.feature.PIXEL_2020_MIDYEAR_EXPERIENCE: true
com.google.android.feature.PIXEL_EXPERIENCE: true
com.nxp.mifare: true
glEsVersion: 3.2
org.lineageos.globalactions: true
org.lineageos.hardware: true
org.lineageos.health: true
org.lineageos.livedisplay: true
org.lineageos.settings: true
org.lineageos.trust: true
```https://code.briarproject.org/briar/briar/-/issues/2450Add fallback mailbox pairing option to Briar2023-10-06T14:23:30ZLaurens NikolaisenAdd fallback mailbox pairing option to BriarIf pairing with the mailbox app using a QR Code does not work on the Android Briar App, there is no way to pair the App with the mailbox. Please do add an option to paste the pairing link instead.
Like seen in #2449 this could be the ca...If pairing with the mailbox app using a QR Code does not work on the Android Briar App, there is no way to pair the App with the mailbox. Please do add an option to paste the pairing link instead.
Like seen in #2449 this could be the case sometimes.
Thankshttps://code.briarproject.org/briar/briar/-/issues/2445ProtocolStateException when trying to share a forum2023-09-19T10:47:04ZakwizgranProtocolStateException when trying to share a forumA user reported that every time they try to share a forum, Briar fails to load the list of contacts to share it with.
* Android version: 13
* Phone model: Honor NTH-NX9
* Briar version: 1.5.7 (6ae601e)
Edited log:
```
09-14 09:48:26.87...A user reported that every time they try to share a forum, Briar fails to load the list of contacts to share it with.
* Android version: 13
* Phone model: Honor NTH-NX9
* Briar version: 1.5.7 (6ae601e)
Edited log:
```
09-14 09:48:26.873 I/BaseActivity: Pausing ForumActivity
09-14 09:48:26.884 I/BaseActivity: Creating ShareForumActivity
09-14 09:48:26.895 I/BaseActivity: Starting ShareForumActivity
09-14 09:48:26.895 I/BaseActivity: Resuming ShareForumActivity
09-14 09:48:27.331 I/BaseActivity: Stopping ForumActivity
09-14 09:48:30.376 W/ContactSelectorControllerImpl: org.briarproject.briar.api.client.ProtocolStateException
org.briarproject.briar.api.client.ProtocolStateException
at org.briarproject.briar.sharing.SharingManagerImpl.getSharingStatus(SharingManagerImpl.java:510)
at org.briarproject.briar.sharing.SharingManagerImpl.getSharingStatus(SharingManagerImpl.java:480)
at org.briarproject.briar.android.sharing.ShareForumControllerImpl.getSharingStatus(ShareForumControllerImpl.java:53)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl.lambda$loadContacts$0(ContactSelectorControllerImpl.java:58)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl.$r8$lambda$3abQlDMLIGMlOAkNr01IGOPM62Q(Unknown Source:0)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at org.briarproject.briar.android.controller.DbControllerImpl.lambda$runOnDbThread$0(DbControllerImpl.java:36)
at org.briarproject.briar.android.controller.DbControllerImpl.$r8$lambda$JAD5-f_MagcCZjTRNXknhcwg-tw(Unknown Source:0)
at org.briarproject.briar.android.controller.DbControllerImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
09-14 09:48:30.381 I/BaseActivity: Pausing ShareForumActivity
09-14 09:48:30.390 I/BaseActivity: Starting ForumActivity
09-14 09:48:30.390 I/BaseActivity: Resuming ForumActivity
09-14 09:48:30.831 I/BaseActivity: Stopping ShareForumActivity
09-14 09:48:30.831 I/BaseActivity: Destroying ShareForumActivity
```
The exception is thrown because the [state machine](https://code.briarproject.org/briar/briar-spec/blob/master/clients/Forum-Sharing-Client.md#state-machine) is in the `LOCAL_LEFT` or `REMOTE_HANGING` state.
We had a [discussion](https://code.briarproject.org/briar/briar/-/merge_requests/1758#note_74062) about how to handle these states and I suggested throwing this exception on the assumption that the states should only be seen in the rare case where the user has left the forum more-or-less simultaneously with trying to share it. Clearly that assumption was wrong, because this user reports that they can reproduce the bug reliably. So the state machine has ended up in one of those states despite the user still belonging to the forum.
My guess would be that the user left and then rejoined the forum.https://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/2057AssertionError when selecting image to send2023-09-14T12:55:21ZakwizgranAssertionError when selecting image to send* Android version: 9
* Phone model: Honor KIW-L24 (lineage_kiwi)
* Briar version: 1.3.3 (c647c52)
Log snippet:
```
05-26 19:25:27.225 I/BaseActivity: Pausing NavDrawerActivity
05-26 19:25:27.302 I/BaseActivity: Creating ConversationActi...* Android version: 9
* Phone model: Honor KIW-L24 (lineage_kiwi)
* Briar version: 1.3.3 (c647c52)
Log snippet:
```
05-26 19:25:27.225 I/BaseActivity: Pausing NavDrawerActivity
05-26 19:25:27.302 I/BaseActivity: Creating ConversationActivity
05-26 19:25:27.389 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
05-26 19:25:27.536 I/BaseActivity: Starting ConversationActivity
05-26 19:25:27.540 I/BaseActivity: Resuming ConversationActivity
05-26 19:25:27.737 I/ConversationActivity: Eagerly loading text for latest message
05-26 19:25:27.850 I/BaseActivity: Pausing ConversationActivity
05-26 19:25:27.992 I/BaseActivity: Creating ConversationActivity
05-26 19:25:28.024 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
05-26 19:25:28.157 I/BaseActivity: Starting ConversationActivity
05-26 19:25:28.163 I/BaseActivity: Resuming ConversationActivity
05-26 19:25:28.816 I/ConversationActivity: Eagerly loading text for latest message
05-26 19:25:28.819 I/BaseActivity: Stopping ConversationActivity
05-26 19:25:28.831 I/BaseActivity: Destroying ConversationActivity
05-26 19:25:30.983 I/BaseActivity: Pausing ConversationActivity
05-26 19:25:31.214 I/BaseActivity: Stopping NavDrawerActivity
05-26 19:25:31.698 I/BaseActivity: Stopping ConversationActivity
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:166)
at org.briarproject.briar.android.conversation.ConversationActivity.onActivityResult(ConversationActivity.java:319)
at android.app.Activity.dispatchActivityResult(Activity.java:7462)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4391)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4440)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/1937IndexOutOfBoundsException when selecting text2023-09-14T12:20:44ZakwizgranIndexOutOfBoundsException when selecting text* Android version: 7.1.1
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was trying to use this app offline to contact my friend."
Stacktrace:
```
java.lang.IndexOutOfBoundsException: setSpa...* Android version: 7.1.1
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was trying to use this app offline to contact my friend."
Stacktrace:
```
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1325)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:683)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:676)
at android.text.Selection.setSelection(Selection.java:76)
at android.text.method.ArrowKeyMovementMethod.onTouchEvent(ArrowKeyMovementMethod.java:291)
at android.widget.TextView.onTouchEvent(TextView.java:8546)
at android.view.View.dispatchTouchEvent(View.java:10180)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:414)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
at android.app.Activity.dispatchTouchEvent(Activity.java:3122)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:376)
at android.view.View.dispatchPointerEvent(View.java:10400)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4313)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3860)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3913)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3879)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4006)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3887)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4063)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3860)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3913)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3879)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3887)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3860)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6254)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6228)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6189)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6357)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:6138)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
```
No log due to #1917.
Looks like a platform bug - I'm opening this ticket in case there's a known workaround.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2238Upgrade h22023-09-07T14:13:30ZSebastianUpgrade h2While working on https://code.briarproject.org/briar/briar-mailbox/-/merge_requests/46 we discovered some things relevant to upgrading H2 in briarWhile working on https://code.briarproject.org/briar/briar-mailbox/-/merge_requests/46 we discovered some things relevant to upgrading H2 in briarhttps://code.briarproject.org/briar/briar/-/issues/590Option to save the password2023-09-01T12:43:31ZligiOption to save the passwordadd a setting to store the password with the hint to the user that this makes things less secure
**Motivation**
this will help developers when developing the app because it reduces the time they have to enter the password
could also he...add a setting to store the password with the hint to the user that this makes things less secure
**Motivation**
this will help developers when developing the app because it reduces the time they have to enter the password
could also help adoption as a users might get frustrated having to enter a password often. There are some use cases where this additional attack-vector does not really matter and could be traded for convenience. Ideally this setting is exposed to the contacts so they know.
this is a follow up from a discussion in #587https://code.briarproject.org/briar/briar/-/issues/2396Testers couldn't find mailbox pairing screen2023-08-28T16:03:37ZakwizgranTesters couldn't find mailbox pairing screen> All participants successfully installed and created accounts. On the other hand, linking devices was one of the most difficult tasks for all
participants.
>
> The common pattern for all was to misinterpret the device-linking process a...> All participants successfully installed and created accounts. On the other hand, linking devices was one of the most difficult tasks for all
participants.
>
> The common pattern for all was to misinterpret the device-linking process as adding a new contact. The first instinct for four out of five participants was to click on the + icon and try to “add a contact nearby”, they chose that because the devices are near to each other.
>
> The second place they went to look for the feature was always the sidebar menu. First, they looked at the options there and the connection icons. They guessed that linking devices is a form of connection, so they would find it there. One of the participants assumed that the “Internet” icon represents the Mailbox connection.
>
> On the third attempt, they could all find the Mailbox option, listed under the Settings menu.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2398Testers didn't understand why Mailbox was still linked after failed unlinking2023-08-28T16:03:33ZakwizgranTesters didn't understand why Mailbox was still linked after failed unlinking![unlink-1](/uploads/291b980ba78f2254b8ec690bb77f1850/unlink-1.png) ![unlink-2](/uploads/1279bbd2726de7a3d2adbc3076af895c/unlink-2.png)
> This step was confusing in most cases. Participants ignored the textboxes and when they unlinked t...![unlink-1](/uploads/291b980ba78f2254b8ec690bb77f1850/unlink-1.png) ![unlink-2](/uploads/1279bbd2726de7a3d2adbc3076af895c/unlink-2.png)
> This step was confusing in most cases. Participants ignored the textboxes and when they unlinked the device, the Mailbox still showed that it was linked. In those cases, they thought that this must be happening because of bugs in the test app.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2399Tester didn't know whether message had been uploaded to Mailbox2023-08-28T16:03:30ZakwizgranTester didn't know whether message had been uploaded to Mailbox> The tester was confused with the process of sending a message while the other contact is offline. He was expecting to get feedback from Briar to know if the message has been saved to Mailbox. He opened the notifications drawer on the B...> The tester was confused with the process of sending a message while the other contact is offline. He was expecting to get feedback from Briar to know if the message has been saved to Mailbox. He opened the notifications drawer on the Briar phone but didn’t find anything, then he checked the Mailbox app but didn’t find feedback there either. While he was waiting, he noticed an hourglass icon near the message and didn’t know what that meant. He thought it indicated a disappearing message. After I asked a follow-up question on how he understands if a message is delivered, he let me know that one checkmark indicates that the message is delivered and two checkmarks that the message is opened.
>
> After the other contact came back online, he noticed that the message was delivered as he saw the checkmarks, but he was wondering if the message was sent directly from the app or if it was transferred by Mailbox and he didn’t find any way to understand this.
Related to #1208.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2401Testers were concerned that Briar showed Mailbox as connected when Mailbox wa...2023-08-28T16:03:27ZakwizgranTesters were concerned that Briar showed Mailbox as connected when Mailbox was offline> Participants were complaining that even when the Mailbox device was offline, on the Briar app it looked like the connection is still working well. There were no indications that the connection is not working. They were expecting to get...> Participants were complaining that even when the Mailbox device was offline, on the Briar app it looked like the connection is still working well. There were no indications that the connection is not working. They were expecting to get a notification on their Briar app device whenever there were any problems with the Mailbox connection.
>
> This was quite concerning to them, they expressed that in everyday use they would never think to manually check the connection and they would always assume that the Mailbox is working unless they get a notification on their Briar device telling them about the problems.
>
> The “Last connection…” indicator wasn’t enough to show them the connection problems. They didn’t know how often Briar automatically check the connection. For example, Mailbox device was disconnected 3 minutes ago but the screen on the Briar app didn’t indicate any problem it just showed the time of the “Last connection: 5 minutes ago”.
Some thoughts about how to address this:
* If the last connection was not very recent (say, more than a minute ago), show a neutral status instead of a successful status, to prompt the user to use the "check connection" button to update the status
* Show some text along the lines of "Briar will automatically check the connection to your Mailbox every hour and notify you if your Mailbox is not reachable", and maybe show when the next check is dueMailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2431MailboxIntegrationTest sometimes fails in CI pipelines2023-08-28T16:03:06ZakwizgranMailboxIntegrationTest sometimes fails in CI pipelineshttps://code.briarproject.org/briar/briar/-/issues/2443OOM error when polling large number of contacts2023-08-24T15:00:10ZakwizgranOOM error when polling large number of contacts* Android version: 13
* Phone model: Realme RMX3516 (RMX3516EEA)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.OutOfMemoryError: Failed to allocate a 48 byte allocation with 252528 free bytes and 246KB until OOM, target foo...* Android version: 13
* Phone model: Realme RMX3516 (RMX3516EEA)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.OutOfMemoryError: Failed to allocate a 48 byte allocation with 252528 free bytes and 246KB until OOM, target footprint 201326592, growth limit 201326592; giving up on allocation because <1% of heap free after GC.
at java.util.regex.Pattern.matcher(Pattern.java:1040)
at org.briarproject.bramble.plugin.tor.TorPlugin.createConnection(TorPlugin.java:361)
at org.briarproject.bramble.plugin.tor.TorPlugin.lambda$connect$2(TorPlugin.java:349)
at org.briarproject.bramble.plugin.tor.TorPlugin.$r8$lambda$dsAekyWijvXWn3loJi16FAklboE(Unknown Source:0)
at org.briarproject.bramble.plugin.tor.TorPlugin$$ExternalSyntheticLambda4.run(Unknown Source:6)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl.lambda$executeWakefully$0(AndroidWakeLockManagerImpl.java:71)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl.$r8$lambda$YrcWd5iwE_LXXUj-LlmRNhzP9-U(Unknown Source:0)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
```
* NativeHeapAllocated: 467,674,320
* NativeHeapFree: 57,465,872
* NativeHeapTotal: 539,607,040
* SystemMemoryFree: 1,281,261,568
* SystemMemoryLow: false
* SystemMemoryThreshold: 339,738,624
* SystemMemoryTotal: 3,834,589,184
* VirtualMachineMemoryFree: 4,663,224
* VirtualMachineMemoryMaximum: 201,326,592
* VirtualMachineMemoryTotal: 201,326,592
The log shows that the crash happened about 9 seconds after polling the Tor plugin. Connection attempts from the previous two polls were still in progress, as shown by the messages logged when those attempts timed out. The previous two polls appear to have happened in quick succession, as two failures for the same address were often logged back-to-back. (This can happen when the plugin's enabled, as the first poll happens immediately and the second is scheduled after a randomised interval.)
The log shows that the user has at least 54 contacts. I'd speculate that this may cause polling to take longer than the polling interval, causing pending connection attempts to pile up.
All of the connection failures except the last are logged as "java.io.IOException: Connection failed: Host unreachable". The last connection failure is logged as "java.net.SocketTimeoutException: failed to connect to /127.0.0.1 (port 59050) from /127.0.0.1 (port 57012) after 5000ms", indicating that the connection to Tor's SOCKS port on localhost timed out. Perhaps the Tor process had become unresponsive, or perhaps the Java process was spending too much time in GC to service the connection.
The memory stats show 539 MB of native heap, which is a lot! Maybe there's a large backlog of socket connections, each with some native heap allocations, and each with an IoExecutor thread waiting on it that might have its own native heap allocations?
`VirtualMemoryFree` doesn't match the amount in the OOM error message, which is an issue we've seen before (https://code.briarproject.org/briar/briar/-/issues/1898#note_76643).
It's useful to know that the allocator gives up if it can't free more than 1% of the max heap space after GC.https://code.briarproject.org/briar/briar/-/issues/2442ArrayIndexOutOfBoundsException in Editor#onDraw()2023-08-24T15:00:04ZakwizgranArrayIndexOutOfBoundsException in Editor#onDraw()This looks like it's most likely a platform bug.
* Android version: 8.1.0
* Phone model: Samsung SM-A260F (a2coreltejx)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
...This looks like it's most likely a platform bug.
* Android version: 8.1.0
* Phone model: Samsung SM-A260F (a2coreltejx)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648)
at android.widget.Editor.drawHardwareAccelerated(Editor.java:1729)
at android.widget.Editor.onDraw(Editor.java:1698)
at android.widget.TextView.onDraw(TextView.java:6973)
at android.view.View.draw(View.java:19215)
at android.view.View.updateDisplayListIfDirty(View.java:18162)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3050)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2864)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2417)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1429)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6823)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6543)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
```https://code.briarproject.org/briar/briar/-/issues/2433IllegalStateException when storing attachments2023-08-24T14:33:28ZakwizgranIllegalStateException when storing attachments* Android version: 9
* Phone model: Coolpad cp3648AT (full_cp3648at)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.storeAttac...* Android version: 9
* Phone model: Coolpad cp3648AT (full_cp3648at)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.storeAttachments(AttachmentCreatorImpl.java:83)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeAttachments(ConversationViewModel.java:277)
at org.briarproject.briar.android.view.TextAttachmentController.onNewUris(TextAttachmentController.java:178)
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:160)
at org.briarproject.briar.android.conversation.ConversationActivity.onImagesChosen(ConversationActivity.java:797)
at org.briarproject.briar.android.conversation.ConversationActivity.$r8$lambda$Yw3fl1gK9EIeGMTHPyKDfNfoOkI(Unknown Source:0)
at org.briarproject.briar.android.conversation.ConversationActivity$$ExternalSyntheticLambda3.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry$1.onStateChanged(ActivityResultRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:265)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:307)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:144)
at androidx.lifecycle.ReportFragment.onStart(ReportFragment.java:109)
at android.app.Fragment.performStart(Fragment.java:2548)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1334)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1576)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1637)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3046)
at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3003)
at android.app.FragmentController.dispatchStart(FragmentController.java:193)
at android.app.Activity.performStart(Activity.java:7165)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2968)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1836)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6704)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
```
Edited log:
```
01-12 20:00:06.622 I/ValidationManagerImpl: Validating message for org.briarproject.briar.messaging
01-12 20:00:06.831 I/ValidationManagerImpl: Delivering message for org.briarproject.briar.messaging
01-12 20:00:06.837 I/AutoDeleteManagerImpl: Mirroring auto-delete timer -1
01-12 20:00:06.940 I/ContactsViewModel: Conversation message tracked, updating item
01-12 20:00:11.836 I/BaseActivity: Destroying NavDrawerActivity
01-12 20:00:11.954 I/BaseActivity: Creating ConversationActivity
01-12 20:00:12.158 I/BaseActivity: Starting ConversationActivity
01-12 20:00:12.163 I/BaseActivity: Resuming ConversationActivity
01-12 20:00:12.233 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
01-12 20:00:25.255 I/ConversationActivity: Eagerly loading text for latest message
01-12 20:00:31.004 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
01-12 20:00:32.000 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
01-12 20:00:43.142 I/BaseActivity: Pausing ConversationActivity
01-12 20:00:43.192 I/BaseActivity: Stopping ConversationActivity
01-12 20:00:43.886 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
01-12 20:01:00.181 I/BaseActivity: Starting ConversationActivity
01-12 20:01:00.308 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:07.726 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
01-12 20:01:17.992 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:18.633 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:19.034 I/ConversationActivity: Eagerly loading text for latest message
01-12 20:01:19.041 I/ConversationActivity: Concurrent update, reloading
01-12 20:01:19.064 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
01-12 20:01:23.296 I/BaseActivity: Starting ConversationActivity
01-12 20:01:23.335 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:23.550 I/ImageCompressorImpl: Original image size: 720x1440
01-12 20:01:23.550 I/ImageCompressorImpl: Scaling attachment by factor of 2
01-12 20:01:23.784 I/ImageCompressorImpl: Compressed image to 32229 bytes, quality 70
01-12 20:01:25.507 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:26.209 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:27.381 I/BaseActivity: Starting ConversationActivity
01-12 20:01:27.383 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:29.743 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:30.425 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:30.751 I/BaseActivity: Starting ConversationActivity
01-12 20:01:30.756 W/AttachmentCreatorImpl: Task already exists!
01-12 20:01:30.756 W/AttachmentCreatorImpl: Result already exists!
01-12 20:01:30.756 W/AttachmentCreatorImpl: Uris available: [content://com.android.providers.media.documents/document/image%3A10277]
```
This looks similar to #1647.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/2418"Signing out" progress screen is no longer shown when relaunching quickly aft...2023-08-08T01:50:09Zakwizgran"Signing out" progress screen is no longer shown when relaunching quickly after signing outWhen the app was relaunched quickly after signing out, we used to show a progress screen with a "signing out" message to make it clear that the user's previous action was still being processed. But now when I relaunch the app after signi...When the app was relaunched quickly after signing out, we used to show a progress screen with a "signing out" message to make it clear that the user's previous action was still being processed. But now when I relaunch the app after signing out, the UI immediately closes again without letting me see the progress screen. This can happen several times before shutdown completes, so it's not just a race between relaunching the app and shutdown completing.
Tested on Android 13 (CalyxOS 4.6.1).https://code.briarproject.org/briar/briar/-/issues/2440Biometric login as an additional authentication method2023-07-31T16:12:24ZPatrick MaydellBiometric login as an additional authentication methodSometimes the briar app logs out and I have to enter the password again to unlock the database. Therefore it would be nice to have an additional authentication method like the biometric fingerprint to unlock briar's database by using And...Sometimes the briar app logs out and I have to enter the password again to unlock the database. Therefore it would be nice to have an additional authentication method like the biometric fingerprint to unlock briar's database by using Android's Biometric library.
https://developer.android.com/codelabs/biometric-login
I would like to try to commit this functionality to briar if you generally think this feature would be nice to have.https://code.briarproject.org/briar/briar/-/issues/2212Comply with Google emoji policy2023-07-31T15:02:31ZakwizgranComply with Google emoji policyGoogle has created a new policy that requires apps to support the latest emoji version within four months of its release.
https://support.google.com/googleplay/android-developer/answer/11190649#emoji_preview
To do this, we may need to ...Google has created a new policy that requires apps to support the latest emoji version within four months of its release.
https://support.google.com/googleplay/android-developer/answer/11190649#emoji_preview
To do this, we may need to replace our current emoji implementation with Google's emoji2 library, which can be used directly or via AppCompat.
https://developer.android.com/guide/topics/ui/look-and-feel/emoji2
By default this uses a downloadable font and requires a downloadable font provider such as Google Play Services. In order to work offline, avoid depending on Play Services and protect users' privacy, we would need to bundle the 10 MB emoji font in our APK.
https://developer.android.com/guide/topics/ui/look-and-feel/emoji2#support-bundled-fonts
The policy becomes effective on 2 February 2022.