Skip to content

Latest commit

 

History

History
1378 lines (841 loc) · 57.9 KB

CHANGELOG.md

File metadata and controls

1378 lines (841 loc) · 57.9 KB

Changelog

14.0.0-alpha.4

Breaking Changes

Fixes

  • No unwind info on certain dsym files with sparse sections. (#1041)
  • Increase inlinee limits. (#1046)
  • Patch a potential segfault in the vendored Swift demangler. (#1052)
  • Patch potential aborts in the vendored Swift demangler. (#1054, #1059, #1062)
  • Do not allocate based on untrusted input in unreal parser. (#1055)
  • Ensure unwind sections contain any unwind information. (#1058)
  • Only replace the first * in sourcelink expansion. (#1064)
  • Remove recursive symcache writer. (#1066)
  • Don't panic when seeing a no-entry second level compact page (#1067)
  • Add recursion limit to swift Demangler (#1068)
  • Preserve _Z mangled itanium prefixes. (#1074)
  • Do not undecorate function names from DWARF debug information in PE files. (#1074, #1075)
  • Bound output string size. (#1073)
  • Don't accept unbounded custom nodes in RuntimeProperties. (#1072)
  • Avoid infinite looping in the swift demangler with bad const prop codes. (#1079)
  • Guard against empty NodePrinter children in the Swift demanger. (#1078)
  • Skip symbols outside the u32 address range in the symcache writer. (#1092)
  • Reject malformed symcaches whose ranges section outgrows their source locations section. (#1091)
  • Prevent cycles when iterating on inline sourcelocations in symcache. (#1080)
  • Don't artificially extend WASM symbol sizes. (#1081)
  • Use 2-byte simple indexes for Portable PDB tables with exactly 65,535 rows. (#1085)

Dependencies

  • Bump pdb-addr2line to 0.12.1 to fix a potential infinite recursion. (#1030)
  • Bump js-source-scopes to 0.7.3 to fix name resolution for private functions. (#1057)
  • Bump cpp_demangle to 0.5.1. (#1077)
  • Bump minidump to 0.27.0. (#1082)

Features

  • Adds variable information to symcaches. (#1036, #1037)
  • Implements variables at a frame offset. (#1026)
  • Implement resolution for primitive and pointer type references contained in variables. (#1032)

14.0.0-alpha.3

Breaking Changes

  • SourceBundleWriter::finish now returns the underlying writer. (#1016)
  • FormatErrorKind::InvalidBlobFormat is changed from u32 to i32. (#1016)
  • EmbeddedSource::get_contents_bounded now replaces EmbeddedSource::get_contents. (#1016)
  • Removed the deprecated BreakpadErrorKind::BadSyntax variant. (#1024)

Dependencies

  • Bump pdb-addr2line to 0.12.0. This includes a switch from pdb to pdb2. (#1018)

14.0.0-alpha.2

Fixes

  • Handle XML parsing without recursion. (#1003)

14.0.0-alpha.1

  • No documented changes.

13.9.0

Fixes

  • Add limit on inline nesting depth when parsing Breakpad objects. (#1014)
  • Fix potential out of bounds panic on invalid section offsets (#1013)
  • Fix a potential panic when locating sections in an elf file. (#1012)

13.8.0

Features

  • Add limit on chained UNWIND_INFO traversal in CFI generation. (#1007)

13.7.0

Features

  • Add recursion limit to vendored msvc-demangler. (#1006)
  • Vendor msvc-demangler. (#998)
  • WASM: expose il2cppLineMapping(object, provider), which extracts a Unity Il2cpp C++→C# line mapping by parsing source_info markers from an object's referenced C++ source files and returns it as a JSON document (or undefined when no mappings are found). Source file contents are supplied by a (path) => Uint8Array | null provider callback, so it works without filesystem access. symbolic-il2cpp also gains ObjectLineMapping::from_object_with_provider, the filesystem-free counterpart of from_object. (#1005)
  • WASM: expose ObjectFile.asPe() to narrow an object to a PeFile, and PeFile.embeddedPpdb() returning the decompressed Portable PDB embedded in a managed Windows PE (a standalone, parseable debug information file), or undefined when there is no embedded PPDB. (#1004)

Fixes

  • Fix bugs in the vendored msvc-demangler lib. (#1008)

Dependencies

13.6.1

Fixes

  • Fix function range to addr/line resolution, this fixes a case where WASM binaries compiled with Emscripten failed to have their source code mappings resolved. (#1002)

13.6.0

Features

  • symbolic-debuginfo: Add a new option max_decompressed_embedded_source_size to ParseObjectOptions. This option limits the sizes of compressed embedded source files when they are returned from methods like source_by_path. (#999)

13.5.0

Features

  • WASM: expose ObjectFile.debugSession() returning a DebugSession with files() (the source files referenced by the object) and sourceByPath(path) (resolving embedded contents or a source link). symbolic-debuginfo also implements AsSelf for ObjectDebugSession so it can be held in a SelfCell. (#997)

13.4.0

Features

  • symbolic-debuginfo: add SourceBundleWriter::write_object_with_filter_and_provider, which builds a source bundle from caller-supplied source content instead of relying on the local filesystem. (#988)

Fixes

  • Fix issue with overflowing section offsets in 64bit Mach-O files. (#985)

Changes

  • Rework WASM API to expose lower level symbolic types. (#992)
  • symbolic-debuginfo: use the C zstd library on wasm32 too (via zstd-sys's wasm-shim), replacing the ruzstd decoder added in #989. One zstd implementation for all targets; ruzstd is no longer a dependency. Building for wasm now requires clang. (#990)

13.3.1

Changes

  • symbolic-debuginfo: select the C zstd library (native) vs the pure-Rust ruzstd decoder (wasm32) via cfg(target_arch) instead of the elf-zstd/elf-zstd-pure features. features = ["elf"] again includes zstd support on native (the feature split in #986 had silently removed it). ruzstd was bumped to 0.8.3 and now rejects size mismatches instead of truncating. (#989)

13.3.0

Features

  • Add WebAssembly bindings (symbolic-wasm crate) published to npm as @sentry/symbolic, for parsing debug information files from JavaScript. (#986)

Changes

  • symbolic-debuginfo: the zstd dependency moved out of the elf feature into a new elf-zstd feature (kept in default, so default builds are unchanged). Consumers using default-features = false with elf should add elf-zstd to keep decompressing zstd-compressed ELF debug sections, or elf-zstd-pure for a pure-Rust (wasm-compatible) decoder. (#986)

13.2.0

Features

  • Add parsing options for object files. (#984)

13.1.1

Features

  • Add support for win arm64 PE unwind codes (#978)

Fixes

  • Disable PE import table parser and be more permissive during parsing. (#964)

13.1.0

Features

  • Updated libswift demangle to v6.3.1. (#980)

13.0.0

Features

  • Extract srcsrv data from PDB for file mapping by @mujajica and @loewenheim. This includes a bump of the SymCache format to version 9. (#943)

Dependencies

  • Update several publicly exposed dependencies:
    • gimli: 0.32.3 -> 0.33.0
    • goblin: 0.8.0 -> 0.10.5
    • scroll: 0.12.0 -> 0.13.0 (#976)

12.18.3

Internal Changes 🔧

  • (js) Allow magic comments to appear anywhere by @Dav1dde in #974

12.18.2

  • Downgrade cpp_demangle version to 0.4.1. Symbolicator is currently dependent on this. (#972)

12.18.1

Improvements

12.18.0

Improvements

  • symcache: Change internal representation to enable old versions to remain parseable. (#947)
  • feat: Add Unreal4File::into_bytes. (#967)

12.17.4

Fixes

  • Revert "Use goblin permissive PE parse-mode". This change breaks API compatibility and should not have been released in a patch version. (#966)

Improvements

  • Enable symbolize and CFI by default in examples/minidump_stackwalk, and replace their corresponding flags --symbolize and --cfi with --no-symbolize and --no-cfi respectively. (#963)

12.17.3

Fixes

  • Use goblin permissive PE parse-mode (#960)
  • DWARF: Correctly detect languages in LTO-compiled binaries (#961)

12.17.2

Fixes

  • symcache: Fixed an unsound implementation of Pod (#958)

12.17.1

Fixes

  • minidump: Define default .ra rules for PPC and ARM (#949)

12.17.0

  • feat(pdb): Extract the srcsrv integration name for metrics (#944)

12.16.3

  • feat(elf): Added support for dynamic symbols when DYNAMIC segment is missing. (#935)
  • fix(dwarf): -2 is now an allowed tombstone address in some DWARF sections. For details, see gimli-rs/gimli#791. (#937).

12.16.2

Fixes

  • sourcemapcache: Tokens are now considered to only extend to the end of the line (as intended). This means that some lookups that would previously (incorrectly) have returned unminified source positions now return nothing. (#932)

12.16.1

Fixes

  • symcache: Fixed a bug in symcache generation for functions without line records. (#930)

12.16.0

Features

  • python bindings: Expose SourceMapView.get_source_contents function. (#921)
  • Change the MSRV version to 1.82. (#927)
  • build: switch to Python3.11 for releases builds. (#929)

Fixes

  • sourcemapcache: Don't return unmapped source locations. (#922)

12.15.5

Fixes

  • demangle: Fixed a crash/abort when providing bad input to the swift demangler. (#917)

12.15.4

Fixes

  • symcache: Fixed a bug introduced in 12.14.0 that resulted in symbols not being inserted. (#915)

12.15.3

Features

  • Allow specifying multiple symbol sources in minidump-stackwalk utility. (#903)
  • Add a subcommand to extract individual files from a unreal crash report to the unreal_engine_crash utility. (#907)

Fixes

  • Do not hallucinate frames when stack walking in minidump-stackwalk utility. (#904)

Improvements

  • Add normalization for paths in FileKey. (#908)

12.14.1

Fixes

  • Restore support for older Rust versions and clarify MSRV policy. (#902)

12.14.0

Features

  • Expose API to apply access pattern hints to a ByteView.(#899).

Fixes

  • symcache: Explicitly map "holes" between functions (#897)

12.13.4

Fixes

  • Parse debug_str_offs section in Mach-O files (#895)

12.13.3

Improvements

  • Check UTF-8 validity memory efficiently (#890)

12.13.2

Fixes

  • Fixed GHA-based Windows builds (#891).

12.13.1

Fixes

  • Fixed a compilation issue with older GCC compilers. (#886)

12.13.0

Features

  • Updated libswift demangle to v6.0.3. (#885)

12.12.4

Fixes

  • symcache: Fixed a bug related to to inlinee resolution during symcache conversion. (#883)

12.12.3

Fixes

  • js: Prefer "debug_id" for sourcemap debug IDs. (#878).

12.12.2

Fixes

  • js: Fixed an error when reading debug IDs from sourcemaps with both "debugId" and "debug_id" keys (#877).

12.12.1

Features

  • feat(js): Sourcemap debug IDs can now be read from the "debugId" field in addition to "debug_id" (#870).

12.12.0

Fixes

  • Unship "Support for DWARFv5 embedded source code extension (#849)". Unfortunately the check for whether an elf file contains embedded sources is prohibitively expensive in terms of memory. (#870)

12.11.1

Fixes

  • symbolic-cfi: Skip invalid FDEs when converting DWARF to Breakpad CFI (#868)

Internal:

  • Removed dmsort dependency and replaced uses with stable std sorts. (#869)

12.11.0

  • Add callback to symbolic::debuginfo::sourcebundle::SourceBundleWriter which handles files skipped while writing to the source bundle. (#864)

12.10.1

  • Skip invalid sources (#861)

12.10.0

Features

  • Support for DWARFv5 embedded source code extension (#849)
  • Updated wasmparser dependency to 0.214.0 (#849)

12.9.2

  • Downgrade and pin zip to fix SourceBundles with >64k files (#846)

12.9.1

Features

  • Add support for reading zstd compressed ELF debug section (#843)

Fixes

  • sourcebundles: Only valid UTF-8 files can be written into sourcebundles (#816)
  • Fix an issue when extracting the name of the debug file from a PE object (#825)

Internal

  • Update tokio to latest version (#833)
  • Fix infinite recursion caused by indirect self-references when resolving function names (#836)
  • Switch to workspace dependencies (#841)

12.8.0

Features

  • Make mapping by params initialization optional (#823)

12.7.1

Internal

  • Update crate dependencies, in particular gimli to fix performance/OOM problems related to duplicated abbreviations (#822)

12.7.0

Fixes

  • Fix empty parameters list issue (#821)

12.6.0

Features

  • Add support for parameters param in the remap_frame to allow deobfuscation when line is not available (#820)

12.5.0

Internal

  • Emit a MODULE record for PE files (#814)

Features

  • Update proguard and add remap_method fn (#818)

12.4.1

Fixes

  • sourcebundles: Don't write empty source_links maps (#813)

12.4.0

Fixes

  • discover_sourcemaps_location returns source mapping URLs without query parameters or fragments (#809)

Internal

  • Updated gimli, goblin, indexmap, and minidump dependencies (#811)
  • Cargo.lock is now included in the repository (#811)

12.3.0

Features

  • Add sourcelink functionality to symbolic-common (#803)
  • Add sourcelink support to sourcebundles (#804)

Fixes

  • Documentation fixes contributed by fzyzcjy

12.2.0

Features

  • Add some mypy typing to symbolic (#797)

12.1.6

Updating

  • Require python 3.8+ for python bindings (#793)

12.1.5

Fixes:

  • sourcemapcache: Improved scope name resolution. (#786)

12.1.4

Fixes:

  • Optimize SourceBundle/DebugSession (#787)

12.1.3

Fixes:

  • Correctly resolve sourceMappingURL references for "source" files.
  • Allow parsing the DebugId of a PS4 executable.

12.1.2

Fixes:

  • PPDB files report has_sources() = true even when they only contain source links (#774)
  • Make SourceBundle writer deterministic (#778)
  • Increase IL2CPPP source mapping boundary (#776)

12.1.1

Features:

  • Skip hidden sequence points when creating PortablePDB cache. (#769)

12.1.0

Features:

  • Replace internal usage of LazyCell by OnceCell and make SourceBundleDebugSession: Send, Sync and AsSelf. (#767)

12.0.0

Features:

  • Added debug IDs to source bundle JavaScript files and source maps. (#762)
  • Add support for embedded debug IDs in minified files (#765)

Breaking changes:

  • Change DebugSession::source_by_path() to return a SourceFileDescriptor containing either file content or a URL to fetch it from. (#758,#762)
  • Change SourceBundleWriter::write_object_with_filter() filter callback to take SourceFileDescriptor, allowing to include/exclude embedded sources. (#764,#762)

Fixes:

  • Make sure to parse PortablePdb streams in the correct order. (#760)

11.1.0

Features:

  • Correctly read the debug_id of Deterministic PE files (#658)
  • Gracefully handle invalid PPDBs (#751)
  • Support embedded PortablePDB in DLLs (#752, #757)

11.0.0

Fixes:

  • Discard invalid line records and inlinees when parsing functions. (#747)

Features:

  • PortablePdbDebugSession now returns files referenced in the Portable PDB file. (#729)
  • PortablePdbDebugSession now returns source files embedded in the Portable PDB file. (#734)
  • Implement symbolic_common::AsSelf for SourceMapCache (#742)
  • Debug information can now be retrieved from PE's with DWARF debug info. (#744)

Breaking changes:

  • Demangling functionality is removed from C and Python bindings. (#730)
  • The fields of FileInfo and the compilation_dir field on FileEntry are now private. (#729)
  • PortablePdbDebugSession now has a lifetime parameter. (#729)
  • PeDebugSession placeholder has been removed. (#744)

Thank you:

Features, fixes and improvements in this release have been contributed by:

10.2.1

Features:

  • PortablePdbCache now implements Clone, PartialEq, Eq, and AsSelf. (#726, #727)

10.2.0

Features:

  • Add inlinee overlap checks in symbolic-debuginfo. (#718)

Fixed:

  • Ensure proper inlinee nesting in symbolic-debuginfo. (#720)
  • Split lines in more cases in symbolic-debuginfo. (#717)

Internal

  • Add a debuginfo_debug example. (#716)
  • Update js-source-scopes to 0.3.1. (#721)

10.1.5

Internal

  • Update js-source-scopes to 0.3.0. (#715)

10.1.4

Internal

  • Update js-source-scopes to 0.2.2. (#714)

10.1.3

Internal

  • Python/CABI bindings will use a tempfile instead of holding SourceMapCache in memory. (#711)

10.1.2

Internal

  • Updated goblin, cpp_demangle and wasmparser dependencies. (#709)

10.1.1

Fixed:

  • Rebuild C headers for SourceMapCache to expose token name (#704)

10.1.0

Features:

  • Add name to SourceMapCacheToken Python bindings (#703)

10.0.0

Features:

  • Added an Object type for Portable PDB files. (#696)
  • Version 2 of the sourcemapcache format additionally saves the names of source locations. (#698)

9.2.1

Fixes:

  • Fixed a bug in Unreal Engine log parsing by updating the anylog dependency. (#695)

9.2.0

Features:

  • Added a new sub-crate for working with JavaScript SourceMaps: symbolic-sourcemapcache. (#688)
  • This new sourcemap handling is also exposed via the symbolic Python bindings.
  • The new version 8 of the symcache format saves strings slightly more compactly. Reading of version 7 is still supported. (#670)
  • symbolic-ppdb incorporated into symbolic (behind the ppdb feature flag) (#687)

Internal:

  • Use the watto library for de/serialization of symcache and ppdbcache. (#670)

9.1.4

Fixes:

  • Be more lenient when eagerly parsing DWARF Abbreviations. (#685)

9.1.3

Fixes:

  • Be stricter about demangling only _Z prefixed C++ names. (#681)
  • Work around a pathological case in DWARF processing that could lead to slowness and high memory usage. (#683)

9.1.2

Fixes:

  • Correctly resolve the DW_AT_producer attribute of DWARF files (#676)
  • Improve _sigtramp workaround and explanation (#662)
  • Slightly lower demangling recursion limit (#655)

9.1.1

Fixes:

  • Allow underflows in Windows x64 CFI to allow restoring registers from outside of the current stack frame. (#645)
  • Rework the SymCache Writer for correctness. (#648)
  • Undecorate Windows symbols when writing SymCache. (#649)
  • Correctly use the .debug_addr section needed for DWARF5. (#652)

Internal:

  • Remove outdated and unused il2cpp/usym-related code. (#650)

Thank you:

Features, fixes and improvements in this release have been contributed by:

9.1.0

Features:

  • Added a new subcrate for working with Portable PDB files: symbolic-ppdb (#621)
  • Added support for breakpad sym files containing INLINE_ORIGIN and INLINE records. (#605)
  • Most function names from PDBs will now include function arguments. (#426)

Fixes:

  • Improved DWARF handling to create more consistent inlinee and line information. (#607, #633)
  • Improved PDB handling to include more symbols and create more consistent inlinee and line information. (#622, #627, #636, #641)
  • Fixed a typo in DWARF 5 addrx parsing which caused incorrect address ranges. (#608)
  • symcache generation now handles more cases of line / inlinee information correctly. (#637)
  • Improved arm64 CFI for macOS system libraries by translating UnwindOp::None into trivial CFI. (#619)
  • Improved arm64 CFI for macOS _sigtramp by restricting a workaround to x86_64. (#625)
  • Improved MIPS CFI by always generating .ra CFI. (#612)
  • Fixed il2cpp lookup to discard information for unrelated lines. (#617)
  • Leading underscores are no longer stripped from PDB symbols. (#642)
  • MSVC demangled functions now look more visually pleasing. (#640)
  • Updated wasmparser dependency to 0.85.0. (#624)

9.0.0

Breaking changes:

  • Updated the debugid dependency to 0.8.
  • Updated the uuid dependency to 1.0.
  • Updated the pdb dependency to 0.8.
  • Removed the public method symbolic_common::CpuFamily::cfi_register_name.
  • The symbolic-minidump crate has been dropped. The CFI functionality that was contained in symbolic-minidump now resides in its own crate, symbolic-cfi.
  • The symbolic-unwind crate has been dropped.
  • The symbolic-sourcemap crate has been dropped. Since it was only used in symbolic-cabi, its functionality has been incorporated into symbolic-cabi.
  • Support for symcache versions before v7 has been dropped. This entails a number of changes in the public API of symbolic-symcache:
    • Removed support for symcache binary formats prior to v7.
    • Removed SymCacheWriter.
    • Removed SymCacheError.
    • Removed SymCacheErrorKind.
    • Removed Line.
    • Removed Lines.
    • Removed LineInfo.
    • Removed Lookup.
    • Removed Function::id.
    • Removed Function::parent_id.
    • Removed Function::address.
    • Removed Function::symbol.
    • Removed Function::compilation_dir.
    • Removed Function::lines.
    • Removed SymCache::has_line_info.
    • Removed SymCache::has_file_info.
    • Changed return type of Function::name to string slice.
    • Changed return type of SymCache::lookup to SourceLocations.
    • Added Function::name_for_demangling with the previous signature and behavior of Function::name.
    • Added Function::entry_pc.
    • Added SymCacheConverter.
    • Added Error.
    • Added ErrorKind.
    • Added File.
    • Added Files.
    • Added FilesDebug.
    • Added FunctionsDebug.
    • Added SourceLocation.
    • Added SourceLocations.
    • Added SymCache::files.
    • Added lifetime parameter to Transformers.
    • Undeprecated Function and Functions.
    • Undeprecated SymCache::functions.
  • Some C and Python bindings have been dropped or adjusted. Concretely:
    • symbolic-cabi::minidump and the corresponding Python functionality has been removed. The CFI functionality that was contained therein now resides in symbolic-cabi::cfi and symbolic.cfi, respectively.
    • symbolic-cabi::unreal and the corresponding Python functionality has been removed.
    • symbolic-cabi::symcache::SymbolicLineInfo has been replaced with SymbolicSourceLocation, which has a different interface. Likewise, symbolic.symcache.LineInfo has been replaced with SourceLocation.
    • symbolic-cabi::symcache::symbolic_symcache_has_file_info and symbolic_symcache_has_line_info have been removed, likewise for symbolic.symcache.SymCache.has_line_info and has_file_info.

8.8.0

Features:

  • Optionally collect referenced C# file sources when creating a source bundle. (#516)

Fixes:

  • Only skip one function when encountering unknown Unwind Codes on Windows x64. (#588)
  • Skip over low_pc sentinels instead of erroring. (#590)

8.7.3

Fixes:

  • Make CFI generation for Windows x64 more accurate, restoring all possible registers and supporting frame pointer unwinding. (#549)

8.7.2

Fixes:

  • Make sure to correctly parse Unreal crash reports with zero-length files (#565)

8.7.1

Fixes:

  • Updated wasmparser dependency to 0.83.0 (#557)
  • Updated rust-sourcemap dependency to hopefully speed up sourcemap parsing (#559)
  • Match symbol names by exact addresses from symbol table (#510)
  • Return a more correct function_size when dealing with split functions (#522)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.7.0

Features:

  • Added a new SymCache Transformer, which can be used to apply Function or SourceLocation transformations. (#496)
  • Turn the breakpad-based minidump processor into an optional feature flag. (#519)

Fixes:

  • Fixed CFI STACK WIN records being written correctly. (#513)
  • Do not consider empty files as valid BcSymbolMaps anymore. (#523)
  • Fix wasm parsing rejecting valid wasm files with non-default features. (#520)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.6.1

Fixes:

  • Update goblin which received fixes to avoid panics and unreasonable memory allocations based on invalid input. (#503)
  • Fix wrong instruction addresses of the first frame in ARM and ARM64 minidumps. The addresses were incorrectly incremented by one instruction size. (#504)
  • Correctly skip ELF sections with an offset of 0 instead of ignoring all following sections. This bug may have lead to missing unwind or debug information. (#505)
  • Detect unwind information when linking with gold. (#505)

8.6.0

Features:

  • Added a new SymCache binary format which is fundamentally based around instruction addr ranges.
  • Add ElfObject::debug_link that allows recovering the debug link from an Elf if present. (#450)
  • Updated Swift demangler to 5.5.1. (#465)
  • Support split functions. (#441)
  • Refactor symbolic-debuginfo feature flags. (#470)
  • Rewrite wasm parser. (#474)

Fixes:

  • Make SourceBundle ordering deterministic. (#489)
  • Replace unmaintained dependencies.
  • Better guard against invalid input that could lead to unreasonable memory allocations, panics or infinite loops.

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.5.0

Features:

  • Add ByteView::map_file_ref constructor which does not consume the File passed to it. (#448)

Fixes:

  • Support Unreal Engine 5 crash reporter. (#449)

8.4.0

Features:

  • Add Unreal4Crash::parse_with_limit which allows specifying a maximum allocation size when extracting compressed UE4 crash archives. (#447)

Fixes:

  • Apply speculative handling of stackless functions only on amd64 when creating CFI caches. (#445)

8.3.2

Features:

  • Build and publish binary wheels for arm64 / aarch64 on macOS and Linux. (#442)

Fixes:

  • Don’t prefix ARM registers with $ for CFI files. (#443)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.3.1

Fixes:

  • Avoid panic when looking for hex suffixes in multibyte character strings in the demangler. (#430)
  • Allow processing of ELF files as long as they have valid program and section headers. (#434)
  • Expose dynamic symbols in ELF files. (#421)
  • Make dsym_parent accept .framework.dSYM. (#425)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.3.0

Features:

  • Write versioned CFI Cache files. Reading those files is only supported with symbolic versions >= 8.2.1, so trying to use a CFI Cache file with an older version of symbolic will fail with a CfiErrorKind::BadFileMagic error.

Fixes:

  • Correctly restore callee saves registers when using compact unwind info.
  • Correctly map all DWARF information when using BcSymbolMaps.
  • Allow processing of PDB files that have broken inlinee file references.
  • Skip duplicated DWARF functions which can lead to inline parent offset overflows.

8.2.1

Features:

  • Add support for reading versioned CFI Cache files.

Fixes:

  • Avoid quadratic slowdown when using compact unwind info on macOS.

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.2.0

Caution:

  • Relevant dependencies such as gimli, goblim, and wasm-related libraries were updated.

Features:

  • Support for compact unwind info in MachO files was added, along with special casing of some well known macOS system functions.
  • The parser of the Breakpad Format was rewritten.

Bug Fixes:

  • All valid STACK WIN record types are being parsed correctly. This did add new variants to the BreakpadStackWinRecordType enum. Technically a breaking change, but we do not consider the Breakpad Parser types as adhering to strict SemVer rules.

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.1.0

Features:

  • Add support for loading BCSymbolMaps into MachObjects to un-obfuscate symbol names in bitcode builds. (#336)

Bug Fixes:

  • Handle too many files more gracefully. (#374)
  • Parse .pdb files containing modules without symbols. (pdb#102)

8.0.5

Bug Fixes:

  • Fix detecting hidden Swift symbols in MachObject::requires_symbolmap. Additionally, the MachO symbol iterator no longer strips underscores from __hidden# symbols. (#316)

8.0.4

Manylinux2010 has dropped support for Python 2.7. As a result, we're no longer building or testing the Python package with Python 2.7. This and future releases require at least Python 3.6.

Bug Fixes:

  • Compute correct line offsets in symcaches with large gaps between line records. (#319)
  • Support symcache lookups for public symbols larger than 65k. (#320)
  • Fixed bug that caused functions to have a length of 0 in symcaches. (#324)
  • Support debug_addr indexes in DWARF functions. (#326)

8.0.3

Bug Fixes:

  • Support DWARF information from MIPS compilers in SHT_MIPS_DWARF sections. (#317)
  • Remove a duplicate dependency to two versions of walrus for WASM parsing. (#312)

8.0.2

Bug Fixes:

  • Include third-party submodules to allow the Python sdist to build again. (#310)

8.0.1

Bug Fixes:

  • Compute correct debug identifiers when proessing a Minidump from a machine with opposite endianness. This particularly allows to process MIPS minidumps on little-endian hosts. (#281)
  • Update the breakpad processor with better stack scanning heuristics. Some false-positive frames are avoided during stack scanning now. (#281)
  • Avoid panics when processing UE4 crash logs containing ambiguous local times. (#307)

8.0.0

Breaking Changes:

  • Usage of failure was removed, and all error types were changed to only implement std::error::Error and related traits.
  • symbolic-proguard was removed in favor of the proguard crate. Proguard is still supported via symbolic-cabi and the python API however.
  • Deprecated APIs have been removed:
    • InstructionInfo's fields are no longer public.
    • pointer_size, instruction_alignment and ip_register_name have moved from Arch to CpuFamily.
    • Arch::register_name as been moved to CpuFamily::cfi_register_name.
    • Dwarf::raw_data and Dwarf::section_data have been replaced with the raw_section and section APIs.
    • Unreal4ContextRuntimeProperties::misc_primary_cpu_brand is has been removed.
  • Deprecated Python APIs have been removed:
    • CodeModule.id and CodeModule.name Use debug_id and code_file, respectively.
  • DemangleFormat and public fields of DemangleOptions have been removed in favor of builder methods on DemangleOptions.
  • Name::new now takes both the NameMangling state, and the Language explicitly.

Features:

  • Add support for the wasm32 architecture. (#166)
  • Support demangling for Swift 5.3. (#282)

Bug Fixes:

  • Detect mangled anonymous namespaces in PDB inlinees (#261)
  • Fix a panic due to undefined behavior. (#287)
  • Skip line program sequences at 0. (#291)
  • Prefer DWARF names for Dart functions. (#293)

7.5.0

Changes:

  • Add missing unreal data attributes (EngineData and GameData). (#257)
  • Expose binary names for ELF and MachO (#252)
  • Mark enums as non_exhaustive. (#256)
  • Add method to create Archive from bytes. (#250)

Bug Fixes:

  • Fix compilation errors on nightly Rust due to a lifetime mismatch. This is temporarily solved with a statically verified unsafe transmute, which will be replaced in an upcoming breaking change. (#258)

7.4.0

Deprecations:

  • pointer_size, instruction_alignment and ip_register_name have moved from Arch to CpuFamily.
  • Arch::register_name as been moved to CpuFamily::cfi_register_name.
  • Field access on InstructionInfo has been deprecated and replaced with a builder.

Changes:

  • More detailed documentation and examples on all types and functions in symbolic-common. (#246)

Bug Fixes:

  • CpuFamily::cfi_register_name returns None instead of Some("") for some unknown registers.
  • Update cpp_demangle again after the previous release was yanked. (#247)

7.3.6

Bug Fixes:

  • Update the cpp_demangle dependency to fix broken builds after a breaking change. (#244, thanks @o0Ignition0o)

7.3.5

Bug Fixes:

  • Update the proguard dependency to fix line info detection. (#242)

7.3.4

Deprecations:

  • symbolic-proguard is now deprecated and will be removed in the next major release. Use the proguard crate directly. The C-bindings and Python interface will remain. (#240)

Python:

  • Switch the C-ABI and python to proguard 4.0.0 which supports frame remapping. (#240)

Bug Fixes:

  • Fix broken links in docs on ByteView, SelfCell and AsSelf. (#241)

7.3.3

Bug Fixes:

  • Update broken doc comments for SelfCell and debuginfo::dwarf (#238)
  • Fix holes in line records of inline parents in DWARF (#239)

7.3.2

Bug Fixes:

  • Fix line information of inline parents in DWARF (#237). Many thanks to @calixteman!

7.3.1

Bug Fixes:

  • Skip invalid PE runtime function entries (#230)
  • Support demangling of block invocation functions (#229)
  • Skip invalid CFI entries instead of erroring out (#232)
  • Detect stub DLLs and skip CFI generation (#233)
  • Skip functions with unknown unwind codes (#234)
  • Update goblin to fix panics in PE unwinding (#231)
  • Update gimli to to support eh_frame CIE version 3 (#231)
  • Update cpp_demangle (#231)

7.3.0

Build Changes:

To build with the demangle feature, a C++14 compiler is now required.

Features:

  • Support Swift 5.2 mangling (#208)
  • Inline docs from sub-crates (#209)
  • Add Path utilities for dSYM structures (#212)
  • Updated C++ demangler (#215)

Bug Fixes:

  • Do not error in functions iterator on name errors (#201)
  • Avoid infinite recursion in DWARF because of self references (#202)
  • Do not skip symbols from SHT_NOBIT sections (#207)
  • Do not assume sorted DWARF compilation units (#214)
  • Skip eliminated functions in linked objects (#216)
  • Avoid panics for UTF-8 characters in paths (#217)
  • Get CFI info from eh_frame even if err in debug_frame (#218)
  • Avoid TooManyRegisterRules errors in CFI (#219)
  • Calculate correct line record sizes for DWARF (#220)
  • Detect all scopes to fix incorrect inlinee hierarchies (#221)
  • Patch all parent line records of inlinees in DWARF (#223)
  • Fix broken compilation with -Clink-dead-code (#225)
  • Return the same instruction address for inlinees in symcaches (#226)

7.2.0

Features:

  • Upgrade UUID-related dependencies (#199)

7.1.1

Features:

  • Implement serde::{Deserialize, Serialize} for ProcessResult (#188)
  • Implement serde::{Deserialize, Serialize} for Name (#191)
  • Update the gimli, goblin and pdb libraries (#196)

Bug Fixes:

  • Do not skip DWARF units with a DW_AT_low_pc of 0 (#173)
  • Search for MachO sections in all segments (#173)
  • Fix processing Hermes source maps with non-hermes stack frames (#189)
  • Fix decompression of GNU compressed debug sections (.zdebug_info) (#192)

7.1.0

This release is not available on crates.io

Features:

  • Support skipping over files when creating source bundles (#167)
  • Support for React Native Hermes source maps (#187)

Bug Fixes:

  • Resolved an error in processing DWARF CFI
  • Resolved an error reading ELF fiels with stripped PT_DYNAMIC header
  • Support for Breakpad functions without names
  • Multiple fixes in PDB and PE file processing
  • Fix compilation with MSVC (#164)
  • Added unmapped MachO object types (#169)
  • Proper detection for ELF stripped debug companion files (#170)
  • Detect Java class files which share the same magic as MachO files (#172)
  • Fix memory leaks in the python binding (#180)

7.0.0

This release is not available on crates.io

New Features:

  • A new API to parse Unreal Engine 4 Crash reports (#152).
  • Source bundles to resolve source code for stack frames (#154).
  • Inline functions for Microsoft PDBs (#160).
  • Improved demangling of C++ symbols.

Bug Fixes:

  • Resolved unexpected EOF when parsing certain PDBs.
  • Restored compatibility with Python 3 (#158).

6.1.4

Common:

  • Add ARM64_32 (ILP32 ABI on 64-bit ARM) (#149).
  • Support architecture names from apple crash reports (#151).

DebugInfo:

  • Fix invalid memory addresses for some ELF files (#148).
  • Prefer a PDB's age from the DBI stream (#150).
  • Do not emit default CFI for the .ra register (#157).

Minidump:

  • Fix a memory leak when processing minidumps (#146).

SymCache:

  • Add is_latest() to symcaches and CFI caches.
  • Support functions with more than 65k line records (#155).

6.1.3

Common:

  • Support MIPS and MIPS64 (#141).

DebugInfo:

  • Fix code identifiers for PE files and do not return empty ones (#139, #142).
  • Support Breakpad debug identifiers without an age field (#140).
  • Add Archive::is_multi to check for multi-architecture archives (#143).

Minidump:

  • Add more trait implementations to minidump processor types.
  • Process minidumps without thread lists (#144).
  • Update the breakpad processor. This allows to stackwalk Unreal Engine 4 minidumps (#145).

6.1.2

  • Demangling support for Swift 5.
  • Fix a performance regression in 6.1.1

6.1.1

  • Expose PDB file names from PE object files.
  • Fix incorrect CFI extraction from ELF files.
  • Fix broken symcache lookups for certain optimized files.

6.1.0

  • Support PDB file and line information.
  • Support stack unwind info in PDB files (32-bit).
  • Support stack unwind info in PE files (64-bit).
  • Fix breakpad CFI generation for functions pushing machine frames.

6.0.6

  • Add normalize_code_id in the Python package and C layer.
  • Add ByteView::map_file to create a memory map directly from a file handle.
  • Add size attribute to streams returned from Minidumps / UE4 crash reports.

6.0.5

  • Normalize code identifiers to lowercase (#133).

6.0.4

  • Exposes code identifiers and debug file names for minidumps in Python. Previously, this was only available in the Rust Crate.
  • ObjectLookup now supports code_file and debug_id in in Python.

6.0.3

Re-release on crates.io.

6.0.2

This release is broken on crates.io

  • Fix Rust features: The serde feature activated minidump and unreal unintentionally. This is addressed by providing separate features for modules with serde. See the Readme for more information.
  • Include breakpad sources in symbolic-minidump.

6.0.0

This is a complete rewrite of symbolic. The aim of this release is to make the Rust version, the C-API and the Python package more convenient to use in different scenarios. As a result, there have been quite a few breaking changes.

Breaking Changes:

  • ByteViewHandle has been replaced with the slightly safer type SelfCell. It allows to create a self-referential pair of an owning object and a derived object.
  • Archive and Object are the new types to interface with debug information. There are also direct types exposed for Breakpad, ELF, MachO, PE and PDB; as well as traits to abstract over them.
  • SymCache has a cleaner API, and the writing part has been moved to SymCacheWriter.
  • Some common types have received better names: ObjectKind is now called FileFormat. ObjectClass is now called ObjectKind.
  • Many more small signature changes, such as zero-copy return values or iterators instead of collections.

New Features:

  • Initial support for PE and PDB is here. It is not complete yet, and will be expanded over the next releases.
  • Symbol tables for ELF are now supported. On the bottom line, this will improve symbolication results on Linux.
  • GNU-style compressed debug information (e.g. .zdebug_info) is now supported.
  • Support for most of DWARF 5, thanks to the amazing work on the gimli crate.
  • More lenient parsing of Breakpad symbols now handles certain edge cases more gracefully and gives much better error messages.
  • More utilities to join or split paths from any platform.

Bug Fixes:

  • Fix invalid function name resolution for certain DWARF files.
  • Fix errors on DWARF files generated with LTO.
  • Fix memory leaks when processing Minidumps from Python.
  • Skip STAB symbol entries in MachO files, potentially leading to wrong function names.
  • Do not error on "negative" line numbers in Breakpad symbols.

Internal Changes:

  • Greatly simplified build process and better documentation for the C library.
  • Improved test suite, docs and READMEs. While there can never be enough tests, this is a significant step to improving the overall quality of symbolic.
  • Automatic cloning of submodules during the build. This should make it easier to start developing on symbolic.