From 55cfdbac62b264725d81462a6bbc33ffadbe11c9 Mon Sep 17 00:00:00 2001 From: Sebastian Zivota Date: Mon, 20 Apr 2026 14:48:25 +0200 Subject: [PATCH 1/2] fix(js): Improve scope name resolution This bumps the `symbolic` dependency to 12.18.2, which improves scope name resolution for sourcemap caches (see https://github.com/getsentry/js-source-scopes/pull/35 and https://github.com/getsentry/symbolic/pull/970). This necessitates a (compatible) sourcemap cache version bump so the caches get recomputed. --- Cargo.lock | 226 ++++++++---------- Cargo.toml | 2 +- crates/symbolicator-js/src/symbolication.rs | 4 +- .../src/caches/versions.rs | 16 +- 4 files changed, 123 insertions(+), 125 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f2c9f0109..5cf99916f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -305,9 +305,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ast_node" -version = "3.0.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e2cddd48eafd883890770673b1971faceaf80a185445671abc3ea0c00593ee" +checksum = "2eb025ef00a6da925cf40870b9c8d008526b6004ece399cb0974209720f0b194" dependencies = [ "quote", "swc_macros_common", @@ -1010,9 +1010,6 @@ name = "bumpalo" version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" -dependencies = [ - "allocator-api2", -] [[package]] name = "byteorder" @@ -1026,6 +1023,16 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "bytes-str" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c60b5ce37e0b883c37eb89f79a1e26fbe9c1081945d024eee93e8d91a7e18b3" +dependencies = [ + "bytes", + "serde", +] + [[package]] name = "bytes-utils" version = "0.1.4" @@ -1759,13 +1766,13 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", - "libz-rs-sys", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -1812,9 +1819,9 @@ dependencies = [ [[package]] name = "from_variant" -version = "2.0.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308530a56b099da144ebc5d8e179f343ad928fa2b3558d1eb3db9af18d6eff43" +checksum = "e5ff35a391aef949120a0340d690269b3d9f63460a6106e99bd07b961f345ea9" dependencies = [ "swc_macros_common", "syn", @@ -2067,7 +2074,6 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", - "serde", ] [[package]] @@ -2079,6 +2085,7 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.1.5", + "serde", ] [[package]] @@ -2185,14 +2192,15 @@ dependencies = [ [[package]] name = "hstr" -version = "1.1.6" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b85186bc48d3c611ead052cc3f907748e40b63d73a99e4ed34d18063e2baaf1b" +checksum = "faa57007c3c9dab34df2fa4c1fb52fe9c34ec5a27ed9d8edea53254b50cd7887" dependencies = [ "hashbrown 0.14.5", "new_debug_unreachable", "once_cell", "rustc-hash", + "serde", "triomphe", ] @@ -2693,9 +2701,9 @@ checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" [[package]] name = "js-source-scopes" -version = "0.6.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "337f8c297261e4bc27d6dde0f644d2e3cb03391c9891b68cd5c2ea9945a57f6d" +checksum = "aad7db26c7e0013043d3f79f3a676305885c73c52a3b97e98d804ef5d6465514" dependencies = [ "indexmap", "sourcemap", @@ -2782,15 +2790,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" -dependencies = [ - "zlib-rs", -] - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -3055,6 +3054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -3105,11 +3105,12 @@ dependencies = [ [[package]] name = "msvc-demangler" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4c25a3bb7d880e8eceab4822f3141ad0700d20f025991c1f03bd3d00219a5fc" +checksum = "fbeff6bd154a309b2ada5639b2661ca6ae4599b34e8487dc276d2cd637da2d76" dependencies = [ "bitflags 2.9.4", + "itoa", ] [[package]] @@ -3663,7 +3664,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.17", - "watto 0.2.0", + "watto", ] [[package]] @@ -4349,12 +4350,19 @@ dependencies = [ "uuid", ] +[[package]] +name = "seq-macro" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" + [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -4367,11 +4375,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -4610,9 +4627,9 @@ dependencies = [ [[package]] name = "sourcemap" -version = "9.2.2" +version = "9.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22afbcb92ce02d23815b9795523c005cb9d3c214f8b7a66318541c240ea7935" +checksum = "314d62a489431668f719ada776ca1d49b924db951b7450f8974c9ae51ab05ad7" dependencies = [ "base64-simd", "bitvec", @@ -4703,39 +4720,27 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "swc_allocator" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7eefd2c8b228a8c73056482b2ae4b3a1071fbe07638e3b55ceca8570cc48bb" -dependencies = [ - "allocator-api2", - "bumpalo", - "rustc-hash", -] - [[package]] name = "swc_atoms" -version = "5.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7077ba879f95406459bc0c81f3141c529b34580bc64d7ab7bd15e7118a0391" +checksum = "d4ccbe2ecad10ad7432100f878a107b1d972a8aee83ca53184d00c23a078bb8a" dependencies = [ "hstr", "once_cell", - "rustc-hash", "serde", ] [[package]] name = "swc_common" -version = "8.1.1" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f8c8e4348383e4154f8d384cdad7e48f5d6d3daef78af376ac4e5ddbbf60c88" +checksum = "259b675d633a26d24efe3802a9d88858c918e6e8f062d3222d3aa02d56a2cf4c" dependencies = [ "anyhow", "ast_node", "better_scoped_tls", - "cfg-if", + "bytes-str", "either", "from_variant", "new_debug_unreachable", @@ -4744,20 +4749,19 @@ dependencies = [ "rustc-hash", "serde", "siphasher 0.3.11", - "swc_allocator", "swc_atoms", "swc_eq_ignore_macros", "swc_visit", "tracing", - "unicode-width 0.1.14", + "unicode-width 0.2.1", "url", ] [[package]] name = "swc_ecma_ast" -version = "8.1.2" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4062a54522a9c02d2b68cc09282774b87121cd48693b0e67ae8c18b31b709866" +checksum = "a573a0c72850dec8d4d8085f152d5778af35a2520c3093b242d2d1d50776da7c" dependencies = [ "bitflags 2.9.4", "is-macro", @@ -4765,7 +4769,6 @@ dependencies = [ "once_cell", "phf", "rustc-hash", - "scoped-tls", "string_enum", "swc_atoms", "swc_common", @@ -4775,32 +4778,30 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "10.0.2" +version = "27.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfbfa5baabd14901a310f9d55d991625787d27d94de5c38a1a2ef85ebc19c97" +checksum = "7f1a51af1a92cd4904c073b293e491bbc0918400a45d58227b34c961dd6f52d7" dependencies = [ + "bitflags 2.9.4", "either", - "new_debug_unreachable", "num-bigint", - "num-traits", "phf", "rustc-hash", + "seq-macro", "serde", - "smallvec", "smartstring", "stacker", "swc_atoms", "swc_common", "swc_ecma_ast", "tracing", - "typed-arena", ] [[package]] name = "swc_ecma_visit" -version = "8.0.0" +version = "18.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7a65fa06d0c0f709f1df4e820ccdc4eca7b3db7f9d131545e20c2ac2f1cd23" +checksum = "a9611a72a4008d62608547a394e5d72a5245413104db096d95a52368a8cc1d63" dependencies = [ "new_debug_unreachable", "num-bigint", @@ -4845,9 +4846,9 @@ dependencies = [ [[package]] name = "symbolic" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "857285fb5f446824e6bc78dc41267d8e544a3ed802ed58aee3445e71968a57c2" +checksum = "4e832005e6261d508717815bac8e2c096161b33b713a032861b3a13ae4cd60ed" dependencies = [ "symbolic-cfi", "symbolic-common", @@ -4861,20 +4862,20 @@ dependencies = [ [[package]] name = "symbolic-cfi" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "861d431c83f336f09d027111aac735cd664e8b69e87029834b6db37b1d99c3a9" +checksum = "e8d7ae026fdd9ac37fa77d956aabb60d8cc306bd4f5a38eafc28ad2a003e14cf" dependencies = [ "symbolic-common", "symbolic-debuginfo", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] name = "symbolic-common" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d8046c5674ab857104bc4559d505f4809b8060d57806e45d49737c97afeb60" +checksum = "4bbc8b4f883265fb2207a0d6ce67095f4bd6cf13e5f9183eb8b3e73fa1b2466a" dependencies = [ "debugid", "memmap2", @@ -4885,9 +4886,9 @@ dependencies = [ [[package]] name = "symbolic-debuginfo" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d3491f94b4f4481b64d59592b5a2d9d17f9843bf264eb743c2de1a811984a" +checksum = "8e74486a57b6787aa1bfb15bf7c33860ca6a99e527f2f235bc5f56903e5eeb10" dependencies = [ "debugid", "elementtree", @@ -4896,7 +4897,6 @@ dependencies = [ "flate2", "gimli 0.32.3", "goblin", - "lazy_static", "nom", "nom-supreme", "once_cell", @@ -4910,17 +4910,17 @@ dependencies = [ "srcsrv", "symbolic-common", "symbolic-ppdb", - "thiserror 1.0.69", + "thiserror 2.0.17", "wasmparser", - "zip 2.4.2", + "zip 7.2.0", "zstd", ] [[package]] name = "symbolic-demangle" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1accb6e5c4b0f682de907623912e616b44be1c9e725775155546669dbff720ec" +checksum = "8eda470a26ea40eb5cafc35487718e23a2f19153d3a589affb9e8f7fa1aa73b3" dependencies = [ "cc", "cpp_demangle", @@ -4931,9 +4931,9 @@ dependencies = [ [[package]] name = "symbolic-il2cpp" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b64f7b41fd368029673c889a3436c52b232dea8f8d689f9c8b9b39a424a80b" +checksum = "f778868fd508fe3755a91ef86fccb03d7367d387d4740f00878580c15fd97b5b" dependencies = [ "indexmap", "serde_json", @@ -4943,48 +4943,48 @@ dependencies = [ [[package]] name = "symbolic-ppdb" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e9d30ebe090d47489f02ae126878035fa70022d81229801e32f0f335e0727b" +checksum = "e3da362b081085011db092a89e975156a468529ae67eef17d8a157825e23ecce" dependencies = [ "flate2", "indexmap", "serde", "serde_json", "symbolic-common", - "thiserror 1.0.69", + "thiserror 2.0.17", "uuid", - "watto 0.1.0", + "watto", ] [[package]] name = "symbolic-sourcemapcache" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6281a883a884dca38907bd2f17cf3f062ceacdaf7159c66134cc1b47907ca7c" +checksum = "4ab4163228ac397e485aa156ca5b36a13443c2423cb042ec00b01a6d4b5553ed" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "js-source-scopes", "sourcemap", "symbolic-common", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", - "watto 0.1.0", + "watto", ] [[package]] name = "symbolic-symcache" -version = "12.17.0" +version = "12.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06fb3f0988ff72a03afe955df5ee80a79fd3b6a4afee7dda437b938b86cbc49" +checksum = "5fabe9ca4c65401e4031059c6149625ac759bda2e6595c32fd206147193ee106" dependencies = [ "indexmap", "symbolic-common", "symbolic-debuginfo", "symbolic-il2cpp", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", - "watto 0.1.0", + "watto", ] [[package]] @@ -5750,10 +5750,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "typed-arena" -version = "2.0.2" +name = "typed-path" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] name = "typenum" @@ -6093,28 +6093,17 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.214.0" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5309c1090e3e84dad0d382f42064e9933fdaedb87e468cc239f0eabea73ddcb6" +checksum = "f6d8db401b0528ec316dfbe579e6ab4152d61739cfe076706d2009127970159d" dependencies = [ - "ahash", "bitflags 2.9.4", - "hashbrown 0.14.5", + "hashbrown 0.15.5", "indexmap", "semver", "serde", ] -[[package]] -name = "watto" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6746b5315e417144282a047ebb82260d45c92d09bf653fa9ec975e3809be942b" -dependencies = [ - "leb128", - "thiserror 1.0.69", -] - [[package]] name = "watto" version = "0.2.0" @@ -6715,41 +6704,38 @@ dependencies = [ [[package]] name = "zip" -version = "2.4.2" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +checksum = "014d9123d252f20eb6e9cfd9c1cbbcd84fe2409a67c4a0b5b7cc36593d18566d" dependencies = [ "arbitrary", + "bzip2", "crc32fast", - "crossbeam-utils", - "displaydoc", "flate2", "indexmap", "memchr", - "thiserror 2.0.17", "zopfli", ] [[package]] name = "zip" -version = "5.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "014d9123d252f20eb6e9cfd9c1cbbcd84fe2409a67c4a0b5b7cc36593d18566d" +checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0" dependencies = [ - "arbitrary", - "bzip2", "crc32fast", "flate2", "indexmap", "memchr", + "typed-path", "zopfli", ] [[package]] name = "zlib-rs" -version = "0.5.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" [[package]] name = "zopfli" diff --git a/Cargo.toml b/Cargo.toml index 9473af48b..1aadc905d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -124,7 +124,7 @@ serde_yaml = "0.9.14" sha-1 = "0.10.0" sha2 = "0.10.6" sketches-ddsketch = "0.3.0" -symbolic = "12.17.0" +symbolic = "12.18.2" symbolicator-crash = { path = "crates/symbolicator-crash" } symbolicator-js = { path = "crates/symbolicator-js" } symbolicator-native = { path = "crates/symbolicator-native" } diff --git a/crates/symbolicator-js/src/symbolication.rs b/crates/symbolicator-js/src/symbolication.rs index 3a5972c8c..58fa7f9db 100644 --- a/crates/symbolicator-js/src/symbolication.rs +++ b/crates/symbolicator-js/src/symbolication.rs @@ -243,7 +243,9 @@ async fn symbolicate_js_frame( callsite_fn_name.as_deref(), ))); - if let Some(filename) = token.file_name() { + if let Some(filename) = token.file_name() + && !filename.is_empty() + { let mut filename = filename.to_string(); frame.abs_path = module .source_file_base() diff --git a/crates/symbolicator-service/src/caches/versions.rs b/crates/symbolicator-service/src/caches/versions.rs index df581158a..44506e34a 100644 --- a/crates/symbolicator-service/src/caches/versions.rs +++ b/crates/symbolicator-service/src/caches/versions.rs @@ -214,13 +214,23 @@ pub const PPDB_CACHE_VERSIONS: CacheVersions = CacheVersions { /// SourceMapCache, with the following versions: /// +/// - `3`: Improved name resolution during cache generation. See +/// and +/// . +/// /// - `2`: Restructuring the cache directory format. /// /// - `1`: Initial version. pub const SOURCEMAP_CACHE_VERSIONS: CacheVersions = CacheVersions { - current: CacheVersion::new(2, CachePathFormat::V2), - fallbacks: &[CacheVersion::new(1, CachePathFormat::V1)], - previous: &[CacheVersion::new(1, CachePathFormat::V1)], + current: CacheVersion::new(3, CachePathFormat::V2), + fallbacks: &[ + CacheVersion::new(2, CachePathFormat::V2), + CacheVersion::new(1, CachePathFormat::V1), + ], + previous: &[ + CacheVersion::new(1, CachePathFormat::V1), + CacheVersion::new(2, CachePathFormat::V2), + ], }; /// Il2cpp cache, with the following versions: From 8631bf68a2fac87b740250fdceff531bddca6964 Mon Sep 17 00:00:00 2001 From: Sebastian Zivota Date: Mon, 20 Apr 2026 15:47:54 +0200 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6520a7ae8..9863b2ae0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased + +- fix(js): Improve scope name resolution by @loewenheim in [#1929](https://github.com/getsentry/symbolicator/pull/1929) + ## 26.4.0 ### Bug Fixes