Просмотр исходного кода

fix(grouping): Fix a bug where prefix frame was used as sentinel (#27957)

Markus Unterwaditzer 3 лет назад
Родитель
Сommit
60a2177e14

+ 0 - 2
src/sentry/grouping/strategies/hierarchical.py

@@ -63,8 +63,6 @@ def get_stacktrace_hierarchy(main_variant, components, frames, inverted_hierarch
 
                 if not component.is_prefix_frame:
                     break
-            else:
-                break
 
         # For consistency, we always want to preserve the sort order of the
         # event frames, no matter what order we're going through.

+ 750 - 1
tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/android_anr.pysnap

@@ -1,5 +1,5 @@
 ---
-created: '2021-08-04T15:53:49.350178Z'
+created: '2021-08-05T16:10:41.439230Z'
 creator: sentry
 source: tests/sentry/grouping/test_variants.py
 ---
@@ -38,6 +38,699 @@ app-depth-max:
     app-depth-max*
       exception*
         stacktrace*
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "com.android.internal.os.ZygoteInit"
+            filename (module takes precedence)
+              "zygoteinit.java"
+            function*
+              "main"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "com.android.internal.os.ZygoteInit$MethodAndArgsCaller"
+            filename (module takes precedence)
+              "zygoteinit.java"
+            function*
+              "run"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "java.lang.reflect.Method"
+            filename (module takes precedence)
+              "method.java"
+            function*
+              "invoke"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "java.lang.reflect.Method"
+            filename (module takes precedence)
+              "method.java"
+            function*
+              "invoke"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.app.ActivityThread"
+            filename (module takes precedence)
+              "activitythread.java"
+            function*
+              "main"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.os.Looper"
+            filename (module takes precedence)
+              "looper.java"
+            function*
+              "loop"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.os.Handler"
+            filename (module takes precedence)
+              "handler.java"
+            function*
+              "dispatchMessage"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.os.Handler"
+            filename (module takes precedence)
+              "handler.java"
+            function*
+              "handleCallback"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.Choreographer$FrameDisplayEventReceiver"
+            filename (module takes precedence)
+              "choreographer.java"
+            function*
+              "run"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.Choreographer"
+            filename (module takes precedence)
+              "choreographer.java"
+            function*
+              "doFrame"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.Choreographer"
+            filename (module takes precedence)
+              "choreographer.java"
+            function*
+              "doCallbacks"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.Choreographer$CallbackRecord"
+            filename (module takes precedence)
+              "choreographer.java"
+            function*
+              "run"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewRootImpl$TraversalRunnable"
+            filename (module takes precedence)
+              "viewrootimpl.java"
+            function*
+              "run"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewRootImpl"
+            filename (module takes precedence)
+              "viewrootimpl.java"
+            function*
+              "doTraversal"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewRootImpl"
+            filename (module takes precedence)
+              "viewrootimpl.java"
+            function*
+              "performTraversals"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewRootImpl"
+            filename (module takes precedence)
+              "viewrootimpl.java"
+            function*
+              "performLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "layoutVertical"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "setChildFrame"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "layoutVertical"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "setChildFrame"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "layoutVertical"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "setChildFrame"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "layoutVertical"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "setChildFrame"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "layoutVertical"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.LinearLayout"
+            filename (module takes precedence)
+              "linearlayout.java"
+            function*
+              "setChildFrame"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "onLayout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.widget.FrameLayout"
+            filename (module takes precedence)
+              "framelayout.java"
+            function*
+              "layoutChildren"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.ViewGroup"
+            filename (module takes precedence)
+              "viewgroup.java"
+            function*
+              "layout"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            module*
+              "android.view.View"
+            filename (module takes precedence)
+              "view.java"
+            function*
+              "layout"
           frame* (marked as prefix frame by stack trace rule (category:ui +sentinel +prefix))
             module*
               "androidx.recyclerview.widget.RecyclerView"
@@ -45,6 +738,62 @@ app-depth-max:
               "sourcefile"
             function*
               "onLayout"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.RecyclerView"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "dispatchLayout"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.RecyclerView"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "dispatchLayoutStep1"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.RecyclerView"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "processAdapterUpdatesAndSetAnimationFlags"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.AdapterHelper"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "consumeUpdatesInOnePass"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.RecyclerView$6"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "offsetPositionsForAdd"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.RecyclerView"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "offsetPositionRecordsForInsert"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.ChildHelper"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "getUnfilteredChildAt"
+          frame (ignored by stack trace rule (category:internals -group))
+            module*
+              "androidx.recyclerview.widget.RecyclerView$5"
+            filename (module takes precedence)
+              "sourcefile"
+            function*
+              "getChildAt"
         type*
           "ApplicationNotResponding"
         value (ignored because stacktrace takes precedence)

+ 15 - 6
tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/fallback_prefix_level_1.pysnap

@@ -1,11 +1,11 @@
 ---
-created: '2021-08-04T15:53:48.551274Z'
+created: '2021-08-05T16:10:40.444237Z'
 creator: sentry
 source: tests/sentry/grouping/test_variants.py
 ---
 app-depth-1:
-  hash: "87497299851e09febfecf4e84e0d45ba"
-  tree_label: "objc_release | -[UIApplication _run]"
+  hash: "972a7e3aa49f6619550683c8202b05d4"
+  tree_label: "-[UIApplication _run]"
   component:
     app-depth-1*
       exception*
@@ -13,9 +13,6 @@ app-depth-1:
           frame* (marked as prefix frame by stack trace rule (category:ui +sentinel +prefix))
             function*
               "-[UIApplication _run]"
-          frame* (marked as prefix frame by stack trace rule (category:free +prefix))
-            function*
-              "objc_release"
         type*
           "EXC_BAD_ACCESS"
 --------------------------------------------------------------------------
@@ -26,9 +23,21 @@ app-depth-max:
     app-depth-max*
       exception*
         stacktrace*
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            function*
+              "start"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            function*
+              "stripped_application_code"
+          frame (ignored by stack trace rule (category:threadbase -group v-group))
+            function*
+              "UIApplicationMain"
           frame* (marked as prefix frame by stack trace rule (category:ui +sentinel +prefix))
             function*
               "-[UIApplication _run]"
+          frame (ignored by stack trace rule (category:internals -group))
+            function*
+              "GSEventRunModal"
           frame* (marked as prefix frame by stack trace rule (category:free +prefix))
             function*
               "objc_release"