Problem description
When trying to share a large terminal transcript, application may do nothing or even crash.
It seems like Android puts some limits on data sent with intent. From experiments, it seems that max possible transcript size is around 128 KB.
Steps to reproduce
Open new session.
Fill console with some data. For example:
dd if=/dev/zero bs=1M count=1 | tr '\0' 'A'
From context menu click on button "Share transcript".
Expected behavior
Application should be able to share the transcript regardless of content size.
If it is not possible to send whole transcript, it can be truncated to the reasonable size.
Additional information
Android log:
06-25 00:15:19.048 21822 21822 E JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 2051700)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: FATAL EXCEPTION: main
06-25 00:15:19.053 21822 21822 E AndroidRuntime: Process: com.termux, PID: 21822
06-25 00:15:19.053 21822 21822 E AndroidRuntime: java.lang.RuntimeException: Failure from system
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1624)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4564)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4522)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4883)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4851)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.termux.app.TermuxActivity.onContextItemSelected(SourceFile:28)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Activity.onMenuItemSelected(Activity.java:3547)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$PhoneWindowMenuCallback.onMenuItemSelected(PhoneWindow.java:3996)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:761)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:172)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:908)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:898)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:178)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:1269)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.widget.AdapterView.performItemClick(AdapterView.java:350)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.widget.AbsListView.performItemClick(AbsListView.java:1683)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.widget.AbsListView$PerformClick.run(AbsListView.java:4094)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.widget.AbsListView$10.run(AbsListView.java:6583)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:789)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:98)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6944)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: Caused by: android.os.TransactionTooLargeException: data parcel size 2051700 bytes
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.os.BinderProxy.transactNative(Native Method)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.os.BinderProxy.transact(Binder.java:761)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4883)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1617)
06-25 00:15:19.053 21822 21822 E AndroidRuntime: ... 24 more
Problem description When trying to share a large terminal transcript, application may do nothing or even crash.
It seems like Android puts some limits on data sent with intent. From experiments, it seems that max possible transcript size is around 128 KB.
Steps to reproduce
Open new session.
Fill console with some data. For example:
From context menu click on button "Share transcript".
Expected behavior
Application should be able to share the transcript regardless of content size. If it is not possible to send whole transcript, it can be truncated to the reasonable size.
Additional information
Android log: