Skip to content

[BUG] Crash when big txt file is previewed #4915

Description

@jesmrec

Could be related with #3794

Steps to reproduce

  1. Create a big txt file (~30MB)
  2. In app, open it

Actual behaviour

Spinner of waiting... and finally a crash. Stacktrace:

Process: com.owncloud.android.debug, PID: 16420
                 java.lang.OutOfMemoryError: Failed to allocate a 16 byte allocation with 2240160 free bytes and 2187KB until OOM, target footprint 268435456, growth limit 268435456; giving up on allocation because <1% of heap free after GC.
                 	at android.text.MeasuredParagraph.<init>(MeasuredParagraph.java:129)
                 	at android.text.MeasuredParagraph.obtain(MeasuredParagraph.java:80)
                 	at android.text.MeasuredParagraph.buildForStaticLayoutInternal(MeasuredParagraph.java:596)
                 	at android.text.MeasuredParagraph.buildForStaticLayout(MeasuredParagraph.java:543)
                 	at android.text.PrecomputedText.createMeasuredParagraphs(PrecomputedText.java:526)
                 	at android.text.StaticLayout.generate(StaticLayout.java:886)
                 	at android.text.StaticLayout.<init>(StaticLayout.java:733)
                 	at android.text.StaticLayout.<init>(StaticLayout.java:0)
                 	at android.text.StaticLayout$Builder.build(StaticLayout.java:547)
                 	at android.widget.TextView.makeSingleLayout(TextView.java:11216)
                 	at android.widget.TextView.makeNewLayout(TextView.java:10992)
                 	at android.widget.TextView.onMeasure(TextView.java:11442)
                 	at androidx.appcompat.widget.AppCompatTextView.onMeasure(AppCompatTextView.java:615)
                 	at android.view.View.measure(View.java:29423)
                 	at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1533)
                 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                 	at android.widget.ScrollView.onMeasure(ScrollView.java:474)
                 	at android.view.View.measure(View.java:29423)
                 	at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:735)
                 	at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
                 	at android.view.View.measure(View.java:29423)
                 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7068)
                 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                 	at android.view.View.measure(View.java:29423)
                 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7068)
                 	at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)
                 	at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:833)
                 	at android.view.View.measure(View.java:29423)
                 	at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
                 	at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:632)
                 	at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:452)
                 	at androidx.constraintlayout.core.widgets.analyzer.Direct.solveVerticalMatchConstraint(Direct.java:750)
                 	at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:503)
                 	at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:542)
                 	at androidx.constraintlayout.core.widgets.analyzer.Direct.solvingPass(Direct.java:224)
                 	at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.layout(ConstraintWidgetContainer.java:693)
                 	at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solveLinearSystem(BasicMeasure.java:160)
                 	at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:291)
                 	at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:120)
                 	at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
                 	at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
                 	at android.view.View.measure(View.java:29423)
                 	at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1156)
                 	at android.view.View.measure(View.java:29423)
                 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7068)
                 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                 	at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145)
                 	at android.view.View.measure(View.java:29423)
                 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7068)
09:48:23.297  I  Process is going to kill itself!
                 java.lang.Exception
                 	at android.os.Process.killProcess(Process.java:1495)
                 	at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:193)
                 	at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1098)
                 	at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1093)
                 	at java.lang.Thread.dispatchUncaughtException(Thread.java:3387)

Expected behaviour

File correctly opened

Reproducible with any Android version and backend.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions