briar issueshttps://code.briarproject.org/briar/briar/-/issues2021-05-20T15:15:34Zhttps://code.briarproject.org/briar/briar/-/issues/1994App goes into background spontaneously when memory is low2021-05-20T15:15:34ZakwizgranApp goes into background spontaneously when memory is lowOn the Galaxy Nexus (Android 4.3), Briar sometimes goes into the background spontaneously when memory is low.
This seems to happen because the app's importance is downgraded from IMPORTANCE_FOREGROUND to IMPORTANCE_VISIBLE when the app'...On the Galaxy Nexus (Android 4.3), Briar sometimes goes into the background spontaneously when memory is low.
This seems to happen because the app's importance is downgraded from IMPORTANCE_FOREGROUND to IMPORTANCE_VISIBLE when the app's showing a system dialog (in my case it was the Bluetooth discoverability dialog). BriarApplicationImpl#isRunningInBackground() considers anything other than IMPORTANCE_FOREGROUND to be background, so it allows BriarService to hide the UI to save memory.
Fixing this will require some care. When Briar's actually running in the background on this device it has an importance of IMPORTANCE_PERCEPTIBLE_PRE_26 (perhaps it's treated as perceptible because of the foreground service). But on other devices it might plausibly have IMPORTANCE_FOREGROUND_SERVICE (added in API 23) or IMPORTANCE_PERCEPTIBLE (added in API 26). Presumably new constants may be added in future versions.
The constants seem to be ordered, with lower values being more important:
* IMPORTANCE_FOREGROUND = 100
* IMPORTANCE_FOREGROUND_SERVICE = 125
* IMPORTANCE_PERCEPTIBLE_PRE_26 = 130
* IMPORTANCE_VISIBLE = 200
* IMPORTANCE_PERCEPTIBLE = 230
Unfortunately there's no cutoff we can choose such that the values for "running in the foreground, maybe with a system dialog" are on one side while the values for "running in the background with a foreground service" are on the other side.
I suspect there's an Android bug here: an app that would have IMPORTANCE_PERCEPTIBLE_PRE_26 when running in the background shouldn't be less important when it's running in the foreground but showing a system dialog. If I'm right and we can find out when the bug was fixed, maybe we can use some version-aware logic to work around this.https://code.briarproject.org/briar/briar/-/issues/1993Define overall technical and UX approach2021-07-13T10:34:36ZakwizgranDefine overall technical and UX approachUX/dev collaboration to define the overall technical and UX approach for this feature.UX/dev collaboration to define the overall technical and UX approach for this feature.Transfer content securely via SD cards and USB memory sticksTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/1992Initial experiments to decide whether to use Bluetooth or Wi-Fi2021-07-06T09:40:57ZakwizgranInitial experiments to decide whether to use Bluetooth or Wi-FiInstall via Bluetooth or Wi-FiTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/1991Panic button preferences screen doesn't use material design switches on API 192021-05-05T16:14:53ZakwizgranPanic button preferences screen doesn't use material design switches on API 19![device-2021-03-26-154413](/uploads/0dc8a6696c9159263f6e2f24e695dd69/device-2021-03-26-154413.png)![device-2021-03-26-154413](/uploads/0dc8a6696c9159263f6e2f24e695dd69/device-2021-03-26-154413.png)Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1990Clicking re-blogged author opens blog of reblogging author2021-04-26T12:08:41ZTorsten GroteClicking re-blogged author opens blog of reblogging author* get a blog post from a contact
* re-blog this post
* click the author of the original post in the reblogged post
* observe how your own blog opens and not the one of the author of the original post* get a blog post from a contact
* re-blog this post
* click the author of the original post in the reblogged post
* observe how your own blog opens and not the one of the author of the original postAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1989Blog post created snackbar re-appears after screen rotation2021-04-26T12:03:55ZTorsten GroteBlog post created snackbar re-appears after screen rotation* write a blog post
* wait until snackbar disappears
* rotate screen
* observe the snackbar coming back* write a blog post
* wait until snackbar disappears
* rotate screen
* observe the snackbar coming backAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1988Notification wrongly shows app as unlocked if locked shortly after signing in2021-11-04T11:03:25ZakwizgranNotification wrongly shows app as unlocked if locked shortly after signing inA user reported that the notification shows the app as unlocked if it's locked shortly after signing in. I haven't managed to reproduce the bug yet, but the user gave these steps:
* Enable app lock
* Sign out
* Sign in
* Immediately or ...A user reported that the notification shows the app as unlocked if it's locked shortly after signing in. I haven't managed to reproduce the bug yet, but the user gave these steps:
* Enable app lock
* Sign out
* Sign in
* Immediately or after a couple of seconds open menu and press lock app
* Pull down for notifications and observe Briar notification it states "Briar is locked" and then changing into "Signed into Briar"
Reported on API 31.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1986Introducing same two contacts not possible after self-destructing non-answere...2021-05-05T16:14:52ZSebastianIntroducing same two contacts not possible after self-destructing non-answered response to one-sided declined introductionUnder certain circumstances, an introduction can fail and leave the introducer in a state where they are not able to retry the introduction.
Situation to reproduce this: A introduces B and C with self-destructing messages enabled among ...Under certain circumstances, an introduction can fail and leave the introducer in a state where they are not able to retry the introduction.
Situation to reproduce this: A introduces B and C with self-destructing messages enabled among A-B and A-C. At the time of the introduction being sent, C is offline to simulate a delay.
* introduction arrives at B
* 30 seconds pass
* C comes online
* introduction arrives at C
* another 30 seconds pass
* B didn't do anything, the introduction self-destructs, and auto-declines it
* A forwards the decline to C
* another 30 seconds pass
* C didn't do anything, the introduction self-destructs, but doesn't auto decline it because B already declined and the
introduction can no longer succeed
* C didn't send a response and hence A cannot try again to introduce B and C, although it should. Also C has no way to respond to the introduction any longer to fix that
Test instructions:
* Variant 1
* Let A introduce B and C, with self-destructing messages enabled among A and C but not necessarily enabled among A and B.
* let B **decline** the introduction
* observe that C receives the response from B
* let the timer of the introduction expire at C
* observe that A received a decline from both B and C
* try to let A introduce B and C again. Make sure it is possible to actually send a new introduction that arrives at B and C
* Variant 2
* Let A introduce B and C, with self-destructing messages enabled among A and C but not necessarily enabled among A and B.
* let B **accept** the introduction
* in this case, C does not receive any response from B
* let the timer of the introduction expire at C
* observe that A received an accept from B and a decline from C
* try to let A introduce B and C again. Make sure it is possible to actually send a new introduction that arrives at B and CSelf-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1985Register public mesh research app's signing key and package name with Google ...2022-01-21T14:13:18ZakwizgranRegister public mesh research app's signing key and package name with Google PlayIf we plan to develop a research app as part of #1817, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.goo...If we plan to develop a research app as part of #1817, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html
Subtask of #1817.Public mesh researchakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/1984Register social mesh research app's signing key and package name with Google ...2021-09-01T09:47:43ZakwizgranRegister social mesh research app's signing key and package name with Google PlayIf we plan to develop a research app as part of #1816, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.goo...If we plan to develop a research app as part of #1816, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html
Subtask of #1816.akwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/1983Add CalyxOS panic button to list of supported panic button apps2021-03-24T17:16:18ZakwizgranAdd CalyxOS panic button to list of supported panic button appsCalyxOS has a built-in panic button based on Ripple. Add its signature to our panic responder so Briar responds to it.CalyxOS has a built-in panic button based on Ripple. Add its signature to our panic responder so Briar responds to it.https://code.briarproject.org/briar/briar/-/issues/1982RuntimeException: getParameters failed (empty parameters)2021-05-05T16:12:24ZakwizgranRuntimeException: getParameters failed (empty parameters)* Android version: 7.1
* Phone model: Google Nexus 7 (nakasig)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
getParameters failed (empty parameters)
java.lang.RuntimeException: getParameters failed (empty parameters)
at andr...* Android version: 7.1
* Phone model: Google Nexus 7 (nakasig)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
getParameters failed (empty parameters)
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:1896)
at org.briarproject.briar.android.keyagreement.CameraView.start(CameraView.java:130)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment.onStart(KeyAgreementFragment.java:149)
at androidx.fragment.app.Fragment.performStart(Fragment.java:2730)
at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
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:6148)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
```
This is very similar to #998, but getParameters() is being called from a different place where apparently we forgot to catch the exception.
Also similar to #1523, but here the call is synchronous so catching the exception is an option.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1981NPE from MaterialTapTargetPrompt when setting typeface2021-08-27T11:45:48ZakwizgranNPE from MaterialTapTargetPrompt when setting typeface* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerEx...* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerException: Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
at android.graphics.Typeface.create(Typeface.java:849)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptUtils.setTypefaceFromAttrs(PromptUtils.java:127)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptOptions.load(PromptOptions.java:248)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1139)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1122)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.showTransportsOnboarding(NavDrawerActivity.java:489)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2(NavDrawerActivity.java:181)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$xWqZhXc-2hRSJQvQHp-zwWTmweU.onChanged(Unknown Source:6)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:144)
at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:443)
at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:188)
at androidx.lifecycle.LiveData.observe(LiveData.java:203)
at org.briarproject.briar.android.util.UiUtils.observeOnce(UiUtils.java:397)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3(NavDrawerActivity.java:180)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$LIifbSpjf5QmEgmsWY6XA8WUmPg.onChanged(Unknown Source:4)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:149)
at androidx.lifecycle.LiveData.setValue(LiveData.java:307)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:91)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
```
Log snippet:
```
03-16 17:09:44.556 I/TorPlugin: Country code: IN
```
Perhaps country code IN could mean that the system typeface is different than on our test devices?Android 1.3https://code.briarproject.org/briar/briar/-/issues/1980SecurityException in ConnectivityManager#getNetworkCapabilities()2022-04-20T14:51:58ZakwizgranSecurityException in ConnectivityManager#getNetworkCapabilities()* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
...* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities(IConnectivityManager.java:2456)
at android.net.ConnectivityManager.getNetworkCapabilities(ConnectivityManager.java:1385)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getSocketFactory(AndroidLanTcpPlugin.java:241)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0(AndroidLanTcpPlugin.java:283)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0$AndroidLanTcpPlugin(Unknown Source:0)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$AndroidLanTcpPlugin$RnrvoJsXGo91N3aS5KUNVN0J3hU.run(Unknown Source:2)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(Unknown Source:0)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$wSvuPL6t_HUoaaqCVexrhJX_RSg.run(Unknown Source:6)
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:923)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.AppOpsManager.checkPackage(AppOpsManager.java:7739)
at com.android.server.ConnectivityService.getNetworkCapabilities(ConnectivityService.java:1668)
at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:978)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
```
Edited log:
```
03-06 01:00:56.967 I/BriarApplicationImpl: Created
03-06 01:00:56.996 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.194 I/BaseActivity: Creating SplashScreenActivity
03-06 01:05:05.221 I/BaseActivity: Starting SplashScreenActivity
03-06 01:05:05.226 I/BaseActivity: Resuming SplashScreenActivity
03-06 01:05:05.748 I/BaseActivity: Pausing SplashScreenActivity
03-06 01:05:05.758 I/BaseActivity: Creating NavDrawerActivity
03-06 01:05:05.844 I/BaseActivity: Starting NavDrawerActivity
03-06 01:05:05.846 I/BaseActivity: Resuming NavDrawerActivity
03-06 01:05:05.846 I/BriarActivity: Not signed in, launching StartupActivity
03-06 01:05:05.853 I/BaseActivity: Pausing NavDrawerActivity
03-06 01:05:05.858 I/BaseActivity: Creating StartupActivity
03-06 01:05:05.870 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.872 I/BaseActivity: Starting StartupActivity
03-06 01:05:05.914 I/BaseActivity: Resuming StartupActivity
03-06 01:05:06.031 I/BaseActivity: Stopping NavDrawerActivity
03-06 01:05:06.570 I/BaseActivity: Stopping SplashScreenActivity
03-06 01:05:06.571 I/BaseActivity: Destroying SplashScreenActivity
03-06 01:05:12.041 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:13.075 I/AndroidKeyStrengthener: Loaded key from keystore
03-06 01:05:13.420 I/BriarService: Created
03-06 01:05:13.422 I/RenewableWakeLock: Acquiring wake lock org.briarproject.briar.android
03-06 01:05:13.431 I/LifecycleManagerImpl: Opening database
03-06 01:05:13.443 I/H2Database: Reopening DB: true
03-06 01:05:13.743 I/JdbcDatabase: 15994116646 ms since last compaction
03-06 01:05:13.945 I/IdentityManagerImpl: Identity loaded
03-06 01:05:13.955 I/LifecycleManagerImpl: Starting services
03-06 01:05:13.958 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
03-06 01:05:13.967 I/PluginManagerImpl: Starting simplex plugins
03-06 01:05:13.967 I/PluginManagerImpl: Starting duplex plugins
03-06 01:05:13.971 I/PluginManagerImpl: org.briarproject.bramble.bluetooth changed from state STARTING_STOPPING to DISABLED
03-06 01:05:13.971 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.bluetooth is DISABLED
03-06 01:05:13.976 I/AndroidTorPlugin: Deleted Tor binary
03-06 01:05:13.978 I/AndroidTorPlugin: Deleted obfs4 binary
03-06 01:05:13.989 I/BluetoothPlugin: Local address null
03-06 01:05:14.009 I/PluginManagerImpl: org.briarproject.bramble.lan changed from state STARTING_STOPPING to INACTIVE
03-06 01:05:14.009 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.lan is INACTIVE
03-06 01:05:14.016 I/AndroidLanTcpPlugin: Connected to wifi
```
Looks like this phone's running an AOSP build. I won't add this to the milestone for now, unless/until we get further reports.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1979Crash when showing feedback details as feedback is being sent2021-05-05T16:11:10ZakwizgranCrash when showing feedback details as feedback is being sent* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was about to send feedback and I selected include more data and send, while it was loading I pressed on 'show' to see th...* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was about to send feedback and I selected include more data and send, while it was loading I pressed on 'show' to see the logs that will be sent, then it caused the crash prompt."
Stacktrace:
```
String resource ID #0x0
android.content.res.Resources$NotFoundException: String resource ID #0x0
at android.content.res.Resources.getText(Resources.java:444)
at android.widget.TextView.setText(TextView.java:6429)
at org.briarproject.briar.android.reporting.ReportDataAdapter$ReportDataViewHolder.bind(ReportDataAdapter.java:62)
at org.briarproject.briar.android.reporting.ReportDataAdapter.onBindViewHolder(ReportDataAdapter.java:38)
at org.briarproject.briar.android.reporting.ReportDataAdapter.onBindViewHolder(ReportDataAdapter.java:18)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
at android.view.View.measure(View.java:25466)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:792)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:480)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:134)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:277)
at androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:119)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1578)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1690)
at android.view.View.measure(View.java:25466)
at androidx.core.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1599)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.core.widget.NestedScrollView.onMeasure(NestedScrollView.java:585)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:747)
at android.view.View.measure(View.java:25466)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3402)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2246)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2504)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1948)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8177)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:731)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
```
Log not available due to #1917.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1978SecurityException from Samsung clipboard manager2021-04-16T17:25:18ZakwizgranSecurityException from Samsung clipboard manager* Android version: 10
* Phone model: Samsung SM-A415F (a41ser)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
No access to content://com.sec.android.semclipboardprovider/images: neither user 15010232 nor current process has android.p...* Android version: 10
* Phone model: Samsung SM-A415F (a41ser)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
No access to content://com.sec.android.semclipboardprovider/images: neither user 15010232 nor current process has android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
java.lang.SecurityException: No access to content://com.sec.android.semclipboardprovider/images: neither user 15010232 nor current process has android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
at android.os.Parcel.createException(Parcel.java:2088)
at android.os.Parcel.readException(Parcel.java:2056)
at android.os.Parcel.readException(Parcel.java:2004)
at android.sec.clipboard.IClipboardService$Stub$Proxy.getClipData(IClipboardService.java:959)
at com.samsung.android.content.clipboard.SemClipboardManager.getLatestClip(SemClipboardManager.java:609)
at android.widget.EditText.updateClipboardFilter(EditText.java:316)
at android.widget.EditText.dispatchWindowFocusChanged(EditText.java:297)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewRootImpl.handleWindowFocusChanged(ViewRootImpl.java:3487)
at android.view.ViewRootImpl.access$1300(ViewRootImpl.java:205)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:5393)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.content.ContentService.handleIncomingUser(ContentService.java:1355)
at com.android.server.content.ContentService.registerContentObserver(ContentService.java:355)
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:2270)
at android.database.AbstractCursor.setNotificationUris(AbstractCursor.java:447)
at android.database.AbstractCursor.setNotificationUris(AbstractCursor.java:422)
```
Log:
```
03-18 10:33:23.037 I/BriarApplicationImpl: Created
03-18 10:33:23.073 I/BaseActivity: Creating SplashScreenActivity
03-18 10:33:23.095 I/BaseActivity: Starting SplashScreenActivity
03-18 10:33:23.096 I/BaseActivity: Resuming SplashScreenActivity
03-18 10:33:23.617 I/BaseActivity: Pausing SplashScreenActivity
03-18 10:33:23.644 I/BaseActivity: Creating NavDrawerActivity
03-18 10:33:23.690 I/BaseActivity: Starting NavDrawerActivity
03-18 10:33:23.691 I/BaseActivity: Resuming NavDrawerActivity
03-18 10:33:23.691 I/BriarActivity: Not signed in, launching StartupActivity
03-18 10:33:23.711 I/BaseActivity: Pausing NavDrawerActivity
03-18 10:33:23.729 I/BaseActivity: Creating StartupActivity
03-18 10:33:23.739 I/AccountManagerImpl: Found database key in primary file
03-18 10:33:23.741 I/BaseActivity: Starting StartupActivity
03-18 10:33:23.858 I/BaseActivity: Resuming StartupActivity
```
"INTERACT_ACROSS_USERS" suggests this may be a bug that happens in multi-user mode when using the Samsung clipboard manager.https://code.briarproject.org/briar/briar/-/issues/1977SecurityException due to missing ACCESS_WIFI_STATE permission2021-11-04T11:03:25ZakwizgranSecurityException due to missing ACCESS_WIFI_STATE permission* Android version: 9
* Phone model: Samsung SM-A207F (a20sxx)
* Briar version: 1.2.13 (5fdc7e7)
Stacktrace:
```
WifiService: Neither user 10177 nor current process has android.permission.ACCESS_WIFI_STATE.
java.lang.SecurityException: W...* Android version: 9
* Phone model: Samsung SM-A207F (a20sxx)
* Briar version: 1.2.13 (5fdc7e7)
Stacktrace:
```
WifiService: Neither user 10177 nor current process has android.permission.ACCESS_WIFI_STATE.
java.lang.SecurityException: WifiService: Neither user 10177 nor current process has android.permission.ACCESS_WIFI_STATE.
at android.os.Parcel.createException(Parcel.java:1966)
at android.os.Parcel.readException(Parcel.java:1934)
at android.os.Parcel.readException(Parcel.java:1884)
at android.net.wifi.IWifiManager$Stub$Proxy.getConnectionInfo(IWifiManager.java:1928)
at android.net.wifi.WifiManager.getConnectionInfo(WifiManager.java:2099)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getWifiIpv4Address(AndroidLanTcpPlugin.java:129)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getPreferredWifiAddress(AndroidLanTcpPlugin.java:298)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0(AndroidLanTcpPlugin.java:260)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0$AndroidLanTcpPlugin(Unknown Source:0)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$AndroidLanTcpPlugin$RnrvoJsXGo91N3aS5KUNVN0J3hU.run(Unknown Source:2)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(Unknown Source:0)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$wSvuPL6t_HUoaaqCVexrhJX_RSg.run(Unknown Source:6)
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)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.ContextImpl.enforce(ContextImpl.java:1924)
at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1952)
at com.android.server.wifi.WifiServiceImpl.enforceAccessPermission(WifiServiceImpl.java:1697)
at com.android.server.wifi.WifiServiceImpl.getConnectionInfo(WifiServiceImpl.java:3776)
at android.net.wifi.IWifiManager$Stub.onTransact(IWifiManager.java:341)
```
Log not available due to #1917.
This is a strange one. Briar requests ACCESS_WIFI_STATE in the manifest and it should be granted automatically at install time.
Perhaps the device is in multi-user mode and only one user can hold this permission at once? Or perhaps the device has a permission management app that allows this permission to be revoked?Android 1.4https://code.briarproject.org/briar/briar/-/issues/1976TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds2021-03-24T16:19:38ZakwizgranTimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds* Android version: 7.1.2
* Phone model: Samsung SM-N7505 (hlltexx)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
android.os.BinderProxy.finalize() timed out after 10 seconds
java.util.concurrent.TimeoutException: android.os.BinderPr...* Android version: 7.1.2
* Phone model: Samsung SM-N7505 (hlltexx)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
android.os.BinderProxy.finalize() timed out after 10 seconds
java.util.concurrent.TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds
at android.os.BinderProxy.destroy(Native Method)
at android.os.BinderProxy.finalize(Binder.java:677)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:222)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:209)
at java.lang.Thread.run(Thread.java:761)
```
Possibly related to #1901?https://code.briarproject.org/briar/briar/-/issues/1975Crash: after introductions are declined by both parties (disappearing message...2021-05-05T16:17:23ZIvanaCrash: after introductions are declined by both parties (disappearing messages setting is ON on all devices)Scenario was like this;
Three devices, Samsung Mini API19, Nokia 1.3 API 30 and Pixel 2 API29. Samsung has connections with both, but they are not connected to each other. Disappearing messages are on for both Samsung's contacts, as we...Scenario was like this;
Three devices, Samsung Mini API19, Nokia 1.3 API 30 and Pixel 2 API29. Samsung has connections with both, but they are not connected to each other. Disappearing messages are on for both Samsung's contacts, as well as on Nokia and Pixel for the conversations with Samsung.
Samsung mini selects Pixel and goes to select the Make Introductions. Then it selects the Nokia's contact and sends a message to both of them. They both decline the intro message.
Samsung goes back to Pixel's conversation, and tries to perform the intro again, in the same way.
After selecting Make introductions, the crash happens. No logfile as the phone that crashed was not connected to Android Studio at the time of crash. But here are the screenshots of Stacktrace on the phone itself.
Reproduced - crash happens after both parties decline invitation with Disappearing msgs = ON. One more detail in the scenario is that the sender's atomatically generated messages related to this intro disappear before either of the recipients sees their messages re: intro that sender sent them. After disappearance of the sender's auto-generated msgs, both contacts then look at their messages and decline the intro.
![device-2021-03-23-115918](/uploads/fcf869c8275fe99c4ef3db7e9131a9d7/device-2021-03-23-115918.png)![device-2021-03-23-115939](/uploads/c42a2522c05d09c95a5a20358687a5cc/device-2021-03-23-115939.png)[Logfile_Crash_230321.txt](/uploads/d47015c1f5b198907b63ca667557fa6f/Logfile_Crash_230321.txt)Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1974briar-headless: multiple SLF4J bindings on tests2021-03-23T06:57:05ZSebastianbriar-headless: multiple SLF4J bindings on testsWhen running the tests on the `briar-headless` module, multiple bindings for SLF4J are found on the classpath, resulting in this warning:
```
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/z/...When running the tests on the `briar-headless` module, multiple bindings for SLF4J are found on the classpath, resulting in this warning:
```
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/z/gitlab/briar/briar-swing/briar-headless/build/libs/briar-headless.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/z/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.26/dfb0de47f433c2a37dd44449c88d84b698cd5cf7/slf4j-simple-1.7.26.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
```
It's not too bad as it's actually the same binding that's being found twice. However I was wondering, why this is the case and if there's something misconfigured. I took a look and my analysis is: briar-headless builds a fat jar with all the dependencies included (including slf4j) and for the tests both the fat jar as well as all the dependencies are put on the classpath. That means, we have everything twice on the classpath, not just the slf4j bindings.
I think it would be good to solve this somehow and the solution would probably be to fix the classpath of the tests. Either
* (A) let the tests run with the non-fat (regular) headless jar plus dependencies, or
* (B) run it with the fat jar but exclude the dependencies from the testing classpath