| Issue |
177556
|
| Summary |
llvm-symbolizer crashes on large binaries when pruneCache is triggered
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
MattHarrisEpic
|
When running llvm-symbolizer on exceptionally large debug files, it can cause a crash when pruneCache runs.
The debug file that demonstrates the issue has the following llvm-dwarfdump statistics:
"#functions": 2967243,
"#functions with location": 2926638,
"#inlined functions": 34111408,
"#inlined functions with abstract origins": 34111408,
"#unique source variables": 7853978,
"#source variables": 446186887,
"#source variables with location": 41196627,
When the application crashes, we spawn an llvm-symbolizer and request the entire callstack's worth of symbols.
The behavior we're seeing is that once the internal cache hits the maximum cache size, LLVMSymbolizer::pruneCache() is run, which frees up LRU data. However, some of that data is still referenced by raw pointers inside the symbolizer, and later on the freed memory is dereferenced, causing a crash.
Raising the MaxCacheSize significantly has allowed us to work around the problem, but I'm raising this issue so that a proper fix for pruneCache can be investigated. Thank you.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs