Skip to content

Commit 00682a3

Browse files
Swatinemkhuey
authored andcommitted
Add a test for a U/Ul ambiguity that resulted in pathological behavior.
1 parent 224df6f commit 00682a3

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

tests/tests.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,3 +610,14 @@ demangles!(
610610
_ZN7mozilla10extensions7AtomSet3GetIXadsoPKcL_ZNS0_16WILDCARD_SCHEMESEEEEEE8nsresultR6RefPtrIS1_E,
611611
"nsresult mozilla::extensions::AtomSet::Get<&(mozilla::extensions::WILDCARD_SCHEMES.<char const* at offset 0>)>(RefPtr<mozilla::extensions::AtomSet>&)"
612612
);
613+
614+
// This symbol previously ran into some mutual recursion and unbounded growth of the substitution table.
615+
// See <https://github.com/gimli-rs/cpp_demangle/issues/277> and <https://github.com/getsentry/symbolic/issues/477>
616+
#[test]
617+
fn test_pathological_recursion() {
618+
let s = "_ZUlzjjlZZL1zStUlSt7j_Z3kjIIjIjL1vfIIEEEjzjjfjzSt7j_Z3kjIIjfjzL4t3kjIIjfjtUlSt7j_Z3kjIIjIjL1vfIIEEEjzjjfjzSt7j_Z3kjIIjfjzL4t3kjIIjfjzL4t7IjIjjzjjzSt7j_Z3kjIIjfjzStfjzSt7j_ZA3kjIIjIjL1vfIIEEEjzjjfjzSt7j_Z3kjIIjIjL1vfIIEEEjzjjfjzSt7j_Z3kjIIjfjzL4t3kjIIjzL4t7IjIjjzjjzSt7j_Z3kjIIjfjzStfjzSt7j_ZA3kjIIjIjL1vfIIEEEjzjjfjzSt7j_Z3kjIIjIjL1vfIIEEEjzjjfjzSt7j_Z3kjIIjfjzL4t3kjIIjfjzL4t7IjIjL1vfIIEEEjzjjSI";
619+
let parse_options = cpp_demangle::ParseOptions::default().recursion_limit(160); // default is 96
620+
if let Ok(sym) = cpp_demangle::Symbol::new_with_options(s, &parse_options) {
621+
panic!("Unexpectedly parsed '{}' as '{}'", s, sym);
622+
}
623+
}

0 commit comments

Comments
 (0)