Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shared log can be too large #5561

Open
Helium314 opened this issue Mar 30, 2024 · 5 comments
Open

Shared log can be too large #5561

Helium314 opened this issue Mar 30, 2024 · 5 comments
Labels

Comments

@Helium314
Copy link
Collaborator

How to Reproduce
Manage to accumulate a large amount of log messages (e.g. by being very active), then go to logger, select an early start date and click share.
This may result in android.os.TransactionTooLargeException.

Expected Behavior
Working log share. Maybe truncate the log if necessary, or write to a file instead.

Versions affected
Probably all since addition of the logger.

@Helium314 Helium314 added the bug label Mar 30, 2024
@westnordost
Copy link
Member

Truncate to only the newest or only the oldest? What magnitude of numbers are we talking?

@westnordost westnordost added the feedback required more info is needed, issue will be likely closed if it is not provided label Mar 30, 2024
@Helium314
Copy link
Collaborator Author

I would say truncate to the newest, and maybe show a toast to clarify.
Or check the size beforehand, and ask the user to use filters to reduce the size.

What magnitude of numbers are we talking?

I got a crash report where the log couldn't be shared because the size was 3.6 MB.

@westnordost
Copy link
Member

According to a quick research, if the data passed in an Intent is below 500 kB it should be safe.

Assuming an average log size of 100 bytes, we have around 50,000 lines.

According to the documentation, it is also possible to not send the text directly but put it in some file and have the link to it in there. This would remove that restriction.
Something with EXTRA_STREAM...

@westnordost
Copy link
Member

Just adding @neonowy to the conversation

@westnordost westnordost removed the feedback required more info is needed, issue will be likely closed if it is not provided label Mar 30, 2024
@riQQ riQQ mentioned this issue May 4, 2024
@mnalis
Copy link
Member

mnalis commented Sep 11, 2024

I've tried to share a log with some 9k lines/entries from the StreetComplete, and it crashed:


Thread: mainApp version: 59.0-alpha4
Device: samsung  dm2q, Android 14
Locale: en_US

Stack trace:
java.lang.RuntimeException: Failure from system
	at android.app.Instrumentation.execStartActivity(Instrumentation.java:1880)
	at android.app.Activity.startActivityForResult(Activity.java:5760)
	at androidx.activity.ComponentActivity.startActivityForResult(SourceFile:0)
	at android.app.Activity.startActivityForResult(Activity.java:5718)
	at androidx.activity.ComponentActivity.startActivityForResult(SourceFile:0)
	at android.app.Activity.startActivity(Activity.java:6216)
	at android.app.Activity.startActivity(Activity.java:6183)
	at de.westnordost.streetcomplete.screens.about.logs.LogsScreenKt.shareLog(Unknown Source:59)
	at de.westnordost.streetcomplete.screens.about.logs.LogsScreenKt.access$shareLog(Unknown Source:0)
	at de.westnordost.streetcomplete.screens.about.logs.LogsScreenKt$LogsScreen$2$3.invoke$lambda$2(Unknown Source:26)
	at de.westnordost.streetcomplete.screens.about.logs.LogsScreenKt$LogsScreen$2$3.$r8$lambda$EZ8FyTCtK7xjZ8_3JxN_uNv0iz8(SourceFile:0)
	at de.westnordost.streetcomplete.screens.about.logs.LogsScreenKt$LogsScreen$2$3$$ExternalSyntheticLambda1.invoke(SourceFile:0)
	at androidx.compose.foundation.ClickablePointerInputNode$pointerInput$3.invoke-k-4lQ0M(Unknown Source:14)
	at androidx.compose.foundation.ClickablePointerInputNode$pointerInput$3.invoke(Unknown Source:6)
	at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(Unknown Source:186)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Unknown Source:11)
	at kotlinx.coroutines.DispatchedTaskKt.resume(Unknown Source:91)
	at kotlinx.coroutines.DispatchedTaskKt.dispatch(Unknown Source:51)
	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(Unknown Source:7)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(Unknown Source:37)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(Unknown Source:7)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(Unknown Source:10)
	at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(Unknown Source:15)
	at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(Unknown Source:50)
	at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(Unknown Source:33)
	at androidx.compose.foundation.AbstractClickablePointerInputNode.onPointerEvent-H0pRuoY(Unknown Source:2)
	at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY(Unknown Source:4)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(Unknown Source:190)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(Unknown Source:159)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(Unknown Source:159)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(Unknown Source:159)
	at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(Unknown Source:19)
	at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(Unknown Source:24)
	at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(Unknown Source:164)
	at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(Unknown Source:78)
	at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(Unknown Source:137)
	at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(Unknown Source:63)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3328)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2998)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3328)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2998)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3328)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2998)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3328)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2998)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3328)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2998)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3328)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2998)
	at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:776)
	at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1967)
	at android.app.Activity.dispatchTouchEvent(Activity.java:4548)
	at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(Unknown Source:2)
	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:734)
	at android.view.View.dispatchPointerEvent(View.java:16489)
	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8602)
	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:8353)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7682)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7739)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7705)
	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7908)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7713)
	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7965)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7686)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7739)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7705)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7713)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7686)
	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:11250)
	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:11119)
	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:11075)
	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:11384)
	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:337)
	at android.os.MessageQueue.nativePollOnce(Native Method)
	at android.os.MessageQueue.next(MessageQueue.java:335)
	at android.os.Looper.loopOnce(Looper.java:187)
	at android.os.Looper.loop(Looper.java:319)
	at android.app.ActivityThread.main(ActivityThread.java:8919)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@48d0193, androidx.compose.runtime.BroadcastFrameClock@136a5d0, StandaloneCoroutine{Cancelling}@9aa29c9, AndroidUiDispatcher@a538ce]
Caused by: android.os.TransactionTooLargeException: data parcel size 2635952 bytes
	at android.os.BinderProxy.transactNative(Native Method)
	at android.os.BinderProxy.transact(BinderProxy.java:662)
	at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3041)
	at android.app.Instrumentation.execStartActivity(Instrumentation.java:1873)
	... 80 more

Log:
2024-09-02T12:32:02.504: I [Preloader] Loaded country boundaries in 0.1s
2024-09-02T12:32:02.604: I [Preloader] Loaded features dictionary in 0.2s
2024-09-02T12:32:02.605: I [Preloader] Preloading data took 0.2s
2024-09-02T12:32:02.877: V [MapImages] Loaded 27 images
2024-09-02T12:32:03.316: D [OsmAvatarsDownload] Downloaded file 172435

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants