From 4a5df2c8394c06593b904213e73f8d057c2a6f16 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 16 Sep 2026 11:47:42 -0700 Subject: [PATCH 1/2] add grouping inputs --- .../unity_coroutine_dispatch.json | 43 ++++++++++ .../grouping_inputs/unity_il2cpp_android.json | 69 ++++++++++++++++ .../unity_il2cpp_edge_cases.json | 55 +++++++++++++ .../grouping_inputs/unity_il2cpp_ios.json | 78 +++++++++++++++++++ .../grouping_inputs/unity_il2cpp_macos.json | 69 ++++++++++++++++ 5 files changed, 314 insertions(+) create mode 100644 tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json create mode 100644 tests/sentry/grouping/grouping_inputs/unity_il2cpp_android.json create mode 100644 tests/sentry/grouping/grouping_inputs/unity_il2cpp_edge_cases.json create mode 100644 tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json create mode 100644 tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json diff --git a/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json b/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json new file mode 100644 index 000000000000..0f175fb5c365 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_coroutine_dispatch.json @@ -0,0 +1,43 @@ +{ + "platform": "csharp", + "exception": { + "values": [ + { + "type": "System.NullReferenceException", + "value": "Object reference not set to an instance of an object", + "stacktrace": { + "frames": [ + { + "function": "GameBootstrap.Start()", + "module": "GameBootstrap", + "package": "Assembly-CSharp", + "filename": "Assets/Scripts/GameBootstrap.cs" + }, + { + "function": "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)", + "module": "UnityEngine.MonoBehaviour", + "package": "UnityEngine.CoreModule" + }, + { + "function": "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)", + "module": "UnityEngine.SetupCoroutine", + "package": "UnityEngine.CoreModule" + }, + { + "function": "EnemySpawner+d__4.MoveNext()", + "module": "EnemySpawner+d__4", + "package": "Assembly-CSharp", + "filename": "Assets/Scripts/EnemySpawner.cs" + }, + { + "function": "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)", + "module": "CombatSystem", + "package": "Assembly-CSharp", + "filename": "Packages/com.mystudio.combat/Runtime/CombatSystem.cs" + } + ] + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_android.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_android.json new file mode 100644 index 000000000000..272f0fba3f2e --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_android.json @@ -0,0 +1,69 @@ +{ + "platform": "native", + "exception": { + "values": [ + { + "type": "EXC_BAD_ACCESS", + "value": "Attempted to dereference null pointer.", + "stacktrace": { + "frames": [ + { + "function": "__libc_init", + "package": "/apex/com.android.runtime/lib64/bionic/libc.so" + }, + { + "function": "android_main", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libgame.so" + }, + { + "function": "UnityPlayerLoop", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libunity.so" + }, + { + "function": "ScriptingInvocation::Invoke", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libunity.so" + }, + { + "function": "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libil2cpp.so", + "abs_path": "/Users/builder/Projects/SpaceGame/Library/Bee/artifacts/AndroidPlayerBuildProgram/il2cppOutput/cpp/Il2CppInvokerTable.cpp" + }, + { + "function": "EnemySpawner_Update_m9C8B7A6F5E4D3C2B1A09F8E7D6C5B4A398765432", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libil2cpp.so", + "abs_path": "/Users/builder/Projects/SpaceGame/Assets/Scripts/EnemySpawner.cs" + }, + { + "function": "CombatSystem_ApplyDamage_m2D5F8A1B4C7E0D3F6A9B2C5E8F1A4D7B0C3E6F9A", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libil2cpp.so", + "abs_path": "/Users/builder/Projects/SpaceGame/Packages/com.mystudio.combat/Runtime/CombatSystem.cs" + }, + { + "function": "TMP_Text_SetText_mE5F60718293A4B5C6D7E8F901234567890ABCDEF", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libil2cpp.so", + "abs_path": "/Users/builder/Projects/SpaceGame/Library/PackageCache/com.unity.textmeshpro@3.0.6/Assets/TMP_Text.cs" + }, + { + "function": "Animation_Play_m4C6D7E8F9A0B1C2D3E4F5061728394A5B6C7D8E9", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libil2cpp.so", + "abs_path": "/Users/bokken/build/output/unity/unity/Modules/Animation/ScriptBindings/Assets/Animation.bindings.cs" + }, + { + "function": "il2cpp_codegen_raise_null_reference_exception", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libil2cpp.so", + "abs_path": "/Users/builder/Projects/SpaceGame/Library/Bee/artifacts/AndroidPlayerBuildProgram/il2cppOutput/cpp/Il2CppCodeGen.cpp" + }, + { + "function": "sentry__handle_signal", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libsentry.so" + }, + { + "function": "sentry_android_capture_envelope", + "package": "/data/app/~~kR3n9QvPzXw==/com.mystudio.spacegame-8fJq2wLmTd==/lib/arm64/libsentry-android.so" + } + ] + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_edge_cases.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_edge_cases.json new file mode 100644 index 000000000000..43a41a4dcce0 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_edge_cases.json @@ -0,0 +1,55 @@ +{ + "platform": "native", + "exception": { + "values": [ + { + "type": "SIGABRT", + "value": "Abort", + "stacktrace": { + "frames": [ + { + "function": "unrelated_native_app_source_under_assets_dir", + "package": "/opt/othergame/bin/othergame", + "abs_path": "/src/othergame/Assets/textures.cpp", + "in_app": true + }, + { + "function": "unrelated_native_app_source_under_package_cache_dir", + "package": "/opt/othergame/lib/libother.so", + "abs_path": "/src/othergame/Library/PackageCache/vendor/bar.cpp", + "in_app": true + }, + { + "function": "developer_own_libgame_binary_not_unity_gameactivity_glue", + "package": "/data/app/~~zZ4mN8pQrS==/com.othercompany.app-qQ7vB2xYtK==/lib/arm64/libgame.so", + "in_app": true + }, + { + "function": "windows_il2cpp_project_source_with_backslash_paths", + "package": "D:\\build\\SpaceGame\\GameAssembly.dll", + "abs_path": "D:\\Projects\\SpaceGame\\Assets\\Scripts\\EnemySpawner.cs" + }, + { + "function": "linux_il2cpp_project_source", + "package": "/opt/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/SpaceGame/Assets/Scripts/EnemySpawner.cs" + }, + { + "function": "registry_package_source_under_runtime_dir_never_restored", + "package": "/opt/SpaceGame/GameAssembly.so", + "abs_path": "/home/builder/SpaceGame/Library/PackageCache/com.unity.inputsystem@1.7.0/InputSystem/Runtime/InputAction.cs" + }, + { + "function": "legacy_ios_engine_binary_unity_6000_0_and_older", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/libiPhone-lib.dylib" + }, + { + "function": "windows_sentry_native_sdk", + "package": "D:\\build\\SpaceGame\\sentry.dll" + } + ] + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json new file mode 100644 index 000000000000..c66c72623605 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_ios.json @@ -0,0 +1,78 @@ +{ + "platform": "cocoa", + "exception": { + "values": [ + { + "type": "EXC_BAD_ACCESS", + "value": "Attempted to dereference null pointer.", + "stacktrace": { + "frames": [ + { + "function": "start", + "package": "/usr/lib/dyld" + }, + { + "function": "main", + "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": "UIApplicationMain", + "package": "/System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore" + }, + { + "function": "-[UnityAppController repaint]", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework" + }, + { + "function": "PlayerLoop", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/Frameworks/UnityRuntime.framework/UnityRuntime" + }, + { + "function": "ScriptingInvocation::Invoke", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/Frameworks/UnityRuntime.framework/UnityRuntime" + }, + { + "function": "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/builder/Projects/SpaceGame/Library/Bee/artifacts/iOSPlayerBuildProgram/il2cppOutput/cpp/Il2CppInvokerTable.cpp" + }, + { + "function": "EnemySpawner_Update_m1A2B3C4D5E6F708192A3B4C5D6E7F80912345ABC", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/builder/Projects/SpaceGame/Assets/Scripts/EnemySpawner.cs" + }, + { + "function": "CombatSystem_ApplyDamage_mB4E7D2C9A16F03E58D4C7B2A19F60E3D5C8B7A41", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/builder/Projects/SpaceGame/Packages/com.mystudio.combat/Runtime/CombatSystem.cs" + }, + { + "function": "TMP_Text_SetText_mC3D4E5F60718293A4B5C6D7E8F90123456789ABC", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/builder/Projects/SpaceGame/Library/PackageCache/com.unity.textmeshpro@3.0.6/Assets/TMP_Text.cs" + }, + { + "function": "Animation_Play_m7F1A2B4C6D7E8F9A0B1C2D3E4F506172839405D3", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/bokken/build/output/unity/unity/Modules/Animation/ScriptBindings/Assets/Animation.bindings.cs" + }, + { + "function": "il2cpp_codegen_raise_null_reference_exception", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/UnityFramework.framework/UnityFramework", + "abs_path": "/Users/builder/Projects/SpaceGame/Library/Bee/artifacts/iOSPlayerBuildProgram/il2cppOutput/cpp/Il2CppCodeGen.cpp" + }, + { + "function": "-[SentryCrashInstallationReporter reportCrash]", + "package": "/private/var/containers/Bundle/Application/1E8D8F0C-6E2E-4E0B-9E0F-7C9D4A0B2F31/SpaceGame.app/Frameworks/SentryObjC.framework/SentryObjC" + }, + { + "function": "__pthread_kill", + "package": "/usr/lib/system/libsystem_kernel.dylib" + } + ] + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json new file mode 100644 index 000000000000..bd8b03bac1a3 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/unity_il2cpp_macos.json @@ -0,0 +1,69 @@ +{ + "platform": "native", + "exception": { + "values": [ + { + "type": "EXC_BAD_ACCESS", + "value": "Attempted to dereference null pointer.", + "stacktrace": { + "frames": [ + { + "function": "main", + "package": "/Applications/SpaceGame.app/Contents/MacOS/SpaceGame" + }, + { + "function": "UnityMain", + "package": "/Applications/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" + }, + { + "function": "PlayerLoop", + "package": "/Applications/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" + }, + { + "function": "ScriptingInvocation::Invoke", + "package": "/Applications/SpaceGame.app/Contents/Frameworks/UnityPlayer.dylib" + }, + { + "function": "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017", + "package": "/Applications/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", + "abs_path": "/Users/builder/Projects/SpaceGame/Assets/Scripts/EnemySpawner.cs" + }, + { + "function": "CombatSystem_ApplyDamage_m7486FA1E8A228E806BA045D26ABECC87DFD436B4", + "package": "/Applications/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", + "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", + "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", + "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" + }, + { + "function": "+[SentrySDK captureCrashEvent:]", + "package": "/Applications/SpaceGame.app/Contents/PlugIns/Sentry.dylib" + } + ] + } + } + ] + } +} From b167255fe6f7a603f0bfa56572f1ce72d34f5db0 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 16 Sep 2026 11:53:23 -0700 Subject: [PATCH 2/2] update snapshots --- .../unity_coroutine_dispatch.pysnap | 58 + .../unity_il2cpp_android.pysnap | 78 ++ .../unity_il2cpp_edge_cases.pysnap | 88 ++ .../unity_il2cpp_ios.pysnap | 134 +++ .../unity_il2cpp_macos.pysnap | 78 ++ .../unity_coroutine_dispatch.pysnap | 58 + .../unity_il2cpp_android.pysnap | 78 ++ .../unity_il2cpp_edge_cases.pysnap | 88 ++ .../unity_il2cpp_ios.pysnap | 134 +++ .../unity_il2cpp_macos.pysnap | 78 ++ .../unity_coroutine_dispatch.pysnap | 450 ++++++++ .../unity_il2cpp_android.pysnap | 876 ++++++++++++++ .../unity_il2cpp_edge_cases.pysnap | 624 ++++++++++ .../unity_il2cpp_ios.pysnap | 1004 +++++++++++++++++ .../unity_il2cpp_macos.pysnap | 876 ++++++++++++++ .../unity_coroutine_dispatch.pysnap | 450 ++++++++ .../unity_il2cpp_android.pysnap | 876 ++++++++++++++ .../unity_il2cpp_edge_cases.pysnap | 624 ++++++++++ .../unity_il2cpp_ios.pysnap | 1004 +++++++++++++++++ .../unity_il2cpp_macos.pysnap | 876 ++++++++++++++ .../unity_coroutine_dispatch.pysnap | 90 ++ .../unity_il2cpp_android.pysnap | 124 ++ .../unity_il2cpp_edge_cases.pysnap | 96 ++ .../unity_il2cpp_ios.pysnap | 140 +++ .../unity_il2cpp_macos.pysnap | 124 ++ .../unity_coroutine_dispatch.pysnap | 90 ++ .../unity_il2cpp_android.pysnap | 124 ++ .../unity_il2cpp_edge_cases.pysnap | 96 ++ .../unity_il2cpp_ios.pysnap | 140 +++ .../unity_il2cpp_macos.pysnap | 124 ++ 30 files changed, 9680 insertions(+) create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_android.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_ios.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_macos.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_android.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_ios.pysnap create mode 100644 tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_macos.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap create mode 100644 tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_macos.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 new file mode 100644 index 000000000000..1fe0166fb97f --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap @@ -0,0 +1,58 @@ +--- +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: "f36868ba2e7766bad6639173f423f075" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + module* + "GameBootstrap" + function* + "GameBootstrap.Start()" + frame* + module* + "UnityEngine.MonoBehaviour" + function* + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + frame* + module* + "UnityEngine.SetupCoroutine" + function* + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + frame* + module* + "EnemySpawner+d__4" + function* + "EnemySpawner+d__4.MoveNext()" + frame* + module* + "CombatSystem" + function* + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + type* + "System.NullReferenceException" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap new file mode 100644 index 000000000000..d1061b378cb5 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_android.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: "d7d07d1374dbfe9aab4cac5b2be8c38c" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + function* + "android_main" + frame* + function* + "UnityPlayerLoop" + 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" + frame* + function* + "sentry_android_capture_envelope" + type* + "EXC_BAD_ACCESS" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap new file mode 100644 index 000000000000..6511aa433f70 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap @@ -0,0 +1,88 @@ +--- +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": "in_app" +} +--- +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": "in_app" + } +} +--- +contributing variants: + app* + hash: "87487f53aed91db01c2f782511559c58" + contributing component: exception + hint: None + root_component: + app* + exception* + stacktrace* + frame* (marked in-app by the client) + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame* (marked in-app by the client) + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + type* + "SIGABRT" + system* + hash: "75ba4858d44123832a64fcaa643df81b" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame* + filename* + "bar.cpp" + function* + "unrelated_native_app_source_under_package_cache_dir" + frame* + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame* + filename* + "enemyspawner.cs" + function* + "windows_il2cpp_project_source_with_backslash_paths" + frame* + filename* + "enemyspawner.cs" + function* + "linux_il2cpp_project_source" + frame* + filename* + "inputaction.cs" + function* + "registry_package_source_under_runtime_dir_never_restored" + frame* + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + frame* + function* + "windows_sentry_native_sdk" + type* + "SIGABRT" 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 new file mode 100644 index 000000000000..c9f1c758e74a --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap @@ -0,0 +1,134 @@ +--- +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": "in_app" +} +--- +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": "in_app" + } +} +--- +contributing variants: + app* + hash: "7eb77a6781dde25799f955a0b9f1aa77" + contributing component: exception + hint: None + root_component: + app* + exception* + stacktrace* + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "main" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "-[UnityAppController repaint]" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "PlayerLoop" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "ScriptingInvocation::Invoke" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + type* + "EXC_BAD_ACCESS" + system* + hash: "ebc0b0fd747d0339916308cc175666f7" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + function* + "start" + frame* + filename* + "main.mm" + function* + "main" + frame* + function* + "-[UnityAppController repaint]" + 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" + 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 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_macos.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@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 new file mode 100644 index 000000000000..b7293e9bcb72 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap @@ -0,0 +1,58 @@ +--- +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: "872f67574fe082419e092229105d22ca" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "System.NullReferenceException" + stacktrace* + frame* + module* + "GameBootstrap" + function* + "GameBootstrap.Start()" + frame* + module* + "UnityEngine.MonoBehaviour" + function* + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + frame* + module* + "UnityEngine.SetupCoroutine" + function* + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + frame* + module* + "EnemySpawner+d__4" + function* + "EnemySpawner+d__4.MoveNext()" + frame* + module* + "CombatSystem" + function* + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap new file mode 100644 index 000000000000..6ea235828591 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_android.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: "04d641eb30b794030ed5b0d7d779eb05" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "EXC_BAD_ACCESS" + stacktrace* + frame* + function* + "android_main" + frame* + function* + "UnityPlayerLoop" + 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" + frame* + function* + "sentry_android_capture_envelope" diff --git a/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap new file mode 100644 index 000000000000..f661ce28b08e --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap @@ -0,0 +1,88 @@ +--- +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": "in_app" +} +--- +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": "in_app" + } +} +--- +contributing variants: + app* + hash: "539935023e2db3e104789c1c69ca2cf5" + contributing component: exception + hint: None + root_component: + app* + exception* + type* + "SIGABRT" + stacktrace* + frame* (marked in-app by the client) + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame* (marked in-app by the client) + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + system* + hash: "7429f5a97df8b817f3b36cab1970f9ea" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "SIGABRT" + stacktrace* + frame* + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame* + filename* + "bar.cpp" + function* + "unrelated_native_app_source_under_package_cache_dir" + frame* + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame* + filename* + "enemyspawner.cs" + function* + "windows_il2cpp_project_source_with_backslash_paths" + frame* + filename* + "enemyspawner.cs" + function* + "linux_il2cpp_project_source" + frame* + filename* + "inputaction.cs" + function* + "registry_package_source_under_runtime_dir_never_restored" + frame* + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + frame* + function* + "windows_sentry_native_sdk" 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 new file mode 100644 index 000000000000..3448197861b2 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouphash_metadata/test_metadata_from_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap @@ -0,0 +1,134 @@ +--- +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": "in_app" +} +--- +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": "in_app" + } +} +--- +contributing variants: + app* + hash: "8bbdecb4ad2f92d58133a93ee009a07b" + contributing component: exception + hint: None + root_component: + app* + exception* + type* + "EXC_BAD_ACCESS" + stacktrace* + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "main" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "-[UnityAppController repaint]" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "PlayerLoop" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "ScriptingInvocation::Invoke" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + system* + hash: "bae55c8a9132232871adf6b662a2d6da" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "EXC_BAD_ACCESS" + stacktrace* + frame* + function* + "start" + frame* + filename* + "main.mm" + function* + "main" + frame* + function* + "-[UnityAppController repaint]" + 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" 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 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_macos.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/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 new file mode 100644 index 000000000000..4817f3282ea6 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap @@ -0,0 +1,450 @@ +--- +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": [ + "System.NullReferenceException" + ] + }, + { + "contributes": true, + "hint": null, + "id": "value", + "name": null, + "values": [ + "Object reference not set to an instance of an object" + ] + }, + { + "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": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "GameBootstrap" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "gamebootstrap.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "GameBootstrap.Start()" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "EnemySpawner+d__4" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner+d__4.MoveNext()" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "CombatSystem" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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": [ + "System.NullReferenceException" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Object reference not set to an instance of an object" + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "GameBootstrap" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "gamebootstrap.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "GameBootstrap.Start()" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "EnemySpawner+d__4" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner+d__4.MoveNext()" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "CombatSystem" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "f36868ba2e7766bad6639173f423f075", + "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_android.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_android.pysnap new file mode 100644 index 000000000000..a8df6fc6200d --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_android.pysnap @@ -0,0 +1,876 @@ +--- +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": [ + "__libc_init" + ] + } + ] + }, + { + "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": [ + "android_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": [ + "UnityPlayerLoop" + ] + } + ] + }, + { + "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, + "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_android_capture_envelope" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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:internals -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": [ + "__libc_init" + ] + } + ] + }, + { + "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": [ + "android_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": [ + "UnityPlayerLoop" + ] + } + ] + }, + { + "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, + "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_android_capture_envelope" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "d7d07d1374dbfe9aab4cac5b2be8c38c", + "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_edge_cases.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap new file mode 100644 index 000000000000..16e465e1e96b --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap @@ -0,0 +1,624 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2023-01-11", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "app", + "name": "in-app", + "values": [ + { + "contributes": true, + "hint": null, + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "SIGABRT" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Abort" + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": true, + "hint": "marked in-app by the client", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "textures.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_assets_dir" + ] + } + ] + }, + { + "contributes": false, + "hint": "marked out of app by built-in stacktrace rule (path:**/vendor/** -app)", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "bar.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_package_cache_dir" + ] + } + ] + }, + { + "contributes": true, + "hint": "marked in-app by the client", + "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": [ + "developer_own_libgame_binary_not_unity_gameactivity_glue" + ] + } + ] + }, + { + "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": [ + "windows_il2cpp_project_source_with_backslash_paths" + ] + } + ] + }, + { + "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": [ + "linux_il2cpp_project_source" + ] + } + ] + }, + { + "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": [ + "inputaction.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "registry_package_source_under_runtime_dir_never_restored" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "legacy_ios_engine_binary_unity_6000_0_and_older" + ] + } + ] + }, + { + "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": [ + "windows_sentry_native_sdk" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — in-app frames", + "hash": "87487f53aed91db01c2f782511559c58", + "hint": null, + "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": [ + "SIGABRT" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Abort" + ] + }, + { + "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": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "textures.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_assets_dir" + ] + } + ] + }, + { + "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": [ + "bar.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_package_cache_dir" + ] + } + ] + }, + { + "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": [ + "developer_own_libgame_binary_not_unity_gameactivity_glue" + ] + } + ] + }, + { + "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": [ + "windows_il2cpp_project_source_with_backslash_paths" + ] + } + ] + }, + { + "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": [ + "linux_il2cpp_project_source" + ] + } + ] + }, + { + "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": [ + "inputaction.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "registry_package_source_under_runtime_dir_never_restored" + ] + } + ] + }, + { + "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": [ + "legacy_ios_engine_binary_unity_6000_0_and_older" + ] + } + ] + }, + { + "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": [ + "windows_sentry_native_sdk" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "75ba4858d44123832a64fcaa643df81b", + "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 new file mode 100644 index 000000000000..649de659e65d --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_ios.pysnap @@ -0,0 +1,1004 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2023-01-11", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "app", + "name": "in-app", + "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": "marked out of app by built-in stacktrace rule (category:system -app)", + "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": [ + "start" + ] + } + ] + }, + { + "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": [ + "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": [ + "UIApplicationMain" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "-[UnityAppController repaint]" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "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": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "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": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "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": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "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": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "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": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "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": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": false, + "hint": "marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)", + "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": [ + "-[SentryCrashInstallationReporter reportCrash]" + ] + } + ] + }, + { + "contributes": false, + "hint": "marked out of app by built-in stacktrace rule (family:native package:/usr/lib/** -app)", + "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": [ + "__pthread_kill" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — in-app frames", + "hash": "7eb77a6781dde25799f955a0b9f1aa77", + "hint": null, + "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": [ + "start" + ] + } + ] + }, + { + "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": [ + "main" + ] + } + ] + }, + { + "contributes": false, + "hint": "ignored by built-in stacktrace rule (category:indirection -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": [ + "UIApplicationMain" + ] + } + ] + }, + { + "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": [ + "-[UnityAppController repaint]" + ] + } + ] + }, + { + "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": false, + "hint": "ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -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": [ + "-[SentryCrashInstallationReporter reportCrash]" + ] + } + ] + }, + { + "contributes": false, + "hint": "ignored by built-in stacktrace rule (category:internals -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": [ + "__pthread_kill" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "ebc0b0fd747d0339916308cc175666f7", + "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 new file mode 100644 index 000000000000..0aef478fcb87 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2023_01_11/unity_il2cpp_macos.pysnap @@ -0,0 +1,876 @@ +--- +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, + "hint": "marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)", + "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": [ + "+[SentrySDK captureCrashEvent:]" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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": false, + "hint": "ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -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": [ + "+[SentrySDK captureCrashEvent:]" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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@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 new file mode 100644 index 000000000000..bafe2c575404 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap @@ -0,0 +1,450 @@ +--- +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": [ + "System.NullReferenceException" + ] + }, + { + "contributes": true, + "hint": null, + "id": "value", + "name": null, + "values": [ + "Object reference not set to an instance of an object" + ] + }, + { + "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": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "GameBootstrap" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "gamebootstrap.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "GameBootstrap.Start()" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "EnemySpawner+d__4" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner+d__4.MoveNext()" + ] + } + ] + }, + { + "contributes": false, + "hint": "non app frame", + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "CombatSystem" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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": [ + "System.NullReferenceException" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Object reference not set to an instance of an object" + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "GameBootstrap" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "gamebootstrap.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "GameBootstrap.Start()" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine" + ] + }, + { + "contributes": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "EnemySpawner+d__4" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner+d__4.MoveNext()" + ] + } + ] + }, + { + "contributes": true, + "hint": null, + "id": "frame", + "name": null, + "values": [ + { + "contributes": true, + "hint": null, + "id": "module", + "name": null, + "values": [ + "CombatSystem" + ] + }, + { + "contributes": false, + "hint": "ignored because module takes precedence", + "id": "filename", + "name": null, + "values": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "872f67574fe082419e092229105d22ca", + "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_android.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_android.pysnap new file mode 100644 index 000000000000..11a8abe8d3a2 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_android.pysnap @@ -0,0 +1,876 @@ +--- +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": "marked out of app by built-in stacktrace rule (category:internals -app)", + "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": [ + "__libc_init" + ] + } + ] + }, + { + "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": [ + "android_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": [ + "UnityPlayerLoop" + ] + } + ] + }, + { + "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, + "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_android_capture_envelope" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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:internals -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": [ + "__libc_init" + ] + } + ] + }, + { + "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": [ + "android_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": [ + "UnityPlayerLoop" + ] + } + ] + }, + { + "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, + "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_android_capture_envelope" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "04d641eb30b794030ed5b0d7d779eb05", + "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_edge_cases.pysnap b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap new file mode 100644 index 000000000000..eeeac8fa314f --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap @@ -0,0 +1,624 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2026-01-20", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "app", + "name": "in-app", + "values": [ + { + "contributes": true, + "hint": null, + "id": "exception", + "name": "exception", + "values": [ + { + "contributes": true, + "hint": null, + "id": "type", + "name": null, + "values": [ + "SIGABRT" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Abort" + ] + }, + { + "contributes": true, + "hint": null, + "id": "stacktrace", + "name": "stacktrace", + "values": [ + { + "contributes": true, + "hint": "marked in-app by the client", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "textures.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_assets_dir" + ] + } + ] + }, + { + "contributes": false, + "hint": "marked out of app by built-in stacktrace rule (path:**/vendor/** -app)", + "id": "frame", + "name": null, + "values": [ + { + "contributes": false, + "hint": null, + "id": "module", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "bar.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_package_cache_dir" + ] + } + ] + }, + { + "contributes": true, + "hint": "marked in-app by the client", + "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": [ + "developer_own_libgame_binary_not_unity_gameactivity_glue" + ] + } + ] + }, + { + "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": [ + "windows_il2cpp_project_source_with_backslash_paths" + ] + } + ] + }, + { + "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": [ + "linux_il2cpp_project_source" + ] + } + ] + }, + { + "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": [ + "inputaction.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "registry_package_source_under_runtime_dir_never_restored" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "legacy_ios_engine_binary_unity_6000_0_and_older" + ] + } + ] + }, + { + "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": [ + "windows_sentry_native_sdk" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — in-app frames", + "hash": "539935023e2db3e104789c1c69ca2cf5", + "hint": null, + "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": [ + "SIGABRT" + ] + }, + { + "contributes": false, + "hint": "ignored because stacktrace takes precedence", + "id": "value", + "name": null, + "values": [ + "Abort" + ] + }, + { + "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": true, + "hint": null, + "id": "filename", + "name": null, + "values": [ + "textures.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_assets_dir" + ] + } + ] + }, + { + "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": [ + "bar.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "unrelated_native_app_source_under_package_cache_dir" + ] + } + ] + }, + { + "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": [ + "developer_own_libgame_binary_not_unity_gameactivity_glue" + ] + } + ] + }, + { + "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": [ + "windows_il2cpp_project_source_with_backslash_paths" + ] + } + ] + }, + { + "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": [ + "linux_il2cpp_project_source" + ] + } + ] + }, + { + "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": [ + "inputaction.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "registry_package_source_under_runtime_dir_never_restored" + ] + } + ] + }, + { + "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": [ + "legacy_ios_engine_binary_unity_6000_0_and_older" + ] + } + ] + }, + { + "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": [ + "windows_sentry_native_sdk" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "7429f5a97df8b817f3b36cab1970f9ea", + "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 new file mode 100644 index 000000000000..a4f4e902b3b3 --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_ios.pysnap @@ -0,0 +1,1004 @@ +--- +source: tests/sentry/grouping/test_grouping_info.py::test_grouping_info +--- +{ + "grouping_config": "newstyle:2026-01-20", + "variants": { + "app_exception_stacktrace": { + "component": { + "contributes": true, + "hint": null, + "id": "app", + "name": "in-app", + "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": "marked out of app by built-in stacktrace rule (category:system -app)", + "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": [ + "start" + ] + } + ] + }, + { + "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": [ + "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": [ + "UIApplicationMain" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "-[UnityAppController repaint]" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "PlayerLoop" + ] + } + ] + }, + { + "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": false, + "hint": null, + "id": "filename", + "name": null, + "values": [] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "ScriptingInvocation::Invoke" + ] + } + ] + }, + { + "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": [ + "il2cppinvokertable.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + ] + } + ] + }, + { + "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": [ + "enemyspawner.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "EnemySpawner_Update" + ] + } + ] + }, + { + "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": [ + "combatsystem.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "CombatSystem_ApplyDamage" + ] + } + ] + }, + { + "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": [ + "tmp_text.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "TMP_Text_SetText" + ] + } + ] + }, + { + "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": [ + "animation.bindings.cs" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "Animation_Play" + ] + } + ] + }, + { + "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": [ + "il2cppcodegen.cpp" + ] + }, + { + "contributes": true, + "hint": null, + "id": "function", + "name": null, + "values": [ + "il2cpp_codegen_raise_null_reference_exception" + ] + } + ] + }, + { + "contributes": false, + "hint": "marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)", + "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": [ + "-[SentryCrashInstallationReporter reportCrash]" + ] + } + ] + }, + { + "contributes": false, + "hint": "marked out of app by built-in stacktrace rule (category:internals -app)", + "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": [ + "__pthread_kill" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — in-app frames", + "hash": "8bbdecb4ad2f92d58133a93ee009a07b", + "hint": null, + "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": [ + "start" + ] + } + ] + }, + { + "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": [ + "main" + ] + } + ] + }, + { + "contributes": false, + "hint": "ignored by built-in stacktrace rule (category:indirection -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": [ + "UIApplicationMain" + ] + } + ] + }, + { + "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": [ + "-[UnityAppController repaint]" + ] + } + ] + }, + { + "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": false, + "hint": "ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -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": [ + "-[SentryCrashInstallationReporter reportCrash]" + ] + } + ] + }, + { + "contributes": false, + "hint": "ignored by built-in stacktrace rule (category:internals -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": [ + "__pthread_kill" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "bae55c8a9132232871adf6b662a2d6da", + "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 new file mode 100644 index 000000000000..0d67bd2a426f --- /dev/null +++ b/tests/sentry/grouping/snapshots/grouping_info/test_grouping_info/newstyle@2026_01_20/unity_il2cpp_macos.pysnap @@ -0,0 +1,876 @@ +--- +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, + "hint": "marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)", + "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": [ + "+[SentrySDK captureCrashEvent:]" + ] + } + ] + } + ] + } + ] + } + ] + }, + "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": false, + "hint": "ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -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": [ + "+[SentrySDK captureCrashEvent:]" + ] + } + ] + } + ] + } + ] + } + ] + }, + "contributes": true, + "description": "exception stacktrace — all frames", + "hash": "cd7247c52d95df0f046b9e8d86ca231f", + "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 new file mode 100644 index 000000000000..0d00f9b8035d --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_coroutine_dispatch.pysnap @@ -0,0 +1,90 @@ +--- +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) + module* + "GameBootstrap" + filename (ignored because module takes precedence) + "gamebootstrap.cs" + function* + "GameBootstrap.Start()" + frame (non app frame) + module* + "UnityEngine.MonoBehaviour" + function* + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + frame (non app frame) + module* + "UnityEngine.SetupCoroutine" + function* + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + frame (non app frame) + module* + "EnemySpawner+d__4" + filename (ignored because module takes precedence) + "enemyspawner.cs" + function* + "EnemySpawner+d__4.MoveNext()" + frame (non app frame) + module* + "CombatSystem" + filename (ignored because module takes precedence) + "combatsystem.cs" + function* + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + type* + "System.NullReferenceException" + value* + "Object reference not set to an instance of an object" +-------------------------------------------------------------------------- +system: + hash: "f36868ba2e7766bad6639173f423f075" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + module* + "GameBootstrap" + filename (ignored because module takes precedence) + "gamebootstrap.cs" + function* + "GameBootstrap.Start()" + frame* + module* + "UnityEngine.MonoBehaviour" + function* + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + frame* + module* + "UnityEngine.SetupCoroutine" + function* + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + frame* + module* + "EnemySpawner+d__4" + filename (ignored because module takes precedence) + "enemyspawner.cs" + function* + "EnemySpawner+d__4.MoveNext()" + frame* + module* + "CombatSystem" + filename (ignored because module takes precedence) + "combatsystem.cs" + function* + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" + type* + "System.NullReferenceException" + value (ignored because stacktrace takes precedence) + "Object reference not set to an instance of an object" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap new file mode 100644 index 000000000000..3cc1a54fe0bd --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_android.pysnap @@ -0,0 +1,124 @@ +--- +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* + "__libc_init" + frame (non app frame) + function* + "android_main" + frame (non app frame) + function* + "UnityPlayerLoop" + 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" + frame (non app frame) + function* + "sentry_android_capture_envelope" + type* + "EXC_BAD_ACCESS" + value* + "Attempted to dereference null pointer." +-------------------------------------------------------------------------- +system: + hash: "d7d07d1374dbfe9aab4cac5b2be8c38c" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame (ignored by built-in stacktrace rule (category:internals -group)) + function* + "__libc_init" + frame* + function* + "android_main" + frame* + function* + "UnityPlayerLoop" + 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" + frame* + function* + "sentry_android_capture_envelope" + 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_edge_cases.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap new file mode 100644 index 000000000000..8fc3ef047891 --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_edge_cases.pysnap @@ -0,0 +1,96 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: "87487f53aed91db01c2f782511559c58" + contributing component: exception + hint: None + root_component: + app* + exception* + stacktrace* + frame* (marked in-app by the client) + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame (marked out of app by built-in stacktrace rule (path:**/vendor/** -app)) + filename* + "bar.cpp" + function* + "unrelated_native_app_source_under_package_cache_dir" + frame* (marked in-app by the client) + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "windows_il2cpp_project_source_with_backslash_paths" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "linux_il2cpp_project_source" + frame (non app frame) + filename* + "inputaction.cs" + function* + "registry_package_source_under_runtime_dir_never_restored" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + frame (non app frame) + function* + "windows_sentry_native_sdk" + type* + "SIGABRT" + value (ignored because stacktrace takes precedence) + "Abort" +-------------------------------------------------------------------------- +system: + hash: "75ba4858d44123832a64fcaa643df81b" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame* + filename* + "bar.cpp" + function* + "unrelated_native_app_source_under_package_cache_dir" + frame* + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame* + filename* + "enemyspawner.cs" + function* + "windows_il2cpp_project_source_with_backslash_paths" + frame* + filename* + "enemyspawner.cs" + function* + "linux_il2cpp_project_source" + frame* + filename* + "inputaction.cs" + function* + "registry_package_source_under_runtime_dir_never_restored" + frame* + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + frame* + function* + "windows_sentry_native_sdk" + type* + "SIGABRT" + value (ignored because stacktrace takes precedence) + "Abort" 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 new file mode 100644 index 000000000000..b86741ebeeec --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_ios.pysnap @@ -0,0 +1,140 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: "7eb77a6781dde25799f955a0b9f1aa77" + contributing component: exception + hint: None + root_component: + app* + exception* + stacktrace* + frame (marked out of app by built-in stacktrace rule (category:system -app)) + function* + "start" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "main" + frame (non app frame) + function* + "UIApplicationMain" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "-[UnityAppController repaint]" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "PlayerLoop" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "ScriptingInvocation::Invoke" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame (marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)) + function* + "-[SentryCrashInstallationReporter reportCrash]" + frame (marked out of app by built-in stacktrace rule (family:native package:/usr/lib/** -app)) + function* + "__pthread_kill" + type* + "EXC_BAD_ACCESS" + value (ignored because stacktrace takes precedence) + "Attempted to dereference null pointer." +-------------------------------------------------------------------------- +system: + hash: "ebc0b0fd747d0339916308cc175666f7" + contributing component: exception + hint: None + root_component: + system* + exception* + stacktrace* + frame* + function* + "start" + frame* + filename* + "main.mm" + function* + "main" + frame (ignored by built-in stacktrace rule (category:indirection -group)) + function* + "UIApplicationMain" + frame* + function* + "-[UnityAppController repaint]" + 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 (ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -group)) + function* + "-[SentryCrashInstallationReporter reportCrash]" + frame (ignored by built-in stacktrace rule (category:internals -group)) + function* + "__pthread_kill" + 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 new file mode 100644 index 000000000000..a0bde773270d --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2023_01_11/unity_il2cpp_macos.pysnap @@ -0,0 +1,124 @@ +--- +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" + frame (marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)) + function* + "+[SentrySDK captureCrashEvent:]" + 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" + frame (ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -group)) + function* + "+[SentrySDK captureCrashEvent:]" + 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 new file mode 100644 index 000000000000..4c7eaaa2b933 --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_coroutine_dispatch.pysnap @@ -0,0 +1,90 @@ +--- +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* + "System.NullReferenceException" + value* + "Object reference not set to an instance of an object" + stacktrace (ignored because it contains no in-app frames) + frame (non app frame) + module* + "GameBootstrap" + filename (ignored because module takes precedence) + "gamebootstrap.cs" + function* + "GameBootstrap.Start()" + frame (non app frame) + module* + "UnityEngine.MonoBehaviour" + function* + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + frame (non app frame) + module* + "UnityEngine.SetupCoroutine" + function* + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + frame (non app frame) + module* + "EnemySpawner+d__4" + filename (ignored because module takes precedence) + "enemyspawner.cs" + function* + "EnemySpawner+d__4.MoveNext()" + frame (non app frame) + module* + "CombatSystem" + filename (ignored because module takes precedence) + "combatsystem.cs" + function* + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" +-------------------------------------------------------------------------- +system: + hash: "872f67574fe082419e092229105d22ca" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "System.NullReferenceException" + value (ignored because stacktrace takes precedence) + "Object reference not set to an instance of an object" + stacktrace* + frame* + module* + "GameBootstrap" + filename (ignored because module takes precedence) + "gamebootstrap.cs" + function* + "GameBootstrap.Start()" + frame* + module* + "UnityEngine.MonoBehaviour" + function* + "UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)" + frame* + module* + "UnityEngine.SetupCoroutine" + function* + "UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator, System.IntPtr)" + frame* + module* + "EnemySpawner+d__4" + filename (ignored because module takes precedence) + "enemyspawner.cs" + function* + "EnemySpawner+d__4.MoveNext()" + frame* + module* + "CombatSystem" + filename (ignored because module takes precedence) + "combatsystem.cs" + function* + "CombatSystem.ApplyDamage(UnityEngine.GameObject, System.Int32)" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap new file mode 100644 index 000000000000..2ca68e3d706d --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_android.pysnap @@ -0,0 +1,124 @@ +--- +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 (marked out of app by built-in stacktrace rule (category:internals -app)) + function* + "__libc_init" + frame (non app frame) + function* + "android_main" + frame (non app frame) + function* + "UnityPlayerLoop" + 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" + frame (non app frame) + function* + "sentry_android_capture_envelope" +-------------------------------------------------------------------------- +system: + hash: "04d641eb30b794030ed5b0d7d779eb05" + 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:internals -group)) + function* + "__libc_init" + frame* + function* + "android_main" + frame* + function* + "UnityPlayerLoop" + 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" + frame* + function* + "sentry_android_capture_envelope" diff --git a/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap new file mode 100644 index 000000000000..7398f131c4bd --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_edge_cases.pysnap @@ -0,0 +1,96 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: "539935023e2db3e104789c1c69ca2cf5" + contributing component: exception + hint: None + root_component: + app* + exception* + type* + "SIGABRT" + value (ignored because stacktrace takes precedence) + "Abort" + stacktrace* + frame* (marked in-app by the client) + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame (marked out of app by built-in stacktrace rule (path:**/vendor/** -app)) + filename* + "bar.cpp" + function* + "unrelated_native_app_source_under_package_cache_dir" + frame* (marked in-app by the client) + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "windows_il2cpp_project_source_with_backslash_paths" + frame (non app frame) + filename* + "enemyspawner.cs" + function* + "linux_il2cpp_project_source" + frame (non app frame) + filename* + "inputaction.cs" + function* + "registry_package_source_under_runtime_dir_never_restored" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + frame (non app frame) + function* + "windows_sentry_native_sdk" +-------------------------------------------------------------------------- +system: + hash: "7429f5a97df8b817f3b36cab1970f9ea" + contributing component: exception + hint: None + root_component: + system* + exception* + type* + "SIGABRT" + value (ignored because stacktrace takes precedence) + "Abort" + stacktrace* + frame* + filename* + "textures.cpp" + function* + "unrelated_native_app_source_under_assets_dir" + frame* + filename* + "bar.cpp" + function* + "unrelated_native_app_source_under_package_cache_dir" + frame* + function* + "developer_own_libgame_binary_not_unity_gameactivity_glue" + frame* + filename* + "enemyspawner.cs" + function* + "windows_il2cpp_project_source_with_backslash_paths" + frame* + filename* + "enemyspawner.cs" + function* + "linux_il2cpp_project_source" + frame* + filename* + "inputaction.cs" + function* + "registry_package_source_under_runtime_dir_never_restored" + frame* + function* + "legacy_ios_engine_binary_unity_6000_0_and_older" + frame* + function* + "windows_sentry_native_sdk" 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 new file mode 100644 index 000000000000..3924068858a7 --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_ios.pysnap @@ -0,0 +1,140 @@ +--- +source: tests/sentry/grouping/test_variants.py::test_variants +--- +app: + hash: "8bbdecb4ad2f92d58133a93ee009a07b" + contributing component: exception + hint: None + root_component: + app* + exception* + type* + "EXC_BAD_ACCESS" + value (ignored because stacktrace takes precedence) + "Attempted to dereference null pointer." + stacktrace* + frame (marked out of app by built-in stacktrace rule (category:system -app)) + function* + "start" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "main.mm" + function* + "main" + frame (non app frame) + function* + "UIApplicationMain" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "-[UnityAppController repaint]" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "PlayerLoop" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + function* + "ScriptingInvocation::Invoke" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppinvokertable.cpp" + function* + "RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "enemyspawner.cs" + function* + "EnemySpawner_Update" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "combatsystem.cs" + function* + "CombatSystem_ApplyDamage" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "tmp_text.cs" + function* + "TMP_Text_SetText" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "animation.bindings.cs" + function* + "Animation_Play" + frame* (marked in-app by built-in stacktrace rule (family:native package:**/Containers/Bundle/Application/** +app)) + filename* + "il2cppcodegen.cpp" + function* + "il2cpp_codegen_raise_null_reference_exception" + frame (marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)) + function* + "-[SentryCrashInstallationReporter reportCrash]" + frame (marked out of app by built-in stacktrace rule (category:internals -app)) + function* + "__pthread_kill" +-------------------------------------------------------------------------- +system: + hash: "bae55c8a9132232871adf6b662a2d6da" + 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* + "start" + frame* + filename* + "main.mm" + function* + "main" + frame (ignored by built-in stacktrace rule (category:indirection -group)) + function* + "UIApplicationMain" + frame* + function* + "-[UnityAppController repaint]" + 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 (ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -group)) + function* + "-[SentryCrashInstallationReporter reportCrash]" + frame (ignored by built-in stacktrace rule (category:internals -group)) + function* + "__pthread_kill" 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 new file mode 100644 index 000000000000..b76f1b13cfba --- /dev/null +++ b/tests/sentry/grouping/snapshots/variants/test_variants/newstyle@2026_01_20/unity_il2cpp_macos.pysnap @@ -0,0 +1,124 @@ +--- +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" + frame (marked out of app by built-in stacktrace rule (family:native function:?[[]Sentry* -app)) + function* + "+[SentrySDK captureCrashEvent:]" +-------------------------------------------------------------------------- +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" + frame (ignored by built-in stacktrace rule (family:native function:?[[]Sentry* -group)) + function* + "+[SentrySDK captureCrashEvent:]"