From 6f47f402881c7dceb1fc510db3699b98ca8424b1 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 28 Oct 2026 11:04:44 -0700 Subject: [PATCH 1/2] add and modify unity inputs --- .../unity_coroutine_dispatch.json | 25 ++++--- .../grouping_inputs/unity_il2cpp_ios.json | 5 ++ .../grouping_inputs/unity_il2cpp_linux.json | 65 +++++++++++++++++++ .../grouping_inputs/unity_il2cpp_macos.json | 24 +++---- .../grouping_inputs/unity_il2cpp_windows.json | 65 +++++++++++++++++++ 5 files changed, 162 insertions(+), 22 deletions(-) create mode 100644 tests/sentry/grouping/grouping_inputs/unity_il2cpp_linux.json create mode 100644 tests/sentry/grouping/grouping_inputs/unity_il2cpp_windows.json diff --git a/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json b/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json index 0f175fb5c365..9f16c86ade3e 100644 --- a/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json +++ b/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json @@ -8,32 +8,37 @@ "stacktrace": { "frames": [ { - "function": "GameBootstrap.Start()", + "function": "Start", "module": "GameBootstrap", "package": "Assembly-CSharp", - "filename": "Assets/Scripts/GameBootstrap.cs" + "filename": "Assets/Scripts/GameBootstrap.cs", + "in_app": true }, { - "function": "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)", + "function": "StartCoroutine", "module": "UnityEngine.MonoBehaviour", - "package": "UnityEngine.CoreModule" + "package": "UnityEngine.CoreModule", + "in_app": false }, { - "function": "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)", + "function": "InvokeMoveNext", "module": "UnityEngine.SetupCoroutine", - "package": "UnityEngine.CoreModule" + "package": "UnityEngine.CoreModule", + "in_app": false }, { - "function": "EnemySpawner+d__4.MoveNext()", + "function": "MoveNext", "module": "EnemySpawner+d__4", "package": "Assembly-CSharp", - "filename": "Assets/Scripts/EnemySpawner.cs" + "filename": "Assets/Scripts/EnemySpawner.cs", + "in_app": true }, { - "function": "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)", + "function": "ApplyDamage", "module": "CombatSystem", "package": "Assembly-CSharp", - "filename": "Packages/com.mystudio.combat/Runtime/CombatSystem.cs" + "filename": "Packages/com.mystudio.combat/Runtime/CombatSystem.cs", + "in_app": true } ] } diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json index c66c72623605..45676272f05e 100644 --- a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json @@ -16,6 +16,11 @@ "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/SpaceGame", "abs_path": "/Users/builder/Projects/SpaceGame/Builds/iOS/MainApp/main.mm" }, + { + "function": "-[UnityFramework runUIApplicationMainWithArgc:argv:]", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/builder/Projects/SpaceGame/Builds/iOS/Classes/main.mm" + }, { "function": "UIApplicationMain", "package": "/System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore" diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_linux.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_linux.json new file mode 100644 index 000000000000..92cf5c709daf --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_linux.json @@ -0,0 +1,65 @@ +{ + "platform": "native", + "exception": { + "values": [ + { + "type": "EXC_BAD_ACCESS", + "value": "Attempted to dereference null pointer.", + "stacktrace": { + "frames": [ + { + "function": "main", + "package": "/home/player/SpaceGame/SpaceGame" + }, + { + "function": "UnityMain", + "package": "/home/player/SpaceGame/UnityPlayer.so" + }, + { + "function": "PlayerLoop", + "package": "/home/player/SpaceGame/UnityPlayer.so" + }, + { + "function": "ScriptingInvocation::Invoke", + "package": "/home/player/SpaceGame/UnityPlayer.so" + }, + { + "function": "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017", + "package": "/home/player/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/Projects/SpaceGame/Library/Bee/artifacts/LinuxPlayerBuildProgram/il2cppOutput/cpp/Il2CppInvokerTable.cpp" + }, + { + "function": "EnemySpawner_Update_m0F4C0A0B9E21D0E4C5A17B3D8C2F91A0B6E7D4C3", + "package": "/home/player/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/Projects/SpaceGame/Assets/Scripts/EnemySpawner.cs" + }, + { + "function": "CombatSystem_ApplyDamage_m7486FA1E8A228E806BA045D26ABECC87DFD436B4", + "package": "/home/player/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/Projects/SpaceGame/Packages/com.mystudio.combat/Runtime/CombatSystem.cs" + }, + { + "function": "TMP_Text_SetText_mA1B2C3D4E5F60718293A4B5C6D7E8F9012345678", + "package": "/home/player/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/Projects/SpaceGame/Library/PackageCache/com.unity.textmeshpro@3.0.6/Assets/TMP_Text.cs" + }, + { + "function": "Animation_Play_m5D3E8F1A2B4C6D7E8F9A0B1C2D3E4F5061728394", + "package": "/home/player/SpaceGame/GameAssembly.so", + "abs_path": "/home/bokken/build/output/unity/unity/Modules/Animation/ScriptBindings/Assets/Animation.bindings.cs" + }, + { + "function": "il2cpp_codegen_raise_null_reference_exception", + "package": "/home/player/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/Projects/SpaceGame/Library/Bee/artifacts/LinuxPlayerBuildProgram/il2cppOutput/cpp/Il2CppCodeGen.cpp" + }, + { + "function": "sentry__handle_signal", + "package": "/home/player/SpaceGame/SpaceGame_Data/Plugins/libsentry.so" + } + ] + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json index bd8b03bac1a3..3adf074c0dfd 100644 --- a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json @@ -9,57 +9,57 @@ "frames": [ { "function": "main", - "package": "/Applications/SpaceGame.app/Contents/MacOS/SpaceGame" + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/MacOS/SpaceGame" }, { "function": "UnityMain", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" }, { "function": "PlayerLoop", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" }, { "function": "ScriptingInvocation::Invoke", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" }, { "function": "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", "abs_path": "/Users/builder/Projects/SpaceGame/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Il2CppInvokerTable.cpp" }, { "function": "EnemySpawner_Update_m0F4C0A0B9E21D0E4C5A17B3D8C2F91A0B6E7D4C3", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", "abs_path": "/Users/builder/Projects/SpaceGame/Assets/Scripts/EnemySpawner.cs" }, { "function": "CombatSystem_ApplyDamage_m7486FA1E8A228E806BA045D26ABECC87DFD436B4", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", "abs_path": "/Users/builder/Projects/SpaceGame/Packages/com.mystudio.combat/Runtime/CombatSystem.cs" }, { "function": "TMP_Text_SetText_mA1B2C3D4E5F60718293A4B5C6D7E8F9012345678", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", "abs_path": "/Users/builder/Projects/SpaceGame/Library/PackageCache/com.unity.textmeshpro@3.0.6/Assets/TMP_Text.cs" }, { "function": "Animation_Play_m5D3E8F1A2B4C6D7E8F9A0B1C2D3E4F5061728394", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", "abs_path": "/Users/bokken/build/output/unity/unity/Modules/Animation/ScriptBindings/Assets/Animation.bindings.cs" }, { "function": "il2cpp_codegen_raise_null_reference_exception", - "package": "/Applications/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/Frameworks/GameAssembly.dylib", "abs_path": "/Users/builder/Projects/SpaceGame/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Il2CppCodeGen.cpp" }, { "function": "sentry__handle_signal", - "package": "/Applications/SpaceGame.app/Contents/PlugIns/libsentry.dylib" + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/PlugIns/libsentry.dylib" }, { "function": "+[SentrySDK captureCrashEvent:]", - "package": "/Applications/SpaceGame.app/Contents/PlugIns/Sentry.dylib" + "package": "/Users/player/Library/Application Support/Steam/steamapps/common/SpaceGame/SpaceGame.app/Contents/PlugIns/Sentry.dylib" } ] } diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_windows.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_windows.json new file mode 100644 index 000000000000..785179183581 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_windows.json @@ -0,0 +1,65 @@ +{ + "platform": "native", + "exception": { + "values": [ + { + "type": "EXC_BAD_ACCESS", + "value": "Attempted to dereference null pointer.", + "stacktrace": { + "frames": [ + { + "function": "wWinMain", + "package": "C:\\Games\\SpaceGame\\SpaceGame.exe" + }, + { + "function": "UnityMain", + "package": "C:\\Games\\SpaceGame\\UnityPlayer.dll" + }, + { + "function": "PlayerLoop", + "package": "C:\\Games\\SpaceGame\\UnityPlayer.dll" + }, + { + "function": "ScriptingInvocation::Invoke", + "package": "C:\\Games\\SpaceGame\\UnityPlayer.dll" + }, + { + "function": "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017", + "package": "C:\\Games\\SpaceGame\\GameAssembly.dll", + "abs_path": "C:\\Users\\builder\\Projects\\SpaceGame\\Library\\Bee\\artifacts\\WinPlayerBuildProgram\\il2cppOutput\\cpp\\Il2CppInvokerTable.cpp" + }, + { + "function": "EnemySpawner_Update_m0F4C0A0B9E21D0E4C5A17B3D8C2F91A0B6E7D4C3", + "package": "C:\\Games\\SpaceGame\\GameAssembly.dll", + "abs_path": "C:\\Users\\builder\\Projects\\SpaceGame\\Assets\\Scripts\\EnemySpawner.cs" + }, + { + "function": "CombatSystem_ApplyDamage_m7486FA1E8A228E806BA045D26ABECC87DFD436B4", + "package": "C:\\Games\\SpaceGame\\GameAssembly.dll", + "abs_path": "C:\\Users\\builder\\Projects\\SpaceGame\\Packages\\com.mystudio.combat\\Runtime\\CombatSystem.cs" + }, + { + "function": "TMP_Text_SetText_mA1B2C3D4E5F60718293A4B5C6D7E8F9012345678", + "package": "C:\\Games\\SpaceGame\\GameAssembly.dll", + "abs_path": "C:\\Users\\builder\\Projects\\SpaceGame\\Library\\PackageCache\\com.unity.textmeshpro@3.0.6\\Assets\\TMP_Text.cs" + }, + { + "function": "Animation_Play_m5D3E8F1A2B4C6D7E8F9A0B1C2D3E4F5061728394", + "package": "C:\\Games\\SpaceGame\\GameAssembly.dll", + "abs_path": "C:\\build\\output\\unity\\unity\\Modules\\Animation\\ScriptBindings\\Assets\\Animation.bindings.cs" + }, + { + "function": "il2cpp_codegen_raise_null_reference_exception", + "package": "C:\\Games\\SpaceGame\\GameAssembly.dll", + "abs_path": "C:\\Users\\builder\\Projects\\SpaceGame\\Library\\Bee\\artifacts\\WinPlayerBuildProgram\\il2cppOutput\\cpp\\Il2CppCodeGen.cpp" + }, + { + "function": "sentry_handle_exception", + "package": "C:\\Games\\SpaceGame\\SpaceGame_Data\\Plugins\\x86_64\\sentry.dll" + } + ] + } + } + ] + } +} From 4541af1ca2ba557b91f4674ab4fceebe9e3b2603 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 28 Oct 2026 11:05:14 -0700 Subject: [PATCH 2/2] update snapshots --- .../unity_coroutine_dispatch.pysnap | 41 +- .../unity_il2cpp_ios.pysnap | 14 +- .../unity_il2cpp_linux.pysnap | 78 ++ .../unity_il2cpp_macos.pysnap | 30 +- .../unity_il2cpp_windows.pysnap | 75 ++ .../unity_coroutine_dispatch.pysnap | 41 +- .../unity_il2cpp_ios.pysnap | 14 +- .../unity_il2cpp_linux.pysnap | 78 ++ .../unity_il2cpp_macos.pysnap | 30 +- .../unity_il2cpp_windows.pysnap | 75 ++ .../unity_coroutine_dispatch.pysnap | 60 +- .../unity_il2cpp_ios.pysnap | 70 +- .../unity_il2cpp_linux.pysnap | 814 ++++++++++++++++++ .../unity_il2cpp_macos.pysnap | 80 +- .../unity_il2cpp_windows.pysnap | 814 ++++++++++++++++++ .../unity_coroutine_dispatch.pysnap | 60 +- .../unity_il2cpp_ios.pysnap | 70 +- .../unity_il2cpp_linux.pysnap | 814 ++++++++++++++++++ .../unity_il2cpp_macos.pysnap | 80 +- .../unity_il2cpp_windows.pysnap | 814 ++++++++++++++++++ .../unity_coroutine_dispatch.pysnap | 46 +- .../unity_il2cpp_ios.pysnap | 14 +- .../unity_il2cpp_linux.pysnap | 118 +++ .../unity_il2cpp_macos.pysnap | 46 +- .../unity_il2cpp_windows.pysnap | 118 +++ .../unity_coroutine_dispatch.pysnap | 46 +- .../unity_il2cpp_ios.pysnap | 14 +- .../unity_il2cpp_linux.pysnap | 118 +++ .../unity_il2cpp_macos.pysnap | 46 +- .../unity_il2cpp_windows.pysnap | 118 +++ 30 files changed, 4546 insertions(+), 290 deletions(-) create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_linux.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_windows.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_linux.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_windows.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap index 1fe0166fb97f..dacecfd36deb 100644 --- a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap @@ -5,7 +5,7 @@ hash_basis: stacktrace hashing_metadata: { "num_stacktraces": 1, "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } --- metrics with tags: { @@ -16,13 +16,38 @@ metrics with tags: { "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { "chained_exception": "False", "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } } --- contributing variants: + app* + hash: "c0dd63bbc946a04d1c23e3de5b704cb0" + contributing component: exception + hint: None + root_component: + app* + exception* + stacktrace* + frame* (marked in-app by the client) + module* + "GameBootstrap" + function* + "Start" + frame* (marked in-app by the client) + module* + "EnemySpawner+d__4" + function* + "MoveNext" + frame* (marked in-app by the client) + module* + "CombatSystem" + function* + "ApplyDamage" + type* + "System.NullReferenceException" system* - hash: "f36868ba2e7766bad6639173f423f075" + hash: "c717cb04db34bd54f07fcea7897bff32" contributing component: exception hint: None root_component: @@ -33,26 +58,26 @@ contributing variants: module* "GameBootstrap" function* - "GameBootstrap.Start()" + "Start" frame* module* "UnityEngine.MonoBehaviour" function* - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" frame* module* "UnityEngine.SetupCoroutine" function* - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" frame* module* "EnemySpawner+d__4" function* - "EnemySpawner+d__4.MoveNext()" + "MoveNext" frame* module* "CombatSystem" function* - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" type* "System.NullReferenceException" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap index c9f1c758e74a..d2455db11dde 100644 --- a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap @@ -22,7 +22,7 @@ metrics with tags: { --- contributing variants: app* - hash: "7eb77a6781dde25799f955a0b9f1aa77" + hash: "b1bcdf7355443041394a45279217c6c1" contributing component: exception hint: None root_component: @@ -34,6 +34,11 @@ contributing variants: "main.mm" function* "main" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) function* "-[UnityAppController repaint]" @@ -76,7 +81,7 @@ contributing variants: type* "EXC_BAD_ACCESS" system* - hash: "ebc0b0fd747d0339916308cc175666f7" + hash: "458a27b32da3cf5c5043160391caa919" contributing component: exception hint: None root_component: @@ -91,6 +96,11 @@ contributing variants: "main.mm" function* "main" + frame* + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame* function* "-[UnityAppController repaint]" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap new file mode 100644 index 000000000000..946029a74fd6 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap @@ -0,0 +1,78 @@ +--- +source: tests/sentry/grouping/test_grouphash_metadata.py::test_metadata_from_variants +--- +hash_basis: stacktrace +hashing_metadata: { + "num_stacktraces": 1, + "stacktrace_location": "exception", + "stacktrace_type": "system" +} +--- +metrics with tags: { + "grouping.grouphashmetadata.event_hash_basis": { + "hash_basis": "stacktrace", + "is_hybrid_fingerprint": "False" + }, + "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { + "chained_exception": "False", + "stacktrace_location": "exception", + "stacktrace_type": "system" + } +} +--- +contributing variants: + system* + hash: "0c557c696bf6942ff7b2fd5847a0418a" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + function* + "main" + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry__handle_signal" + type* + "EXC_BAD_ACCESS" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap index 946029a74fd6..90274d4c89e1 100644 --- a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap @@ -5,7 +5,7 @@ hash_basis: stacktrace hashing_metadata: { "num_stacktraces": 1, "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } --- metrics with tags: { @@ -16,62 +16,62 @@ metrics with tags: { "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { "chained_exception": "False", "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } } --- contributing variants: - system* + app* hash: "0c557c696bf6942ff7b2fd5847a0418a" contributing component: exception hint: None root_component: - system* + app* exception* stacktrace* - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "main" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "UnityMain" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "PlayerLoop" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "ScriptingInvocation::Invoke" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppinvokertable.cpp" function* "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "enemyspawner.cs" function* "EnemySpawner_Update" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "combatsystem.cs" function* "CombatSystem_ApplyDamage" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "tmp_text.cs" function* "TMP_Text_SetText" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "animation.bindings.cs" function* "Animation_Play" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppcodegen.cpp" function* "il2cpp_codegen_raise_null_reference_exception" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "sentry__handle_signal" type* diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap new file mode 100644 index 000000000000..def5b6e10d85 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap @@ -0,0 +1,75 @@ +--- +source: tests/sentry/grouping/test_grouphash_metadata.py::test_metadata_from_variants +--- +hash_basis: stacktrace +hashing_metadata: { + "num_stacktraces": 1, + "stacktrace_location": "exception", + "stacktrace_type": "system" +} +--- +metrics with tags: { + "grouping.grouphashmetadata.event_hash_basis": { + "hash_basis": "stacktrace", + "is_hybrid_fingerprint": "False" + }, + "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { + "chained_exception": "False", + "stacktrace_location": "exception", + "stacktrace_type": "system" + } +} +--- +contributing variants: + system* + hash: "fe94d4bd710d5e83bff9a6f1e8be22c2" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry_handle_exception" + type* + "EXC_BAD_ACCESS" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap index b7293e9bcb72..bebeaf0cada8 100644 --- a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap @@ -5,7 +5,7 @@ hash_basis: stacktrace hashing_metadata: { "num_stacktraces": 1, "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } --- metrics with tags: { @@ -16,13 +16,38 @@ metrics with tags: { "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { "chained_exception": "False", "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } } --- contributing variants: + app* + hash: "31cfc54cd60b693b789568c5ec9278e2" + contributing component: exception + hint: None + root_component: + app* + exception* + type* + "System.NullReferenceException" + stacktrace* + frame* (marked in-app by the client) + module* + "GameBootstrap" + function* + "Start" + frame* (marked in-app by the client) + module* + "EnemySpawner+d__4" + function* + "MoveNext" + frame* (marked in-app by the client) + module* + "CombatSystem" + function* + "ApplyDamage" system* - hash: "872f67574fe082419e092229105d22ca" + hash: "633f98691c6d46f1b91a753cfbb90cc0" contributing component: exception hint: None root_component: @@ -35,24 +60,24 @@ contributing variants: module* "GameBootstrap" function* - "GameBootstrap.Start()" + "Start" frame* module* "UnityEngine.MonoBehaviour" function* - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" frame* module* "UnityEngine.SetupCoroutine" function* - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" frame* module* "EnemySpawner+d__4" function* - "EnemySpawner+d__4.MoveNext()" + "MoveNext" frame* module* "CombatSystem" function* - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap index 3448197861b2..ce9ec2a6c445 100644 --- a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap @@ -22,7 +22,7 @@ metrics with tags: { --- contributing variants: app* - hash: "8bbdecb4ad2f92d58133a93ee009a07b" + hash: "8760559d1e6a17097dca358c8389b245" contributing component: exception hint: None root_component: @@ -36,6 +36,11 @@ contributing variants: "main.mm" function* "main" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) function* "-[UnityAppController repaint]" @@ -76,7 +81,7 @@ contributing variants: function* "il2cpp_codegen_raise_null_reference_exception" system* - hash: "bae55c8a9132232871adf6b662a2d6da" + hash: "c5c6df56950274d88cb9f400ee61b8b0" contributing component: exception hint: None root_component: @@ -93,6 +98,11 @@ contributing variants: "main.mm" function* "main" + frame* + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame* function* "-[UnityAppController repaint]" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap new file mode 100644 index 000000000000..50fba82bc44d --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap @@ -0,0 +1,78 @@ +--- +source: tests/sentry/grouping/test_grouphash_metadata.py::test_metadata_from_variants +--- +hash_basis: stacktrace +hashing_metadata: { + "num_stacktraces": 1, + "stacktrace_location": "exception", + "stacktrace_type": "system" +} +--- +metrics with tags: { + "grouping.grouphashmetadata.event_hash_basis": { + "hash_basis": "stacktrace", + "is_hybrid_fingerprint": "False" + }, + "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { + "chained_exception": "False", + "stacktrace_location": "exception", + "stacktrace_type": "system" + } +} +--- +contributing variants: + system* + hash: "cd7247c52d95df0f046b9e8d86ca231f" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "EXC_BAD_ACCESS" + stacktrace* + frame* + function* + "main" + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry__handle_signal" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap index 50fba82bc44d..8861992f46ca 100644 --- a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap @@ -5,7 +5,7 @@ hash_basis: stacktrace hashing_metadata: { "num_stacktraces": 1, "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } --- metrics with tags: { @@ -16,63 +16,63 @@ metrics with tags: { "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { "chained_exception": "False", "stacktrace_location": "exception", - "stacktrace_type": "system" + "stacktrace_type": "in_app" } } --- contributing variants: - system* + app* hash: "cd7247c52d95df0f046b9e8d86ca231f" contributing component: exception hint: None root_component: - system* + app* exception* type* "EXC_BAD_ACCESS" stacktrace* - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "main" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "UnityMain" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "PlayerLoop" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "ScriptingInvocation::Invoke" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppinvokertable.cpp" function* "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "enemyspawner.cs" function* "EnemySpawner_Update" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "combatsystem.cs" function* "CombatSystem_ApplyDamage" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "tmp_text.cs" function* "TMP_Text_SetText" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "animation.bindings.cs" function* "Animation_Play" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppcodegen.cpp" function* "il2cpp_codegen_raise_null_reference_exception" - frame* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "sentry__handle_signal" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap new file mode 100644 index 000000000000..2dc7646cdc68 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap @@ -0,0 +1,75 @@ +--- +source: tests/sentry/grouping/test_grouphash_metadata.py::test_metadata_from_variants +--- +hash_basis: stacktrace +hashing_metadata: { + "num_stacktraces": 1, + "stacktrace_location": "exception", + "stacktrace_type": "system" +} +--- +metrics with tags: { + "grouping.grouphashmetadata.event_hash_basis": { + "hash_basis": "stacktrace", + "is_hybrid_fingerprint": "False" + }, + "grouping.grouphashmetadata.event_hashing_metadata.stacktrace": { + "chained_exception": "False", + "stacktrace_location": "exception", + "stacktrace_type": "system" + } +} +--- +contributing variants: + system* + hash: "44001547ce86280f99f76128242968f2" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "EXC_BAD_ACCESS" + stacktrace* + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry_handle_exception" diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap index 4817f3282ea6..5648e21faa5f 100644 --- a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap @@ -6,14 +6,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "variants": { "app_exception_stacktrace": { "component": { - "contributes": false, - "hint": "ignored because system exception takes precedence", + "contributes": true, + "hint": null, "id": "app", "name": "in-app", "values": [ { - "contributes": false, - "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "contributes": true, + "hint": null, "id": "exception", "name": "exception", "values": [ @@ -27,8 +27,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because stacktrace takes precedence", "id": "value", "name": null, "values": [ @@ -36,14 +36,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "ignored because it contains no in-app frames", + "contributes": true, + "hint": null, "id": "stacktrace", "name": "stacktrace", "values": [ { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by the client", "id": "frame", "name": null, "values": [ @@ -71,14 +71,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "GameBootstrap.Start()" + "Start" ] } ] }, { "contributes": false, - "hint": "non app frame", + "hint": "marked out of app by the client", "id": "frame", "name": null, "values": [ @@ -104,14 +104,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" ] } ] }, { "contributes": false, - "hint": "non app frame", + "hint": "marked out of app by the client", "id": "frame", "name": null, "values": [ @@ -137,14 +137,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" ] } ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by the client", "id": "frame", "name": null, "values": [ @@ -172,14 +172,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "EnemySpawner+d__4.MoveNext()" + "MoveNext" ] } ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by the client", "id": "frame", "name": null, "values": [ @@ -207,7 +207,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" ] } ] @@ -218,10 +218,10 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, - "contributes": false, + "contributes": true, "description": "exception stacktrace — in-app frames", - "hash": null, - "hint": "ignored because system exception takes precedence", + "hash": "c0dd63bbc946a04d1c23e3de5b704cb0", + "hint": null, "key": "app_exception_stacktrace", "type": "component" }, @@ -292,7 +292,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "GameBootstrap.Start()" + "Start" ] } ] @@ -325,7 +325,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" ] } ] @@ -358,7 +358,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" ] } ] @@ -393,7 +393,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "EnemySpawner+d__4.MoveNext()" + "MoveNext" ] } ] @@ -428,7 +428,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" ] } ] @@ -441,7 +441,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info }, "contributes": true, "description": "exception stacktrace — all frames", - "hash": "f36868ba2e7766bad6639173f423f075", + "hash": "c717cb04db34bd54f07fcea7897bff32", "hint": null, "key": "system_exception_stacktrace", "type": "component" diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_ios.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_ios.pysnap index 649de659e65d..2acc98273d5f 100644 --- a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_ios.pysnap +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_ios.pysnap @@ -105,6 +105,39 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, + { + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "main.mm" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" + ] + } + ] + }, { "contributes": false, "hint": "non app frame", @@ -497,7 +530,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info }, "contributes": true, "description": "exception stacktrace — in-app frames", - "hash": "7eb77a6781dde25799f955a0b9f1aa77", + "hash": "b1bcdf7355443041394a45279217c6c1", "hint": null, "key": "app_exception_stacktrace", "type": "component" @@ -603,6 +636,39 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "main.mm" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" + ] + } + ] + }, { "contributes": false, "hint": "ignored by built-in stacktrace rule (category:indirection -group)", @@ -995,7 +1061,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info }, "contributes": true, "description": "exception stacktrace — all frames", - "hash": "ebc0b0fd747d0339916308cc175666f7", + "hash": "458a27b32da3cf5c5043160391caa919", "hint": null, "key": "system_exception_stacktrace", "type": "component" diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_linux.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_linux.pysnap new file mode 100644 index 000000000000..a536dc59bee0 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_linux.pysnap @@ -0,0 +1,814 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2023-01-11", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": false, + "hint": "ignored because system exception takes precedence", + "id": "app", + "name": "in-app", + "values": [ + { + "contributes": false, + "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": true, + "hint": null, + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": false, + "hint": "ignored because it contains no in-app frames", + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "main" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry__handle_signal" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": false, + "description": "exception stacktrace — in-app frames", + "hash": null, + "hint": "ignored because system exception takes precedence", + "key": "app_exception_stacktrace", + "type": "component" + }, + "system_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "system", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "main" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry__handle_signal" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "0c557c696bf6942ff7b2fd5847a0418a", + "hint": null, + "key": "system_exception_stacktrace", + "type": "component" + } + } +} diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_macos.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_macos.pysnap index 0aef478fcb87..2bc63a947a61 100644 --- a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_macos.pysnap +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_macos.pysnap @@ -6,14 +6,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "variants": { "app_exception_stacktrace": { "component": { - "contributes": false, - "hint": "ignored because system exception takes precedence", + "contributes": true, + "hint": null, "id": "app", "name": "in-app", "values": [ { - "contributes": false, - "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "contributes": true, + "hint": null, "id": "exception", "name": "exception", "values": [ @@ -27,8 +27,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because stacktrace takes precedence", "id": "value", "name": null, "values": [ @@ -36,14 +36,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "ignored because it contains no in-app frames", + "contributes": true, + "hint": null, "id": "stacktrace", "name": "stacktrace", "values": [ { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -73,8 +73,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -104,8 +104,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -135,8 +135,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -166,8 +166,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -199,8 +199,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -232,8 +232,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -265,8 +265,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -298,8 +298,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -331,8 +331,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -364,8 +364,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -431,23 +431,23 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, - "contributes": false, + "contributes": true, "description": "exception stacktrace — in-app frames", - "hash": null, - "hint": "ignored because system exception takes precedence", + "hash": "0c557c696bf6942ff7b2fd5847a0418a", + "hint": null, "key": "app_exception_stacktrace", "type": "component" }, "system_exception_stacktrace": { "component": { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because app exception takes precedence", "id": "system", "name": null, "values": [ { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because hash matches app variant", "id": "exception", "name": "exception", "values": [ @@ -865,10 +865,10 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, - "contributes": true, + "contributes": false, "description": "exception stacktrace — all frames", - "hash": "0c557c696bf6942ff7b2fd5847a0418a", - "hint": null, + "hash": null, + "hint": "ignored because app exception takes precedence", "key": "system_exception_stacktrace", "type": "component" } diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_windows.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_windows.pysnap new file mode 100644 index 000000000000..bb2aad4148da --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_windows.pysnap @@ -0,0 +1,814 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2023-01-11", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": false, + "hint": "ignored because system exception takes precedence", + "id": "app", + "name": "in-app", + "values": [ + { + "contributes": false, + "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": true, + "hint": null, + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": false, + "hint": "ignored because it contains no in-app frames", + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "wWinMain" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry_handle_exception" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": false, + "description": "exception stacktrace — in-app frames", + "hash": null, + "hint": "ignored because system exception takes precedence", + "key": "app_exception_stacktrace", + "type": "component" + }, + "system_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "system", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": false, + "hint": "ignored by built-in stacktrace rule (category:threadbase -group v-group)", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "wWinMain" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry_handle_exception" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "fe94d4bd710d5e83bff9a6f1e8be22c2", + "hint": null, + "key": "system_exception_stacktrace", + "type": "component" + } + } +} diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap index bafe2c575404..fa6f1e244c05 100644 --- a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap @@ -6,14 +6,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "variants": { "app_exception_stacktrace": { "component": { - "contributes": false, - "hint": "ignored because system exception takes precedence", + "contributes": true, + "hint": null, "id": "app", "name": "in-app", "values": [ { - "contributes": false, - "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "contributes": true, + "hint": null, "id": "exception", "name": "exception", "values": [ @@ -27,8 +27,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because stacktrace takes precedence", "id": "value", "name": null, "values": [ @@ -36,14 +36,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "ignored because it contains no in-app frames", + "contributes": true, + "hint": null, "id": "stacktrace", "name": "stacktrace", "values": [ { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by the client", "id": "frame", "name": null, "values": [ @@ -71,14 +71,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "GameBootstrap.Start()" + "Start" ] } ] }, { "contributes": false, - "hint": "non app frame", + "hint": "marked out of app by the client", "id": "frame", "name": null, "values": [ @@ -104,14 +104,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" ] } ] }, { "contributes": false, - "hint": "non app frame", + "hint": "marked out of app by the client", "id": "frame", "name": null, "values": [ @@ -137,14 +137,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" ] } ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by the client", "id": "frame", "name": null, "values": [ @@ -172,14 +172,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "EnemySpawner+d__4.MoveNext()" + "MoveNext" ] } ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by the client", "id": "frame", "name": null, "values": [ @@ -207,7 +207,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" ] } ] @@ -218,10 +218,10 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, - "contributes": false, + "contributes": true, "description": "exception stacktrace — in-app frames", - "hash": null, - "hint": "ignored because system exception takes precedence", + "hash": "31cfc54cd60b693b789568c5ec9278e2", + "hint": null, "key": "app_exception_stacktrace", "type": "component" }, @@ -292,7 +292,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "GameBootstrap.Start()" + "Start" ] } ] @@ -325,7 +325,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" ] } ] @@ -358,7 +358,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" ] } ] @@ -393,7 +393,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "EnemySpawner+d__4.MoveNext()" + "MoveNext" ] } ] @@ -428,7 +428,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "id": "function", "name": null, "values": [ - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" ] } ] @@ -441,7 +441,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info }, "contributes": true, "description": "exception stacktrace — all frames", - "hash": "872f67574fe082419e092229105d22ca", + "hash": "633f98691c6d46f1b91a753cfbb90cc0", "hint": null, "key": "system_exception_stacktrace", "type": "component" diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_ios.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_ios.pysnap index a4f4e902b3b3..6e36986d1f18 100644 --- a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_ios.pysnap +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_ios.pysnap @@ -105,6 +105,39 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, + { + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "main.mm" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" + ] + } + ] + }, { "contributes": false, "hint": "non app frame", @@ -497,7 +530,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info }, "contributes": true, "description": "exception stacktrace — in-app frames", - "hash": "8bbdecb4ad2f92d58133a93ee009a07b", + "hash": "8760559d1e6a17097dca358c8389b245", "hint": null, "key": "app_exception_stacktrace", "type": "component" @@ -603,6 +636,39 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "main.mm" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" + ] + } + ] + }, { "contributes": false, "hint": "ignored by built-in stacktrace rule (category:indirection -group)", @@ -995,7 +1061,7 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info }, "contributes": true, "description": "exception stacktrace — all frames", - "hash": "bae55c8a9132232871adf6b662a2d6da", + "hash": "c5c6df56950274d88cb9f400ee61b8b0", "hint": null, "key": "system_exception_stacktrace", "type": "component" diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_linux.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_linux.pysnap new file mode 100644 index 000000000000..e64f06bc987d --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_linux.pysnap @@ -0,0 +1,814 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2026-01-20", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": false, + "hint": "ignored because system exception takes precedence", + "id": "app", + "name": "in-app", + "values": [ + { + "contributes": false, + "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": true, + "hint": null, + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": false, + "hint": "ignored because it contains no in-app frames", + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "main" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry__handle_signal" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": false, + "description": "exception stacktrace — in-app frames", + "hash": null, + "hint": "ignored because system exception takes precedence", + "key": "app_exception_stacktrace", + "type": "component" + }, + "system_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "system", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "main" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry__handle_signal" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "cd7247c52d95df0f046b9e8d86ca231f", + "hint": null, + "key": "system_exception_stacktrace", + "type": "component" + } + } +} diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_macos.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_macos.pysnap index 0d67bd2a426f..3f35c617d08a 100644 --- a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_macos.pysnap +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_macos.pysnap @@ -6,14 +6,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info "variants": { "app_exception_stacktrace": { "component": { - "contributes": false, - "hint": "ignored because system exception takes precedence", + "contributes": true, + "hint": null, "id": "app", "name": "in-app", "values": [ { - "contributes": false, - "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "contributes": true, + "hint": null, "id": "exception", "name": "exception", "values": [ @@ -27,8 +27,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because stacktrace takes precedence", "id": "value", "name": null, "values": [ @@ -36,14 +36,14 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "ignored because it contains no in-app frames", + "contributes": true, + "hint": null, "id": "stacktrace", "name": "stacktrace", "values": [ { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -73,8 +73,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -104,8 +104,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -135,8 +135,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -166,8 +166,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -199,8 +199,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -232,8 +232,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -265,8 +265,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -298,8 +298,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -331,8 +331,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -364,8 +364,8 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info ] }, { - "contributes": false, - "hint": "non app frame", + "contributes": true, + "hint": "marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)", "id": "frame", "name": null, "values": [ @@ -431,23 +431,23 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, - "contributes": false, + "contributes": true, "description": "exception stacktrace — in-app frames", - "hash": null, - "hint": "ignored because system exception takes precedence", + "hash": "cd7247c52d95df0f046b9e8d86ca231f", + "hint": null, "key": "app_exception_stacktrace", "type": "component" }, "system_exception_stacktrace": { "component": { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because app exception takes precedence", "id": "system", "name": null, "values": [ { - "contributes": true, - "hint": null, + "contributes": false, + "hint": "ignored because hash matches app variant", "id": "exception", "name": "exception", "values": [ @@ -865,10 +865,10 @@ source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info } ] }, - "contributes": true, + "contributes": false, "description": "exception stacktrace — all frames", - "hash": "cd7247c52d95df0f046b9e8d86ca231f", - "hint": null, + "hash": null, + "hint": "ignored because app exception takes precedence", "key": "system_exception_stacktrace", "type": "component" } diff --git a/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_windows.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_windows.pysnap new file mode 100644 index 000000000000..bb16a6b92744 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_windows.pysnap @@ -0,0 +1,814 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2026-01-20", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": false, + "hint": "ignored because system exception takes precedence", + "id": "app", + "name": "in-app", + "values": [ + { + "contributes": false, + "hint": "ignored because this variant does not have a contributing stacktrace, but the system variant does", + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": true, + "hint": null, + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": false, + "hint": "ignored because it contains no in-app frames", + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "wWinMain" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry_handle_exception" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": false, + "description": "exception stacktrace — in-app frames", + "hash": null, + "hint": "ignored because system exception takes precedence", + "key": "app_exception_stacktrace", + "type": "component" + }, + "system_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "system", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "EXC_BAD_ACCESS" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Attempted to dereference null pointer." + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": false, + "hint": "ignored by built-in stacktrace rule (category:threadbase -group v-group)", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "wWinMain" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityMain" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "sentry_handle_exception" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "44001547ce86280f99f76128242968f2", + "hint": null, + "key": "system_exception_stacktrace", + "type": "component" + } + } +} diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap index 0d00f9b8035d..5ca44ddec38f 100644 --- a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap @@ -2,51 +2,51 @@ source: tests/sentry/grouping/test_variants.py::test_variants --- app: - hash: null - contributing component: null - hint: ignored because system exception takes precedence + hash: "c0dd63bbc946a04d1c23e3de5b704cb0" + contributing component: exception + hint: None root_component: - app (ignored because system exception takes precedence) - exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) - stacktrace (ignored because it contains no in-app frames) - frame (non app frame) + app* + exception* + stacktrace* + frame* (marked in-app by the client) module* "GameBootstrap" filename (ignored because module takes precedence) "gamebootstrap.cs" function* - "GameBootstrap.Start()" - frame (non app frame) + "Start" + frame (marked out of app by the client) module* "UnityEngine.MonoBehaviour" function* - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" - frame (non app frame) + "StartCoroutine" + frame (marked out of app by the client) module* "UnityEngine.SetupCoroutine" function* - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" - frame (non app frame) + "InvokeMoveNext" + frame* (marked in-app by the client) module* "EnemySpawner+d__4" filename (ignored because module takes precedence) "enemyspawner.cs" function* - "EnemySpawner+d__4.MoveNext()" - frame (non app frame) + "MoveNext" + frame* (marked in-app by the client) module* "CombatSystem" filename (ignored because module takes precedence) "combatsystem.cs" function* - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" type* "System.NullReferenceException" - value* + value (ignored because stacktrace takes precedence) "Object reference not set to an instance of an object" -------------------------------------------------------------------------- system: - hash: "f36868ba2e7766bad6639173f423f075" + hash: "c717cb04db34bd54f07fcea7897bff32" contributing component: exception hint: None root_component: @@ -59,31 +59,31 @@ system: filename (ignored because module takes precedence) "gamebootstrap.cs" function* - "GameBootstrap.Start()" + "Start" frame* module* "UnityEngine.MonoBehaviour" function* - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" frame* module* "UnityEngine.SetupCoroutine" function* - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" frame* module* "EnemySpawner+d__4" filename (ignored because module takes precedence) "enemyspawner.cs" function* - "EnemySpawner+d__4.MoveNext()" + "MoveNext" frame* module* "CombatSystem" filename (ignored because module takes precedence) "combatsystem.cs" function* - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" type* "System.NullReferenceException" value (ignored because stacktrace takes precedence) diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap index b86741ebeeec..e0d02ee73842 100644 --- a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap @@ -2,7 +2,7 @@ source: tests/sentry/grouping/test_variants.py::test_variants --- app: - hash: "7eb77a6781dde25799f955a0b9f1aa77" + hash: "b1bcdf7355443041394a45279217c6c1" contributing component: exception hint: None root_component: @@ -17,6 +17,11 @@ app: "main.mm" function* "main" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame (non app frame) function* "UIApplicationMain" @@ -71,7 +76,7 @@ app: "Attempted to dereference null pointer." -------------------------------------------------------------------------- system: - hash: "ebc0b0fd747d0339916308cc175666f7" + hash: "458a27b32da3cf5c5043160391caa919" contributing component: exception hint: None root_component: @@ -86,6 +91,11 @@ system: "main.mm" function* "main" + frame* + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame (ignored by built-in stacktrace rule (category:indirection -group)) function* "UIApplicationMain" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap new file mode 100644 index 000000000000..e7873cf34e0c --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_linux.pysnap @@ -0,0 +1,118 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: null + contributing component: null + hint: ignored because system exception takes precedence + root_component: + app (ignored because system exception takes precedence) + exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) + stacktrace (ignored because it contains no in-app frames) + frame (non app frame) + function* + "main" + frame (non app frame) + function* + "UnityMain" + frame (non app frame) + function* + "PlayerLoop" + frame (non app frame) + function* + "ScriptingInvocation::Invoke" + frame (non app frame) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame (non app frame) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame (non app frame) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame (non app frame) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame (non app frame) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame (non app frame) + function* + "sentry__handle_signal" + type* + "EXC_BAD_ACCESS" + value* + "Attempted to dereference null pointer." +-------------------------------------------------------------------------- +system: + hash: "0c557c696bf6942ff7b2fd5847a0418a" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + function* + "main" + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry__handle_signal" + type* + "EXC_BAD_ACCESS" + value (ignored because stacktrace takes precedence) + "Attempted to dereference null pointer." diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap index a0bde773270d..95e871e4fb18 100644 --- a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap @@ -2,56 +2,56 @@ source: tests/sentry/grouping/test_variants.py::test_variants --- app: - hash: null - contributing component: null - hint: ignored because system exception takes precedence + hash: "0c557c696bf6942ff7b2fd5847a0418a" + contributing component: exception + hint: None root_component: - app (ignored because system exception takes precedence) - exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) - stacktrace (ignored because it contains no in-app frames) - frame (non app frame) + app* + exception* + stacktrace* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "main" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "UnityMain" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "PlayerLoop" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "ScriptingInvocation::Invoke" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppinvokertable.cpp" function* "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "enemyspawner.cs" function* "EnemySpawner_Update" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "combatsystem.cs" function* "CombatSystem_ApplyDamage" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "tmp_text.cs" function* "TMP_Text_SetText" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "animation.bindings.cs" function* "Animation_Play" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppcodegen.cpp" function* "il2cpp_codegen_raise_null_reference_exception" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "sentry__handle_signal" frame (marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)) @@ -59,16 +59,16 @@ app: "+[SentrySDK captureCrashEvent:]" type* "EXC_BAD_ACCESS" - value* + value (ignored because stacktrace takes precedence) "Attempted to dereference null pointer." -------------------------------------------------------------------------- system: - hash: "0c557c696bf6942ff7b2fd5847a0418a" - contributing component: exception - hint: None + hash: null + contributing component: null + hint: ignored because app exception takes precedence root_component: - system* - exception* + system (ignored because app exception takes precedence) + exception (ignored because hash matches app variant) stacktrace* frame* function* diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap new file mode 100644 index 000000000000..4742ba36013f --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_windows.pysnap @@ -0,0 +1,118 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: null + contributing component: null + hint: ignored because system exception takes precedence + root_component: + app (ignored because system exception takes precedence) + exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) + stacktrace (ignored because it contains no in-app frames) + frame (non app frame) + function* + "wWinMain" + frame (non app frame) + function* + "UnityMain" + frame (non app frame) + function* + "PlayerLoop" + frame (non app frame) + function* + "ScriptingInvocation::Invoke" + frame (non app frame) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame (non app frame) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame (non app frame) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame (non app frame) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame (non app frame) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame (non app frame) + function* + "sentry_handle_exception" + type* + "EXC_BAD_ACCESS" + value* + "Attempted to dereference null pointer." +-------------------------------------------------------------------------- +system: + hash: "fe94d4bd710d5e83bff9a6f1e8be22c2" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame (ignored by built-in stacktrace rule (category:threadbase -group v-group)) + function* + "wWinMain" + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry_handle_exception" + type* + "EXC_BAD_ACCESS" + value (ignored because stacktrace takes precedence) + "Attempted to dereference null pointer." diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap index 4c7eaaa2b933..cdcc8e099460 100644 --- a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap @@ -2,51 +2,51 @@ source: tests/sentry/grouping/test_variants.py::test_variants --- app: - hash: null - contributing component: null - hint: ignored because system exception takes precedence + hash: "31cfc54cd60b693b789568c5ec9278e2" + contributing component: exception + hint: None root_component: - app (ignored because system exception takes precedence) - exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) + app* + exception* type* "System.NullReferenceException" - value* + value (ignored because stacktrace takes precedence) "Object reference not set to an instance of an object" - stacktrace (ignored because it contains no in-app frames) - frame (non app frame) + stacktrace* + frame* (marked in-app by the client) module* "GameBootstrap" filename (ignored because module takes precedence) "gamebootstrap.cs" function* - "GameBootstrap.Start()" - frame (non app frame) + "Start" + frame (marked out of app by the client) module* "UnityEngine.MonoBehaviour" function* - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" - frame (non app frame) + "StartCoroutine" + frame (marked out of app by the client) module* "UnityEngine.SetupCoroutine" function* - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" - frame (non app frame) + "InvokeMoveNext" + frame* (marked in-app by the client) module* "EnemySpawner+d__4" filename (ignored because module takes precedence) "enemyspawner.cs" function* - "EnemySpawner+d__4.MoveNext()" - frame (non app frame) + "MoveNext" + frame* (marked in-app by the client) module* "CombatSystem" filename (ignored because module takes precedence) "combatsystem.cs" function* - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" -------------------------------------------------------------------------- system: - hash: "872f67574fe082419e092229105d22ca" + hash: "633f98691c6d46f1b91a753cfbb90cc0" contributing component: exception hint: None root_component: @@ -63,28 +63,28 @@ system: filename (ignored because module takes precedence) "gamebootstrap.cs" function* - "GameBootstrap.Start()" + "Start" frame* module* "UnityEngine.MonoBehaviour" function* - "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + "StartCoroutine" frame* module* "UnityEngine.SetupCoroutine" function* - "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + "InvokeMoveNext" frame* module* "EnemySpawner+d__4" filename (ignored because module takes precedence) "enemyspawner.cs" function* - "EnemySpawner+d__4.MoveNext()" + "MoveNext" frame* module* "CombatSystem" filename (ignored because module takes precedence) "combatsystem.cs" function* - "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + "ApplyDamage" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap index 3924068858a7..27f4dbd37dc2 100644 --- a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap @@ -2,7 +2,7 @@ source: tests/sentry/grouping/test_variants.py::test_variants --- app: - hash: "8bbdecb4ad2f92d58133a93ee009a07b" + hash: "8760559d1e6a17097dca358c8389b245" contributing component: exception hint: None root_component: @@ -21,6 +21,11 @@ app: "main.mm" function* "main" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame (non app frame) function* "UIApplicationMain" @@ -71,7 +76,7 @@ app: "__pthread_kill" -------------------------------------------------------------------------- system: - hash: "bae55c8a9132232871adf6b662a2d6da" + hash: "c5c6df56950274d88cb9f400ee61b8b0" contributing component: exception hint: None root_component: @@ -90,6 +95,11 @@ system: "main.mm" function* "main" + frame* + filename* + "main.mm" + function* + "-[UnityFramework runUIApplicationMainWithArgc:argv:]" frame (ignored by built-in stacktrace rule (category:indirection -group)) function* "UIApplicationMain" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap new file mode 100644 index 000000000000..9c6640d770b1 --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_linux.pysnap @@ -0,0 +1,118 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: null + contributing component: null + hint: ignored because system exception takes precedence + root_component: + app (ignored because system exception takes precedence) + exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) + type* + "EXC_BAD_ACCESS" + value* + "Attempted to dereference null pointer." + stacktrace (ignored because it contains no in-app frames) + frame (non app frame) + function* + "main" + frame (non app frame) + function* + "UnityMain" + frame (non app frame) + function* + "PlayerLoop" + frame (non app frame) + function* + "ScriptingInvocation::Invoke" + frame (non app frame) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame (non app frame) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame (non app frame) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame (non app frame) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame (non app frame) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame (non app frame) + function* + "sentry__handle_signal" +-------------------------------------------------------------------------- +system: + hash: "cd7247c52d95df0f046b9e8d86ca231f" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "EXC_BAD_ACCESS" + value (ignored because stacktrace takes precedence) + "Attempted to dereference null pointer." + stacktrace* + frame* + function* + "main" + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry__handle_signal" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap index b76f1b13cfba..9770a121bec5 100644 --- a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap @@ -2,60 +2,60 @@ source: tests/sentry/grouping/test_variants.py::test_variants --- app: - hash: null - contributing component: null - hint: ignored because system exception takes precedence + hash: "cd7247c52d95df0f046b9e8d86ca231f" + contributing component: exception + hint: None root_component: - app (ignored because system exception takes precedence) - exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) + app* + exception* type* "EXC_BAD_ACCESS" - value* + value (ignored because stacktrace takes precedence) "Attempted to dereference null pointer." - stacktrace (ignored because it contains no in-app frames) - frame (non app frame) + stacktrace* + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "main" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "UnityMain" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "PlayerLoop" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "ScriptingInvocation::Invoke" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppinvokertable.cpp" function* "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "enemyspawner.cs" function* "EnemySpawner_Update" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "combatsystem.cs" function* "CombatSystem_ApplyDamage" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "tmp_text.cs" function* "TMP_Text_SetText" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "animation.bindings.cs" function* "Animation_Play" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) filename* "il2cppcodegen.cpp" function* "il2cpp_codegen_raise_null_reference_exception" - frame (non app frame) + frame* (marked in-app by built-in stacktrace rule (family:native package:/Users/** +app)) function* "sentry__handle_signal" frame (marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)) @@ -63,12 +63,12 @@ app: "+[SentrySDK captureCrashEvent:]" -------------------------------------------------------------------------- system: - hash: "cd7247c52d95df0f046b9e8d86ca231f" - contributing component: exception - hint: None + hash: null + contributing component: null + hint: ignored because app exception takes precedence root_component: - system* - exception* + system (ignored because app exception takes precedence) + exception (ignored because hash matches app variant) type* "EXC_BAD_ACCESS" value (ignored because stacktrace takes precedence) diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap new file mode 100644 index 000000000000..48bc20d802a6 --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_windows.pysnap @@ -0,0 +1,118 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: null + contributing component: null + hint: ignored because system exception takes precedence + root_component: + app (ignored because system exception takes precedence) + exception (ignored because this variant does not have a contributing stacktrace, but the system variant does) + type* + "EXC_BAD_ACCESS" + value* + "Attempted to dereference null pointer." + stacktrace (ignored because it contains no in-app frames) + frame (non app frame) + function* + "wWinMain" + frame (non app frame) + function* + "UnityMain" + frame (non app frame) + function* + "PlayerLoop" + frame (non app frame) + function* + "ScriptingInvocation::Invoke" + frame (non app frame) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame (non app frame) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame (non app frame) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame (non app frame) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame (non app frame) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame (non app frame) + function* + "sentry_handle_exception" +-------------------------------------------------------------------------- +system: + hash: "44001547ce86280f99f76128242968f2" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "EXC_BAD_ACCESS" + value (ignored because stacktrace takes precedence) + "Attempted to dereference null pointer." + stacktrace* + frame (ignored by built-in stacktrace rule (category:threadbase -group v-group)) + function* + "wWinMain" + frame* + function* + "UnityMain" + frame* + function* + "PlayerLoop" + frame* + function* + "ScriptingInvocation::Invoke" + frame* + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame* + function* + "sentry_handle_exception"