3

I've had the following crash reported only once by a particular user on Android 4.0.3. I see no references in the stack tract to my code and I'm wondering if anyone has any ideas regarding what could be causing this issue?

Obviously, not the highest priority because it's only been reported once, but I'd still like to understand. I'm unable to reproduce on 4.0.2 (I can'ta get a 4.0.3 emulator running).

Thank you,

Stack trace:

java.lang.StackOverflowError
android.text.TextLine.handleRun(TextLine.java:986)
android.text.TextLine.measureRun(TextLine.java:430)
android.text.TextLine.measure(TextLine.java:295)
android.text.TextLine.metrics(TextLine.java:269)
android.text.Layout.getLineExtent(Layout.java:947)
android.text.Layout.draw(Layout.java:410)
android.text.BoringLayout.draw(BoringLayout.java:400)
android.widget.TextView.onDraw(TextView.java:5047)
android.view.View.draw(View.java:10983)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.getDisplayList(View.java:10420)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.widget.FrameLayout.draw(FrameLayout.java:450)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.widget.AbsListView.dispatchDraw(AbsListView.java:2092)
android.view.View.draw(View.java:10986)
android.widget.AbsListView.draw(AbsListView.java:3398)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.widget.FrameLayout.draw(FrameLayout.java:450)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.getDisplayList(View.java:10420)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.widget.FrameLayout.draw(FrameLayout.java:450)
android.widget.ScrollView.draw(ScrollView.java:1524)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.support.v4.view.ViewPager.draw(SourceFile:2336)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.getDisplayList(View.java:10420)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.support.v4.widget.DrawerLayout.drawChild(SourceFile:1373)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.getDisplayList(View.java:10420)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.widget.FrameLayout.draw(FrameLayout.java:450)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.getDisplayList(View.java:10420)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.view.View.getDisplayList(View.java:10422)
android.view.ViewGroup.drawChild(ViewGroup.java:2856)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
android.view.View.draw(View.java:10986)
android.widget.FrameLayout.draw(FrameLayout.java:450)
com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2198)
android.view.View.getDisplayList(View.java:10422)
android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:849)
android.view.ViewRootImpl.draw(ViewRootImpl.java:1942)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1666)
android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2474)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4447)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
dalvik.system.NativeStart.main(Native Method)

Here's my main activity's XML (the one that users a DrawerLayout). Lint does not report anything significant and I don't see an obvious issue here.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- To show drawer over toolbar, move this down to right above frameLayout -->

    <include
        android:id="@+id/app_bar"
        layout="@layout/app_bar" />

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/content_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/bg_offwhite">

            <FrameLayout
                android:id="@+id/main_frag_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="com.nsouth.myapp.Activity_Main"
                tools:ignore="MergeRootFrame" />

        </RelativeLayout>

        <android.support.design.widget.NavigationView
            android:id="@+id/navigation_view"
            android:layout_width="290dp"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:theme="@style/MyNavViewTheme"
            app:headerLayout="@layout/nav_drawer_header"
            app:menu="@menu/nav_drawer_menu" />

    </android.support.v4.widget.DrawerLayout>

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginTop="-80dp"
        android:id="@+id/snackbarPosition">
    </android.support.design.widget.CoordinatorLayout>

    <LinearLayout
        android:id="@+id/tv_main_debug_area"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="-40dp"
        android:visibility="visible"
        android:paddingLeft="10dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv_debug_pfeatures_status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="unknown" />
        <TextView
            android:id="@+id/tv_debug_pfeatures_daysremaining"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="unknown" />

    </LinearLayout>

</LinearLayout>
NSouth
  • 5,067
  • 7
  • 48
  • 83

1 Answers1

0

It's sure that you have nested layouts so that you are getting this error. See this question.

In addition there was layoutopt to fix the hierarchical layout issues but it is now replaced by lint after the SDK Tools revision 16.

So use lint

which can help you to easily identify and correct problems with the structural quality of your code as well as it checks your Android project source files for potential bugs and optimization improvements for correctness,

Community
  • 1
  • 1
Shree Krishna
  • 8,474
  • 6
  • 40
  • 68
  • Thanks, I'll run `lint` and dig in deeper tomorrow. Do you know where I should be looking for these errors? I ran `lint` in my activity layout that holds my `DrawerLayout` and got no red flags. Also, since nesting the occasional layout within another layout is not uncommon in Android, I'm not sure *which kinds of nesting* could cause this issue. I've updated my question with my activity XML. – NSouth May 16 '16 at 04:28
  • Yeah you are right, The problem is only occurred in some devices with 4-...-... versions. I know [Hierarchy Viewer and lint tool](http://developer.android.com/tools/debugging/debugging-ui.html) helps debugging this but, unfortunately I didn't use those all till today so that I've not deep knowledge on this. Hope you will understand and fix it soon. – Shree Krishna May 16 '16 at 04:41