Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add DWARF unwinding, and an external debug info loader for ELF #15823

Merged
merged 81 commits into from Jul 21, 2023

Conversation

kcbanner
Copy link
Contributor

@kcbanner kcbanner commented May 22, 2023

This supercedes (and includes the changes from) #15531.

These changes were developed in tandem with this PR, which might be a good reference for reviewers: kubkon/zig-dwarfdump#1

Closes #13114

Stack unwinding using DWARF unwind info

This change allows stacks to be unwound (and thus stack traces printed) for code that is compiled without -fomit-frame-pointer. This is accomplished by utilizing the DWARF debug info that is written into the .eh_frame section (or .debug_frame section). Conceptually, those sections contain a large lookup table mapping program addresses to a set of rules per-register that allow you to recover the value of that register in the previous frame - this allows you to recover the return address and previous stack frame values. Instead of actually storing the full lookup table (which would be large), it's stored as a set of instructions (not native code, but a special DWARF CFI bytecode), that allow you to build this table as needed. This system is how libunwind and debuggers themselves can unwind stacks.

This system is described in section 6.4.1 of this document: https://dwarfstd.org/doc/DWARF5.pdf

The overall motivation for this PR is to have zig's stack trace output be at least as good as gdb.

Changes:

  • Added parsers for the information contained in .eh_frame, .eh_frame_hdr, and .debug_frame. I've utilized zig-dwarfdump as a testbed for the parsers (see linked PR above), and it's able to output an exact match of llvm-dwarfdump for Ubuntu's libc currently.
  • Added dwarf.call_frame.VirtualMachine which can run the CFI instructions and build the aforementioned register-rule lookup table.
  • Updated debug.StackIterator to utilize the DWARF debug info to unwind the stack, if it is available. It falls back to standard FP-based unwinding if it encounters any errors or missing info. I've tried to have the unwinder fail gracefully as much as possible. For example, a bad subtraction or overflow while running the DWARF opcodes (potentially due to malformed debug info) results in an error and fallback to FP unwinding instead of panicing while panicing.
  • Added support for DWARF5 DW_AT_ranges in subprograms. Some DWARF5 subprograms have non-contiguous instruction ranges. An example of such a function is puts in Ubuntu's libc. Stack traces now include the names of these functions.
  • Additional output while printing the stack trace to notify the user that debug info is missing, and may influence the accuracy of the output. For example, if the user is using a libc compiled with -fomit-frame-pointer and doesn't have debug symbols installed, any traces that begin in a libc function may not unwind correctly. This change allows the user to notice this and potentially install debug symbols to improve the output.
  • Added getcontext implementations for x86-linux and x86_64-linux. If linking libc, then the system provided implementation is used, with the exception of -musl which doesn't provide getcontext. These are used to get a register context to unwind stacks via a @panic (vs a segfault handler, where the OS provides the context). Support for additional platforms is straightforward to add and once this is merged I want to open contributor-friendly issues to add support for the other major platforms that I don't have access to.

An example of how this improves the output, in this case calling puts with a bad pointer:

Before:

Segmentation fault at address 0x1234
???:?:?: 0x7f71d9ec997d in ??? (???)
/home/kcbanner/kit/zig-linux-x86_64-0.11.0-dev.3909+9e0ac4449/lib/std/start.zig:608:37: 0x20a505 in main (main)
            const result = root.main() catch |err| {
                                    ^
Aborted

After:

Segmentation fault at address 0x1234
../sysdeps/x86_64/multiarch/strlen-avx2.S:74:0: 0x7f0a1ad3a97d in ??? (../sysdeps/x86_64/multiarch/strlen-avx2.S)
./libio/ioputs.c:35:16: 0x7f0a1ac1dee7 in _IO_puts (ioputs.c)
src/lib.c:6:5: 0x7f0a1adcf4aa in add_mult3 (/home/kcbanner/temp/stack/src/lib.c)
    puts((const char*)0x1234);
    ^
src/lib.c:11:12: 0x7f0a1adcf542 in add_mult2 (/home/kcbanner/temp/stack/src/lib.c)
    return add_mult3(x, y, n);
           ^
src/lib.c:15:12: 0x7f0a1adcf572 in add_mult1 (/home/kcbanner/temp/stack/src/lib.c)
    return add_mult2(x, y, n);
           ^
src/lib.c:19:12: 0x7f0a1adcf5a2 in add_mult (/home/kcbanner/temp/stack/src/lib.c)
    return add_mult1(x, y, n);
           ^
/home/kcbanner/temp/stack/src/main.zig:6:45: 0x2118b7 in main (main)
    std.debug.print("add: {}\n", .{ add_mult(5, 3, null) });
                                            ^
/mnt/c/cygwin64/home/kcbanner/kit/zig/lib/std/start.zig:608:37: 0x211ea5 in main (main)
            const result = root.main() catch |err| {
                                    ^
../sysdeps/nptl/libc_start_call_main.h:58:16: 0x7f0a1abc6d8f in __libc_start_call_main (../sysdeps/x86/libc-start.c)
../csu/libc-start.c:392:3: 0x7f0a1abc6e3f in __libc_start_main_impl (../sysdeps/x86/libc-start.c)
???:?:?: 0x211874 in ??? (???)
Aborted

Output when unwinding stack beginning in a libc without frame pointers, on a system that doesn't have debug info installed for libc (in this example, running an x86 program when there is only x86_64 libc symbols available). Note that the unwound stack skips several frames (due to missing unwind info), but the user is notified of this:

Segmentation fault at address 0x1234
???:?:?: 0xf7db0555 in ??? (libc.so.6)
Unwind information for libc.so.6 was not available, trace may be incomplete

src/lib.c:6:5: 0xf7f3c3c8 in add_mult3 (/home/kcbanner/temp/stack/src/lib.c)
    puts((const char*)0x1234);
    ^
/mnt/c/cygwin64/home/kcbanner/kit/zig/lib/std/start.zig:608:37: 0x40f408 in main (main)
            const result = root.main() catch |err| {
                                    ^
Aborted

Stack unwinding on Darwin using __unwind_info

Apple has their own proprietary unwind info format: https://faultlore.com/blah/compact-unwinding/. It works in a similar way to the DWARF unwind tables, but it's a bit less general. StackIterator will attempt to use this unwind info on macos, if it's available. The format supports falling back to DWARF unwinding, which is also supported in this implementation.

If only DWARF information is available then normal FP stack unwinding is used, because in this case I observed that the DWARF unwind info for some functions was incorrect. Specifically, certain FDEs would have instruction ranges that spanned functions that they shouldn't have.

On aarch64, Apple requires that the frame pointer be used. On x86_64, this isn't the case.

Now that we support unwind tables, I've updated target.needUnwindTables to return true for ofmt = .macho.

External debug info

Some distributions (ie. Ubuntu) have their libc debug info in separate files. This scheme allows for shipping debug info separately, which, can save space if the user doesn't actually need to debug the program / library. I've added support for reading external debug info:

  • Add support for reading compressed ELF sections
  • Support reading the build-id from the elf headers in order to lookup external debug info
  • Support reading the .gnu_debuglink section to look up external debug info
  • Rework how sections are loaded from disk in order to support merging the list of sections that are present in the binary itself and the ones from the external debug info.
  • Fixed up some memory management issues with the existing system.

As an example, in the stack traces above, their debug info actually comes from /usr/lib/debug/.build-id/69/389d485a9793dbe873f0ea2c93e02efaa9aa3d.debug.

Other changes

  • As part of reworking the way debug sections were loaded, I modified the code that handles DWARF inside COFF (ie. -gdwarf). I added a test to cover this scenario.

Remaining Work

This is a work in progress, but it's at the point where I'd like to get it running against the CIs for arches / OSes I don't have access to, so this will be in draft status until these items are complete:

  • Support x86-linux
  • Support x86_64-linux
  • Support x86-windows (DWARF embedded in COFF)
  • Support x86_64-windows (DWARF embedded in COFF)
  • Support aarch64-windows
  • Support x86_64-macos (add __unwind_info support)
  • Support aarch64-macos (add __unwind_info support). Deferring this to a future PR. Since Apple mandates that the FP be used on this platform, most traces will unwind fine with the FP-based StackIterator. I ran into what I suspect is a bug in the CFI generation on this platform, but haven't confirmed this yet.
  • Figure out a way to build test cases for exercising the FDE/CIE parsers
  • Parse the .eh_frame_hdr section. This is an optimization that will speed up unwinding - it contains a sorted lookup table for the information in .eh_frame, which is binary searchable.
  • Not all sections need to be read from disk (ie. eh_frame and eh_frame_hdr are already mapped into the program's address space). Support using these already-mapped sections directly. This is particularly important for things that just measure stack traces and don't need to write them yet (ie. GPA capturing backtraces - with this improvement it could support -fomit-frame-pointer traces without touching the disk).
  • Support .debug_frame. This is a very similar section to .eh_frame with some slight changes.
  • Update all uses in std of StackIterator to use the DWARF unwinding version, if available. I'm going to address this in a future PR. I've addressed all uses except for captureStackTrace, which doesn't have access to an allocator, which is currently required for the unwinder.
  • Implement the DWARF expression interpreter. Expressions are another type of bytecode that are used to encode certain register values. Currently expressions and their operands are parsed, but the interpreter itself doesn't have any logic yet. This PR will implement at least enough expression opcodes to run all CFA expressions.

Thanks to @jacobly0 for the help debugging aarch64-macos, and @kubkon for answering all my linker questions!

Renamed dwarf_unwinding -> stack_iterator to better reflect that it's not just DWARF unwinding.
Added a test for unwinding with a frame pointer.
debug: handle the possibility of eh_frame / debug_frame being mapped in memory or loaded from disk
dwarf: fixup unchecked .eh_frame CIE offset subtraction
@kubkon kubkon merged commit 61d5b7c into ziglang:master Jul 21, 2023
10 checks passed
Copy link
Member

@andrewrk andrewrk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you share a performance measurements of how long the compiler takes to build "hello, world" before and after this change?

Comment on lines +416 to +422
pub usingnamespace if (builtin.os.tag == .linux and builtin.target.isMusl()) struct {
// musl does not implement getcontext
pub const getcontext = std.os.linux.getcontext;
} else struct {
pub extern "c" fn getcontext(ucp: *std.os.ucontext_t) c_int;
};

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need for this usingnamespace. Just put the definition here and let the linker tell the user that the symbol does not exist. The user should do this logic themselves if they want to reach into Linux directly.

This is the std.c namespace after all, it should not pretend to be libc and then do something else.

@andrewrk
Copy link
Member

image

I'm seeing massive compilation speed regression in compiling hello world from these changes. Can you double check your usage of comptime and try to reduce the harm here?

If it's needed I can work on -ftime-report to make this process easier but I have a lot of other things to do before the release.

@IntegratedQuantum
Copy link
Contributor

I did a small analysis. It seems that the binary size of an empty program grew by over 400 kB.
The biggest offender seems to be dwarf.call_frame.Instruction.read with 64 kB, probably caused by inline cases in the switch.
Here is a list of all the functions of an empty program sorted by size. Hope this helps fixing the compile time:

Expand
64444 dwarf.call_frame.Instruction.read
37823 sort.block.block__anon_8272
29443 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).step
20427 dwarf.DwarfInfo.getLineNumberInfo
14407 debug.readElfDebugInfo
10011 dwarf.call_frame.VirtualMachine.step
 8153 dwarf.DwarfInfo.scanAllFunctions
 7982 dwarf.DwarfInfo.unwindFrame
 7587 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).readOperand
 7346 dwarf.parseFormValue__anon_6621
 7327 dwarf.parseFormValue__anon_6936
 7075 hash.wyhash.Wyhash.hash
 5949 dwarf.CommonInformationEntry.parse
 5575 dwarf.DwarfInfo.scanAllCompileUnits
 5443 hash.adler.Adler32.update
 5439 dwarf.DwarfInfo.DebugRangeIterator.next
 5373 dwarf.ExceptionFrameHeader.findEntry
 4948 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).huffmanBlock
 4823 fs.path.joinSepMaybeZ__anon_6468
 4723 dwarf.readEhPointer__anon_6963
 4394 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).readHuffman
 4150 compress.deflate.decompressor.HuffmanDecoder.init
 4054 dwarf.DwarfInfo.scanAllUnwindInfo
 3737 dwarf.call_frame.Instruction.readOperands
 3291 dwarf.call_frame.VirtualMachine.Column.resolveValue
 3250 dwarf.DwarfInfo.parseAbbrevTable
 2847 dwarf.FrameDescriptionEntry.parse
 2465 dwarf.Die.getAttrString
 2407 dwarf.DwarfInfo.DebugRangeIterator.init
 2320 sort.block.mergeInto__anon_8654
 2260 dwarf.EntryHeader.read
 2246 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getOrPutInternal__anon_8270
 2200 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getOrPutInternal__anon_8269
 2192 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getOrPutInternal__anon_8271
 2183 dwarf.abi.regBytes__anon_8718
 2183 dwarf.abi.regBytes__anon_7591
 2133 debug.DebugInfo.lookupModuleDl__struct_5591.callback
 2067 dwarf.DwarfInfo.readDebugAddr
 1976 os.dl_iterate_phdr__anon_8683
 1976 os.dl_iterate_phdr__anon_5603
 1946 sort.block.mergeInternal__anon_8674
 1916 compress.deflate.dict_decoder.DictDecoder.writeCopy
 1896 fmt.formatInt__anon_9551
 1871 sort.block.mergeExternal__anon_8656
 1830 debug.printLineInfo__anon_7098
 1805 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).read
 1774 os.linux.tls.initTLS
 1737 heap.arena_allocator.ArenaAllocator.alloc
 1605 dwarf.LineNumberProgram.checkLineMatch
 1532 fmt.formatInt__anon_8705
 1532 fmt.formatInt__anon_8689
 1532 fmt.formatInt__anon_8473
 1514 debug.StackIterator.next_internal
 1492 fmt.formatInt__anon_7761
 1474 leb128.readILEB128__anon_6618
 1465 fmt.formatInt__anon_9448
 1452 fs.file.File.Stat.fromSystem
 1449 leb128.readILEB128__anon_6966
 1403 fmt.formatBuf__anon_8475
 1385 fmt.formatBuf__anon_7763
 1385 dwarf.DwarfInfo.parseDie__anon_6935
 1378 dwarf.DwarfInfo.parseDie__anon_6619
 1377 debug.DebugInfo.lookupModuleDl
 1353 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).huffSym
 1290 unicode.utf8CountCodepoints
 1281 compress.deflate.decompressor.fixedHuffmanDecoderInit
 1274 os.mmap
 1267 start.posixCallMainAndExit
 1267 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).allocate
 1257 dwarf.call_frame.VirtualMachine.runTo
 1255 fmt.formatInt__anon_9599
 1234 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getOrPutAssumeCapacityAdapted__anon_7089
 1218 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).setCapacity
 1216 os.linux.sigaction
 1216 compress.deflate.dict_decoder.DictDecoder.init
 1191 leb128.readILEB128__anon_6994
 1188 debug.getSymbolFromDwarf
 1154 debug.printLineFromFileAnyOs__anon_7127
 1137 fs.Dir.realpathZ
 1136 os.openatZ
 1130 dwarf.getStringGeneric
 1097 io.fixed_buffer_stream.FixedBufferStream([]u8).write
 1094 os.readlinkZ
 1075 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).copyData
 1074 debug.dumpStackTraceFromBase
 1069 unicode.utf8Decode4
 1048 debug.writeCurrentStackTrace__anon_7315
 1048 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).init
 1045 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).getAdapted__anon_8520
 1036 heap.arena_allocator.ArenaAllocator.resize
 1026 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getIndexAdapted__anon_7088
 1022 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).nextBlock
 1015 dwarf.parseFormValueRef__anon_8193
 1010 dwarf.parseFormValueRef__anon_8207
  988 os.write
  969 os.linux.tls.initStaticTLS
  966 dwarf.DwarfInfo.findCompileUnit
  961 fs.path.basenamePosix
  958 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getOrPutContextAdapted__anon_7006
  940 dwarf.FormValue.getUInt__anon_7133
  940 dwarf.FormValue.getUInt__anon_6913
  921 sort.block.findFirstBackward__anon_8671
  920 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).containsAdapted__anon_9017
  919 sort.block.findLastBackward__anon_8678
  916 sort.block.mergeInPlace__anon_8675
  912 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).insertAllEntriesIntoNewHeaderGeneric__anon_8251
  906 array_list.ArrayListAligned(u8,null).toOwnedSlice
  903 dwarf.LineNumberProgram.reset
  894 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).insertAllEntriesIntoNewHeaderGeneric__anon_8252
  890 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).insertAllEntriesIntoNewHeaderGeneric__anon_8250
  860 unicode.utf8Decode3
  860 io.fixed_buffer_stream.FixedBufferStream([]const u8).read
  856 sort.block.findLastForward__anon_8670
  855 compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).read
  854 sort.block.findFirstForward__anon_8677
  853 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).dataBlock
  845 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).run
  841 os.read
  837 compress.deflate.dict_decoder.DictDecoder.copy2
  830 dwarf.FormValue.getUInt__anon_7281
  825 compress.deflate.dict_decoder.DictDecoder.tryWriteCopy
  823 debug.writeStackTrace__anon_4602
  822 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).ensureTotalCapacityPrecise
  822 array_list.ArrayListAlignedUnmanaged(dwarf.Die.Attr,null).ensureTotalCapacityPrecise
  822 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).ensureTotalCapacityPrecise
  822 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).ensureTotalCapacityPrecise
  820 dynamic_library.linkmap_iterator
  819 dwarf.DwarfInfo.getAbbrevTable
  819 array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).ensureTotalCapacityPrecise
  819 array_list.ArrayListAlignedUnmanaged(dwarf.FrameDescriptionEntry,null).ensureTotalCapacityPrecise
  819 array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).ensureTotalCapacityPrecise
  819 array_list.ArrayListAlignedUnmanaged(dwarf.AbbrevTableHeader,null).ensureTotalCapacityPrecise
  815 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getSlotByKey__anon_8628
  808 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getSlotByKey__anon_8629
  807 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).deallocate
  805 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getSlotByKey__anon_8627
  799 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).putAssumeCapacityNoClobberContext
  799 debug.printSourceAtAddress__anon_4603
  799 compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).init
  782 array_list.ArrayListAligned(u32,null).ensureTotalCapacityPrecise
  782 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).ensureTotalCapacityPrecise
  779 array_list.ArrayListAligned(dwarf.FileEntry,null).ensureTotalCapacityPrecise
  779 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).ensureTotalCapacityPrecise
  772 dwarf.call_frame.VirtualMachine.getOrAddColumn
  769 dwarf.LineNumberProgram.init
  767 array_list.ArrayListAligned(u8,null).ensureTotalCapacityPrecise
  751 Thread.Futex.LinuxImpl.wait
  745 io.tty.Config.setColor__anon_7100
  743 os.toPosixPath
  716 mem.Allocator.allocBytesWithAlignment__anon_8577
  716 mem.Allocator.allocBytesWithAlignment__anon_8134
  716 mem.Allocator.allocBytesWithAlignment__anon_8103
  713 dwarf.UnwindContext.init
  709 sort.block.swap__anon_8653
  706 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).grow
  700 dwarf.call_frame.Operand.read__anon_9386
  698 dwarf.FormValue.getString
  693 dwarf.call_frame.Operand.read__anon_9349
  673 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).ensureTotalCapacityContext
  661 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value.asIntegral
  659 mem.Allocator.allocBytesWithAlignment__anon_8579
  657 debug.chopSlice
  645 array_hash_map.IndexHeader.alloc
  641 dwarf.call_frame.InstructionType(.{.register = .uleb128_register, .block = .block}).read
  639 fs.Dir.openFileZ
  625 debug.DebugInfo.lookupModuleNameDl__struct_8681.callback
  607 os.getFdPath
  605 os.linux.tls.prepareTLS
  605 debug.panicExtra__anon_8355
  605 debug.panicExtra__anon_8197
  605 debug.panicExtra__anon_7739
  605 debug.panicExtra__anon_4205
  605 debug.panicExtra__anon_3070
  605 debug.panicExtra__anon_3068
  587 mem.Allocator.free__anon_9603
  587 mem.Allocator.free__anon_9602
  587 mem.Allocator.free__anon_9601
  587 mem.Allocator.free__anon_9576
  587 mem.Allocator.free__anon_9571
  587 mem.Allocator.free__anon_9568
  587 mem.Allocator.free__anon_9559
  587 mem.Allocator.free__anon_9021
  587 mem.Allocator.free__anon_8949
  587 mem.Allocator.free__anon_8924
  587 mem.Allocator.free__anon_8582
  587 mem.Allocator.free__anon_8581
  587 mem.Allocator.free__anon_8249
  587 mem.Allocator.free__anon_8179
  587 mem.Allocator.free__anon_8178
  587 mem.Allocator.free__anon_7013
  586 os.fstat
  584 fmt.format__anon_8431
  580 io.reader.Reader(*compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))),error{OutOfMemory,EndOfStream,CorruptInput,BadInternalState,BadReaderState,UnexpectedEndOfStream,EndOfStreamWithNoError,Unsupported,WrongChecksum},(function 'read')).readAtLeast
  580 dwarf.call_frame.InstructionType(.{.register = .uleb128_register, .offset = .uleb128_offset}).read
  580 dwarf.call_frame.InstructionType(.{.register = .uleb128_register, .offset = .sleb128_offset}).read
  580 dwarf.call_frame.InstructionType(.{.register = .opcode_register, .offset = .uleb128_offset}).read
  569 io.writer.Writer(*io.fixed_buffer_stream.FixedBufferStream([]u8),error{NoSpaceLeft},(function 'write')).writeByteNTimes
  569 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readVarInt__anon_8604
  567 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).writeByteNTimes
  565 mem.Allocator.free__anon_6474
  565 mem.Allocator.free__anon_5967
  558 debug.mapWholeFile
  553 fmt.bufPrintZ__anon_8167
  552 heap.arena_allocator.ArenaAllocator.createNode
  551 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readUntilDelimiterAlloc
  542 heap.arena_allocator.ArenaAllocator.free
  541 dwarf.call_frame.applyOffset
  540 leb128.readULEB128__anon_7269
  540 leb128.readULEB128__anon_6562
  537 sort.insertionContext__anon_9016
  535 os.getenv
  533 leb128.readULEB128__anon_6929
  533 leb128.readULEB128__anon_6620
  525 fmt.format__anon_8299
  525 debug.panicImpl
  518 sort.binarySearch__anon_9072
  516 dwarf.Die.getAttrAddr
  513 debug.dumpSegfaultInfoPosix
  509 unicode.utf8Decode2
  509 math.sqrt.sqrt_int__anon_9011
  509 io.fixed_buffer_stream.FixedBufferStream([]const u8).seekBy
  507 mem.Allocator.resize__anon_9913
  507 mem.Allocator.resize__anon_9909
  507 mem.Allocator.resize__anon_9899
  507 mem.Allocator.resize__anon_9574
  507 mem.Allocator.resize__anon_9569
  507 mem.Allocator.resize__anon_9566
  507 mem.Allocator.resize__anon_9557
  507 mem.Allocator.resize__anon_9555
  507 mem.Allocator.resize__anon_9553
  507 mem.Allocator.resize__anon_9537
  507 mem.Allocator.resize__anon_9019
  507 mem.Allocator.resize__anon_8947
  502 sort.block.binaryLast__anon_9012
  501 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readAtLeast
  500 sort.block.binaryFirst__anon_8673
  492 sort.block.blockSwap__anon_8672
  479 mem.Allocator.resize__anon_8352
  478 dwarf.call_frame.InstructionType(.{.register = .uleb128_register, .target_register = .uleb128_register}).read
  478 debug.printUnwindError__anon_7597
  478 debug.dumpStackTrace
  473 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).streamUntilDelimiter__anon_7261
  463 debug.StackIterator.next_unwind
  463 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).appendSliceAssumeCapacity
  461 heap.PageAllocator.alloc
  460 dwarf.readAllocBytes__anon_8206
  458 leb128.readULEB128__anon_7262
  456 dwarf.readAllocBytes__anon_8192
  454 sort.block.Iterator.nextRange
  454 heap.PageAllocator.resize
  454 fmt.formatSliceHexImpl(.lower).formatSliceHexImpl__anon_8927
  454 dwarf.readUnitLength__anon_6933
  453 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).slice
  453 leb128.readULEB128__anon_7265
  452 mem.reverse__anon_9010
  450 dwarf.readUnitLength__anon_6514
  443 target.Target.Cpu.Arch.endian
  442 leb128.readULEB128__anon_6990
  441 array_list.ArrayListAligned(u8,null).appendSliceAssumeCapacity
  437 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).moreBits
  434 leb128.readULEB128__anon_7264
  433 leb128.readULEB128__anon_6995
  431 mem.Allocator.dupe__anon_6470
  429 mem.readVarInt__anon_8605
  428 debug.dumpCurrentStackTrace
  422 dwarf.readAddress__anon_8199
  417 dwarf.parseFormValueConstant__anon_8208
  415 dwarf.readAddress__anon_8181
  409 fs.Dir.realpath
  406 sort.block.Iterator.nextLevel
  402 debug.StackIterator.initWithContext
  401 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readStruct__anon_6113
  398 dwarf.parseFormValueConstant__anon_8194
  396 io.writer.Writer(*io.fixed_buffer_stream.FixedBufferStream([]u8),error{NoSpaceLeft},(function 'write')).writeAll
  396 io.writer.Writer(*array_list.ArrayListAligned(u8,null),error{OutOfMemory},(function 'appendWrite')).writeAll
  395 io.tty.detectConfig
  393 dwarf.call_frame.InstructionType(.{.block = .block}).read
  392 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).writeAll
  391 mem.Allocator.alloc__anon_6414
  391 mem.Allocator.alloc__anon_6401
  391 mem.Allocator.alloc__anon_6394
  391 mem.Allocator.alignedAlloc__anon_9914
  391 mem.Allocator.alignedAlloc__anon_9910
  391 mem.Allocator.alignedAlloc__anon_9900
  391 mem.Allocator.alignedAlloc__anon_9575
  391 mem.Allocator.alignedAlloc__anon_9570
  391 mem.Allocator.alignedAlloc__anon_9567
  391 mem.Allocator.alignedAlloc__anon_9558
  391 mem.Allocator.alignedAlloc__anon_9556
  391 mem.Allocator.alignedAlloc__anon_9554
  391 mem.Allocator.alignedAlloc__anon_9538
  391 mem.Allocator.alignedAlloc__anon_9020
  391 mem.Allocator.alignedAlloc__anon_8948
  391 mem.Allocator.alignedAlloc__anon_8353
  389 mem.Allocator.alignedAlloc__anon_7087
  389 mem.Allocator.alignedAlloc__anon_7012
  387 fmt.format__anon_8950
  387 debug.getSelfDebugInfo
  384 fmt.format__anon_8273
  383 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getAdapted__anon_8639
  368 heap.arena_allocator.ArenaAllocator.deinit
  362 os.flock
  359 os.abort
  358 os.raise
  355 dwarf.pcRelBase
  355 debug.StackIterator.next
  349 dwarf.call_frame.InstructionType(.{.offset = .uleb128_offset}).read
  349 dwarf.call_frame.InstructionType(.{.offset = .sleb128_offset}).read
  349 dwarf.call_frame.InstructionType(.{.address = .address}).read
  344 dwarf.DwarfInfo.Section.virtualOffset
  341 dwarf.Die.getAttrRef
  332 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getIndexWithHeaderGeneric__anon_8266
  332 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getIndexWithHeaderGeneric__anon_8265
  331 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getIndexWithHeaderGeneric__anon_8267
  329 mem.rotate__anon_8655
  328 unicode.utf8Decode
  328 dwarf.abi.regValueNative__anon_8717
  328 dwarf.abi.regValueNative__anon_7589
  325 sort.block.Iterator.init
  325 debug.StackIterator.isValidMemory
  325 compress.deflate.decompressor.HuffmanDecoder.deinit
  319 fs.Dir.openFile
  317 start.expandStackSize
  317 fmt.digitToChar
  313 dwarf.call_frame.InstructionType(.{.delta = .u16_delta}).read
  312 dwarf.call_frame.InstructionType(.{.delta = .u32_delta}).read
  311 array_hash_map.IndexHeader.findBitIndex
  310 mem.copyForwards__anon_8916
  308 fmt.bufPrint__anon_8708
  308 fmt.bufPrint__anon_8606
  308 fmt.bufPrint__anon_8595
  308 fmt.bufPrint__anon_8477
  308 fmt.bufPrint__anon_7747
  308 fmt.bufPrint__anon_6466
  308 fmt.bufPrint__anon_6464
  308 fmt.bufPrint__anon_4160
  308 fmt.bufPrint__anon_4157
  307 fmt.format__anon_9022
  307 fmt.format__anon_7716
  307 fmt.format__anon_7675
  306 dwarf.call_frame.InstructionType(.{.register = .uleb128_register}).read
  306 dwarf.call_frame.InstructionType(.{.register = .opcode_register}).read
  306 dwarf.call_frame.InstructionType(.{.delta = .u8_delta}).read
  306 dwarf.call_frame.InstructionType(.{.delta = .opcode_delta}).read
  302 Thread.Mutex.FutexImpl.lock
  296 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).pop
  295 dwarf.parseFormValueBlock__anon_8200
  292 array_hash_map.IndexHeader.free
  291 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).ensureTotalCapacity
  289 dwarf.DwarfInfo.sectionVirtualOffset
  288 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getOrPutContext
  287 hash.crc.Crc32SmallWithPoly(.IEEE).update
  285 dwarf.parseFormValueBlock__anon_8186
  279 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readBytesNoEof__anon_6522
  276 debug.getDebugInfoAllocator
  275 compress.deflate.dict_decoder.DictDecoder.readFlush
  274 mem.indexOfScalarPos__anon_7279
  274 array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).addOne
  274 array_list.ArrayListAlignedUnmanaged(dwarf.FrameDescriptionEntry,null).addOne
  274 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).addOne
  274 array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).addOne
  274 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).addOne
  274 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).addOne
  274 array_list.ArrayListAlignedUnmanaged(dwarf.AbbrevTableHeader,null).addOne
  269 math.ceilPowerOfTwoPromote__anon_9644
  267 array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).addOneAssumeCapacity
  267 array_list.ArrayListAlignedUnmanaged(dwarf.FrameDescriptionEntry,null).addOneAssumeCapacity
  267 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).addOneAssumeCapacity
  267 array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).addOneAssumeCapacity
  267 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).addOneAssumeCapacity
  267 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).addOneAssumeCapacity
  267 array_list.ArrayListAlignedUnmanaged(dwarf.AbbrevTableHeader,null).addOneAssumeCapacity
  267 array_list.ArrayListAligned(u32,null).addOneAssumeCapacity
  267 array_list.ArrayListAligned(dwarf.FileEntry,null).addOneAssumeCapacity
  267 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).addOneAssumeCapacity
  267 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).addOneAssumeCapacity
  264 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).pop
  263 heap.PageAllocator.free
  259 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readBytesNoEof__anon_8184
  259 dwarf.call_frame.VirtualMachine.rowColumns
  254 unicode.utf8ByteSequenceLength
  254 math.divTrunc__anon_9861
  254 array_list.ArrayListAligned(u32,null).addOne
  254 array_list.ArrayListAligned(dwarf.FileEntry,null).addOne
  254 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).addOne
  254 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).addOne
  251 fmt.formatType__anon_8498
  248 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readBytesNoEof__anon_6517
  247 fs.file.File.stat
  247 array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.FrameDescriptionEntry,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.Die.Attr,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).ensureTotalCapacity
  247 array_list.ArrayListAlignedUnmanaged(dwarf.AbbrevTableHeader,null).ensureTotalCapacity
  246 mem.eql__anon_5602
  243 debug.printUnknownSource__anon_7094
  240 dwarf.DwarfInfo.getSymbolName
  239 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).capacityForSize
  239 array_list.ArrayListAligned(u8,null).ensureTotalCapacity
  239 array_list.ArrayListAligned(u32,null).ensureTotalCapacity
  239 array_list.ArrayListAligned(dwarf.FileEntry,null).ensureTotalCapacity
  239 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).ensureTotalCapacity
  239 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).ensureTotalCapacity
  237 fmt.format__anon_8486
  234 fmt.formatType__anon_7898
  234 builtin.panicInactiveUnionField__anon_9855
  234 builtin.panicInactiveUnionField__anon_9434
  234 builtin.panicInactiveUnionField__anon_9066
  234 builtin.panicInactiveUnionField__anon_6622
  233 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readBytesNoEof__anon_6386
  233 fmt.format__anon_8372
  233 fmt.format__anon_7886
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9642
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9636
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9630
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9622
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9617
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9614
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9608
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9591
  232 mem.Allocator.allocWithSizeAndAlignment__anon_9564
  232 mem.Allocator.allocWithSizeAndAlignment__anon_8248
  232 mem.Allocator.allocWithSizeAndAlignment__anon_8223
  232 mem.Allocator.allocWithSizeAndAlignment__anon_8135
  232 mem.Allocator.allocWithSizeAndAlignment__anon_8133
  232 mem.Allocator.allocWithSizeAndAlignment__anon_8131
  232 math.ceilPowerOfTwo__anon_9582
  232 fmt.format__anon_8928
  231 dwarf.FormValue.getData16
  230 hash.wyhash.Wyhash.init
  230 debug.DebugInfo.lookupModuleNameDl
  229 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readBytesNoEof__anon_6529
  229 fmt.format__anon_8859
  229 fmt.format__anon_8844
  229 fmt.format__anon_8829
  229 fmt.format__anon_8814
  229 fmt.format__anon_8786
  229 fmt.format__anon_8356
  229 dwarf.ExceptionFrameHeader.entrySize
  229 compress.deflate.bits_utils.bitReverse__anon_6400
  228 fmt.format__anon_4218
  227 os.linux.getauxval
  227 dwarf.call_frame.VirtualMachine.resolveCopyOnWrite
  227 debug.updateSegfaultHandler
  226 os.setrlimit
  225 __zig_tag_name_@typeInfo(dwarf.FormValue).Union.tag_type.?
  224 mem.sliceAsBytes__anon_9882
  224 mem.sliceAsBytes__anon_9879
  224 mem.sliceAsBytes__anon_9876
  224 mem.sliceAsBytes__anon_9639
  224 mem.sliceAsBytes__anon_9633
  224 mem.sliceAsBytes__anon_9627
  224 mem.sliceAsBytes__anon_9619
  224 mem.sliceAsBytes__anon_9588
  224 mem.sliceAsBytes__anon_9561
  224 mem.sliceAsBytes__anon_9542
  224 mem.sliceAsBytes__anon_8922
  224 mem.sliceAsBytes__anon_8918
  224 mem.sliceAsBytes__anon_8600
  224 mem.sliceAsBytes__anon_8597
  223 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readByte
  222 debug.ModuleDebugInfo__struct_4409.getSymbolAtAddress
  221 Thread.Mutex.lock
  221 dwarf.call_frame.VirtualMachine.runToNative
  218 fmt.formatType__anon_4303
  218 dwarf.DwarfInfo.getString
  218 dwarf.DwarfInfo.getLineString
  217 fmt.formatType__anon_8457
  213 Thread.Mutex.FutexImpl.lockSlow
  212 builtin.returnError
  208 debug.handleSegfaultPosix
  206 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_8182
  206 dwarf.Die.getAttrSecOffset
  205 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).Slice.items__anon_7080
  205 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).Slice.items__anon_7069
  204 dwarf.parseFormValueConstant__anon_8205
  204 dwarf.parseFormValueConstant__anon_8203
  204 dwarf.parseFormValueConstant__anon_8202
  203 dwarf.parseFormValueConstant__anon_8204
  203 dwarf.parseFormValueConstant__anon_8191
  203 dwarf.parseFormValueConstant__anon_8189
  203 dwarf.parseFormValueConstant__anon_8188
  202 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6973
  202 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6930
  202 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6519
  202 dwarf.parseFormValueConstant__anon_8190
  202 dwarf.call_frame.Operand.read__anon_9395
  202 dwarf.call_frame.Operand.read__anon_9340
  200 os.msync
  199 fs.file.File.supportsAnsiEscapeCodes
  197 dwarf.UnwindContext.getFp
  196 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).load
  194 os.linux.x86_64.getContextInternal
  194 debug.print__anon_7737
  193 dwarf.call_frame.Operand.read__anon_9361
  192 mem.zeroes__anon_8884
  191 math.cast__anon_7309
  191 dwarf.call_frame.Operand.read__anon_9357
  190 debug.StackIterator.getLastError
  189 os.isatty
  187 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).insertAllEntriesIntoNewHeader
  186 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).growIfNeeded
  185 array_hash_map.IndexHeader.indexes__anon_8622
  185 array_hash_map.IndexHeader.indexes__anon_8620
  183 dwarf.ExceptionFrameHeader.isValidPtr
  182 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6967
  182 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6524
  182 compress.deflate.dict_decoder.DictDecoder.writeByte
  182 compress.deflate.bits_utils.bitReverse__anon_8580
  181 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).initMetadatas
  180 sort.insertion__anon_8676.Context.swap
  180 mem.sliceTo__anon_8881
  180 mem.sliceTo__anon_5968
  180 mem.alignForward__anon_3434
  180 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6970
  180 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6515
  179 math.log2_int_ceil__anon_7084
  179 dwarf.parseFormValueBlockLen__anon_8201
  179 dwarf.call_frame.Operand.read__anon_9365
  179 dwarf.call_frame.Operand.read__anon_9353
  179 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).finishBlock
  178 os.sigprocmask
  178 dwarf.call_frame.Operand.read__anon_9338
  178 dwarf.call_frame.Operand.read__anon_9334
  175 Thread.Futex.LinuxImpl.wake
  175 os.munmap
  175 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readInt__anon_6527
  175 dwarf.parseFormValueBlockLen__anon_8187
  175 array_list.ArrayListAligned(u8,null).appendWrite
  173 mem.lenSliceTo__anon_9452
  173 mem.lenSliceTo__anon_8128
  172 mem.sliceAsBytes__anon_8163
  172 mem.sliceAsBytes__anon_8121
  172 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).deinit
  172 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).deinit
  172 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).deinit
  171 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).popOrNull
  169 Thread.Futex.wait
  169 sort.insertion__anon_8676.Context.lessThan
  169 compress.deflate.decompressor.decompressor__anon_6391
  168 mem.sliceTo__anon_5964
  167 mem.sliceAsBytes__anon_8611
  167 mem.sliceAsBytes__anon_8225
  167 fs.file.File.getEndPos
  166 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readIntBig__anon_6383
  165 math.log2_int__anon_8524
  165 fmt.format__anon_8802
  165 fmt.format__anon_8148
  164 os.sigaction
  164 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readIntBig__anon_9544
  162 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).putNoClobberContext
  162 fmt.format__anon_4271
  161 math.log2_int__anon_9577
  161 math.log2_int__anon_8174
  160 math.cast__anon_9874
  160 math.cast__anon_8710
  158 dwarf.call_frame.VirtualMachine.deinit
  157 mem.Allocator.create__anon_9436
  157 mem.Allocator.create__anon_7595
  157 mem.Allocator.create__anon_6934
  157 mem.Allocator.create__anon_6403
  157 mem.Allocator.create__anon_6402
  157 mem.Allocator.create__anon_5605
  155 math.cast__anon_7282
  154 mem.writeIntSliceLittle__anon_9437
  153 __zig_tag_name_@typeInfo(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Operand).Union.tag_type.?
  153 dwarf.Constant.asUnsignedLe
  153 compress.deflate.dict_decoder.DictDecoder.writeSlice
  152 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).ensureUnusedCapacity
  151 debug.DebugInfo.init
  150 Thread.Mutex.unlock
  150 fs.openFileAbsolute
  149 os.linux.getErrno
  146 Thread.Mutex.FutexImpl.unlock
  146 math.shr__anon_9871
  146 math.shr__anon_9870
  146 math.shl__anon_9869
  146 debug.attachSegfaultHandler
  145 math.cast__anon_9442
  145 io.fixed_buffer_stream.FixedBufferStream([]u8).getWritten
  144 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).addOneAssumeCapacity
  144 dwarf.DwarfInfo.section
  144 array_list.ArrayListAligned(u8,null).ensureUnusedCapacity
  144 array_list.ArrayListAligned(dwarf.FileEntry,null).ensureUnusedCapacity
  142 math.mul__anon_8575
  142 debug.resetSegfaultHandler
  141 dwarf.Die.getAttr
  141 compress.deflate.dict_decoder.DictDecoder.availWrite
  141 array_hash_map.IndexHeader.mask
  140 os.maybeIgnoreSigpipe
  139 math.sub__anon_9865
  139 math.sub__anon_7001
  139 math.sub__anon_6989
  139 math.add__anon_9873
  139 math.add__anon_9867
  139 math.add__anon_7003
  139 math.add__anon_6978
  139 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readByteSigned
  139 fs.openFileAbsoluteZ
  139 compress.deflate.dict_decoder.DictDecoder.writeMark
  136 dwarf.getAbbrevTableEntry
  135 compress.deflate.decompressor.Decompressor(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).deinit
  134 dwarf.abi.getRegDefaultValue
  132 dwarf.DwarfInfo.unwindFrame__struct_9070.compareFn
  130 io.fixed_buffer_stream.FixedBufferStream([]const u8).seekTo
  130 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).append
  129 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).header
  129 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).deinit
  129 compress.zlib.decompressStream__anon_6381
  128 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).Slice.items__anon_8263
  128 mem.readIntSliceNative__anon_9859
  128 mem.readIntSliceNative__anon_9858
  128 mem.readIntSliceNative__anon_9428
  128 dwarf.openDwarfDebugInfo
  128 dwarf.call_frame.VirtualMachine.reset
  128 debug.SymbolInfo.deinit
  127 fmt.formatType__anon_8147
  126 mem.readIntSliceNative__anon_5600
  126 debug.openSelfDebugInfo
  125 mem.readIntSliceNative__anon_9857
  124 array_hash_map.capacityIndexSize
  123 fs.path.join
  121 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).allocatedBytes
  121 compress.deflate.dict_decoder.DictDecoder.histSize
  121 array_hash_map.IndexHeader.indexes__anon_8617
  120 debug.StackIterator.deinit
  120 array_list.ArrayListAligned(u8,null).appendSlice
  119 process.getBaseAddress
  119 debug.StackIterator.init
  119 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).append
  119 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).getContext
  119 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).get
  118 mem.alignBackward__anon_9450
  118 mem.alignBackward__anon_4175
  117 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).putContext
  116 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).read
  115 io.writer.Writer(*io.fixed_buffer_stream.FixedBufferStream([]u8),error{NoSpaceLeft},(function 'write')).write
  115 io.writer.Writer(*array_list.ArrayListAligned(u8,null),error{OutOfMemory},(function 'appendWrite')).write
  115 io.reader.Reader(*compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))),error{OutOfMemory,EndOfStream,CorruptInput,BadInternalState,BadReaderState,UnexpectedEndOfStream,EndOfStreamWithNoError,Unsupported,WrongChecksum},(function 'read')).read
  115 array_list.ArrayListAligned(u8,null).allocatedSlice
  115 array_list.ArrayListAligned(u32,null).allocatedSlice
  115 array_list.ArrayListAligned(dwarf.FileEntry,null).allocatedSlice
  115 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).allocatedSlice
  115 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).allocatedSlice
  114 mem.swap__anon_9856
  114 fs.file.File.write
  114 fs.file.File.read
  114 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).append
  113 mem.Allocator.destroy__anon_8728
  113 mem.Allocator.destroy__anon_8584
  113 mem.Allocator.destroy__anon_8583
  113 mem.Allocator.destroy__anon_6938
  113 mem.Allocator.destroy__anon_6937
  113 array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.FrameDescriptionEntry,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.Die.Attr,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).allocatedSlice
  113 array_list.ArrayListAlignedUnmanaged(dwarf.AbbrevTableHeader,null).allocatedSlice
  112 mem.readInt__anon_8185
  112 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).write
  112 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readNoEof
  110 builtin.default_panic
  110 array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).append
  110 array_list.ArrayListAlignedUnmanaged(dwarf.FrameDescriptionEntry,null).append
  110 array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).append
  110 array_list.ArrayListAlignedUnmanaged(dwarf.AbbrevTableHeader,null).append
  109 dwarf.CommonInformationEntry.isSignalFrame
  107 math.isPowerOfTwo__anon_9884
  107 math.isPowerOfTwo__anon_7740
  107 array_list.ArrayListAligned(u8,null).clearAndFree
  107 array_list.ArrayListAligned(dwarf.FileEntry,null).append
  107 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).append
  105 io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readAll
  105 fmt.digits2
  105 debug.waitForOtherThreadToFinishPanicking
  104 io.reader.Reader(*compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))),error{OutOfMemory,EndOfStream,CorruptInput,BadInternalState,BadReaderState,UnexpectedEndOfStream,EndOfStreamWithNoError,Unsupported,WrongChecksum},(function 'read')).readAll
  102 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).capacityInBytes
  100 fs.path.isAbsolutePosix
  100 debug.DebugInfo.getModuleForAddress
  100 array_list.ArrayListAligned(u32,null).append
   99 sort.block.block__anon_8272__struct_8640.lessThan
   98 math.absCast__anon_9860
   98 math.absCast__anon_8709
   98 array_list.ArrayListAlignedUnmanaged(dwarf.Die.Attr,null).resize
   97 os.close
   97 math.isPowerOfTwo__anon_9583
   96 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).items__anon_9573
   95 math.negate__anon_9863
   93 mem.indexOfScalar__anon_6475
   90 hash_map.HashMap(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).putNoClobber
   90 array_list.ArrayListAligned(u8,null).deinit
   90 array_list.ArrayListAligned(u32,null).deinit
   90 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).deinit
   90 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).deinit
   89 math.absCast__anon_9552
   89 fs.openSelfExe
   89 fmt.format__anon_8136
   88 os.linux.x86_64.syscall6
   88 io.seekable_stream.SeekableStream(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},error{},(function 'seekTo'),(function 'seekBy'),(function 'getPos'),(function 'getEndPos')).getPos
   88 io.seekable_stream.SeekableStream(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},error{},(function 'seekTo'),(function 'seekBy'),(function 'getPos'),(function 'getEndPos')).getEndPos
   88 dwarf.expressions.isOpcodeValidInCFA
   87 fmt.formatType__anon_8798
   87 dwarf.UnwindContext.deinit
   86 mem.swap__anon_8642
   86 fmt.formatType__anon_9058
   86 fmt.formatType__anon_4267
   85 os.linux.mmap
   85 io.writer.Writer(*array_list.ArrayListAligned(u8,null),error{OutOfMemory},(function 'appendWrite')).writeByte
   84 fmt.formatIntValue__anon_9445
   84 array_hash_map.IndexHeader.length
   83 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).writeByte
   83 heap.arena_allocator.ArenaAllocator.init
   83 hash.crc.Crc32SmallWithPoly(.IEEE).hash
   82 mem.sliceTo__anon_5598
   82 fmt.formatIntValue__anon_9596
   81 fmt.formatType__anon_8368
   81 fmt.formatType__anon_8334
   81 fmt.formatType__anon_8292
   81 fmt.formatType__anon_7709
   80 Thread.LinuxThreadImpl.getCurrentId
   80 fmt.formatType__anon_8940
   78 mem.lenSliceTo__anon_8119
   78 fmt.formatIntValue__anon_8713
   78 fmt.formatIntValue__anon_8693
   78 fmt.formatIntValue__anon_8686
   78 fmt.formatIntValue__anon_8468
   78 fmt.format__anon_7630
   76 mem.readInt__anon_6975
   76 mem.readInt__anon_6969
   76 mem.readInt__anon_6932
   76 mem.readInt__anon_6526
   76 mem.readInt__anon_6523
   76 fmt.formatIntValue__anon_9548
   76 fmt.formatIntValue__anon_7758
   76 builtin.panicUnwrapError
   76 array_hash_map.capacityIndexType
   74 dynamic_library.LinkMap.Iterator.next
   73 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).put
   72 os.linux.x86_64.syscall4
   72 mem.readInt__anon_6972
   72 mem.readInt__anon_6530
   72 mem.readInt__anon_6518
   71 dwarf.expressions.isOpcodeRegisterLocation
   71 compress.deflate.dict_decoder.DictDecoder.availRead
   71 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).shrinkRetainingCapacity
   70 sort.block.Range.length
   70 fmt.Formatter((function 'formatSliceHexImpl')).format__anon_8591
   70 dwarf.call_frame.InstructionType(.{}).read
   69 debug.assert
   67 fmt.formatValue__anon_9444
   66 os.unexpectedErrno
   66 mem.swap__anon_9584
   66 hash_map.HashMap(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).get
   66 fmt.formatValue__anon_9595
   65 __zig_tag_name_@typeInfo(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value).Union.tag_type.?
   65 __zig_tag_name_@typeInfo(dwarf.EntryHeader.EntryHeader__union_6984).Union.tag_type.?
   65 os.linux.x86_64.syscall3
   65 math.floorPowerOfTwo__anon_9008
   65 io.seekable_stream.SeekableStream(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},error{},(function 'seekTo'),(function 'seekBy'),(function 'getPos'),(function 'getEndPos')).seekTo
   65 io.seekable_stream.SeekableStream(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},error{},(function 'seekTo'),(function 'seekBy'),(function 'getPos'),(function 'getEndPos')).seekBy
   64 os.linux.futex_wait
   62 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).Metadata.fill
   62 debug.ModuleDebugInfo__struct_4409.getDwarfInfoForAddress
   61 os.linux.openat
   61 fmt.formatValue__anon_8712
   61 fmt.formatValue__anon_8692
   61 fmt.formatValue__anon_8685
   61 fmt.formatValue__anon_8467
   60 os.linux.prlimit
   60 os.getenvZ
   60 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).capacity
   60 fmt.formatValue__anon_9547
   60 fmt.formatValue__anon_7757
   59 os.linux.sigprocmask
   58 os.linux.exit_group
   57 os.linux.futex_wake
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_8485
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_8483
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_8481
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_8479
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_8476
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_7599
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_7314
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_7312
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_7125
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_7121
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_4587
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_4011
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_4009
   57 io.writer.Writer(fs.file.File,error{AccessDenied,Unexpected,DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer},(function 'write')).print__anon_4007
   56 hash_map.getAutoHashFn__struct_7863.hash
   56 array_list.ArrayListAligned(dwarf.FileEntry,null).appendAssumeCapacity
   56 array_hash_map.IndexHeader.capacity
   55 Thread.Futex.wake
   55 os.linux.tls.setThreadPointer
   55 os.linux.msync
   55 builtin.panicSentinelMismatch__anon_7280
   54 mem.isValidAlignGeneric__anon_9604
   54 mem.isValidAlignGeneric__anon_4174
   53 os.linux.readlink
   53 io.fixed_buffer_stream.FixedBufferStream([]const u8).getEndPos
   53 builtin.panicStartGreaterThanEnd
   53 builtin.panicOutOfBounds
   53 array_list.ArrayListAligned(u8,null).init
   53 array_list.ArrayListAligned(u32,null).init
   53 array_list.ArrayListAligned(dwarf.FileEntry,null).init
   53 array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).init
   53 array_list.ArrayListAligned(dwarf.AbbrevAttr,null).init
   52 os.linux.write
   52 fs.path.isAbsolutePosixZ
   52 debug.copyContext
   51 os.linux.read
   51 debug.DebugInfo.getModuleNameForAddress
   51 array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).values
   50 sort.block.Iterator.begin
   50 os.linux.x86_64.syscall2
   50 io.fixed_buffer_stream.FixedBufferStream([]const u8).getPos
   50 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).getContext
   49 sort.insertion__anon_8676
   48 math.cast__anon_7134
   48 math.cast__anon_5790
   48 array_hash_map.getAutoHashFn__struct_7977.hash
   47 linked_list.SinglyLinkedList(usize).prepend
   47 hash_map.HashMap(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).init
   47 array_hash_map.IndexHeader.constrainIndex
   46 os.linux.tkill
   46 os.linux.munmap
   46 os.linux.flock
   45 __zig_is_named_enum_value_@typeInfo(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Operand).Union.tag_type.?
   45 __zig_is_named_enum_value_dwarf.DwarfSection
   45 os.linux.setrlimit
   45 os.linux.fstat
   43 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).containsContext
   43 fs.path.basename
   42 __zig_is_named_enum_value_dwarf.call_frame.Opcode
   42 os.linux.x86_64.restore_rt
   42 compress.deflate.dict_decoder.DictDecoder.deinit
   41 __zig_is_named_enum_value_@typeInfo(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value).Union.tag_type.?
   41 __zig_is_named_enum_value_@typeInfo(dwarf.EntryHeader.EntryHeader__union_6984).Union.tag_type.?
   41 __zig_is_named_enum_value_@typeInfo(dwarf.call_frame.VirtualMachine.RegisterRule).Union.tag_type.?
   41 mem.isAlignedGeneric__anon_8876
   40 io.fixed_buffer_stream.fixedBufferStream__anon_7659
   40 io.fixed_buffer_stream.fixedBufferStream__anon_6035
   40 debug.LineInfo.deinit
   39 mem.sort__anon_7093
   39 io.getStdErr
   39 array_hash_map.getAutoEqlFn__struct_7981.eql
   38 os.linux.close
   38 heap.arena_allocator.ArenaAllocator.State.promote
   37 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).Metadata.takeFingerprint
   35 os.linux.x86_64.syscall1
   35 mem.isAligned
   35 heap.arena_allocator.ArenaAllocator.allocator
   35 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).keys
   35 hash_map.getAutoEqlFn__struct_7868.eql
   35 fs.path.isAbsolute
   35 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9850
   35 compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).deinit
   34 mem.readIntForeign__anon_8176
   34 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).values
   34 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9854
   34 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9849
   34 array_list.ArrayListAlignedUnmanaged(dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).Value,null).clearRetainingCapacity
   34 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.ColumnRange,null).clearRetainingCapacity
   34 array_list.ArrayListAlignedUnmanaged(dwarf.call_frame.VirtualMachine.Column,null).clearRetainingCapacity
   33 mem.swap__anon_9009
   33 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9853
   32 sort.block.Range.init
   32 fmt.fmtSliceHexLower
   31 mem.sliceAsBytes__anon_6176
   31 fs.path.isAbsoluteZ
   31 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).reset
   31 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).deinit
   30 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).Slice.dbHelper
   30 multi_array_list.MultiArrayList(array_hash_map.ArrayHashMapUnmanaged(u64,dwarf.CommonInformationEntry,array_hash_map.AutoContext(u64),false).Data).dbHelper
   30 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9851
   29 math.sqrt.sqrt__anon_8668
   29 fs.path.isSep
   29 fs.file.File.isTty
   29 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9848
   29 array_hash_map.IndexHeader.capacityIndexType
   28 sort.block.Iterator.finished
   28 meta.eql__anon_9512
   28 meta.eql__anon_8626
   28 mem.readIntForeign__anon_8603
   27 process.hasEnvVarConstant__anon_7959
   27 process.hasEnvVarConstant__anon_7957
   27 mem.readIntNative__anon_8602
   27 mem.readIntForeign__anon_8216
   27 mem.readIntForeign__anon_6387
   26 mem.readIntForeign__anon_8220
   26 mem.readIntForeign__anon_8198
   26 mem.readIntForeign__anon_8173
   26 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).dbHelper
   26 debug.panic__anon_3512
   25 Thread.getCurrentId
   25 mem.readIntForeign__anon_8218
   25 mem.readIntForeign__anon_8171
   25 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).Metadata.isFree
   25 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9852
   25 dwarf.expressions.StackMachine(.{.addr_size = 8, .endian = .Little, .call_frame_context = true}).generic__anon_9847
   24 os.linux.x86_64.Stat.mtime
   24 os.linux.x86_64.Stat.ctime
   24 os.linux.x86_64.Stat.atime
   24 dynamic_library.LinkMap.Iterator.end
   23 hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4409,hash_map.AutoContext(usize),80).Metadata.isUsed
   22 os.exit
   22 atomic.Atomic.Atomic(u32).init
   21 math.absCast__anon_9449
   21 io.fixed_buffer_stream.FixedBufferStream([]u8).writer
   21 io.fixed_buffer_stream.FixedBufferStream([]const u8).seekableStream
   21 io.fixed_buffer_stream.FixedBufferStream([]const u8).reader
   21 dwarf.abi.spRegNum
   21 dwarf.abi.ipRegNum
   21 dwarf.abi.fpRegNum
   21 compress.zlib.DecompressStream(io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read'))).reader
   21 array_list.ArrayListAligned(u8,null).writer
   20 __zig_is_named_enum_value_@typeInfo(dwarf.FormValue).Union.tag_type.?
   20 os.linux.x86_64.syscall0
   20 math.absCast__anon_9600
   20 hash.crc.Crc32SmallWithPoly(.IEEE).final
   20 dwarf.DwarfInfo.scanAllUnwindInfo__struct_7091.lessThan
   19 sort.block.Iterator.length
   19 math.absCast__anon_7762
   19 array_hash_map.safeTruncate__anon_8619
   18 _start
   18 mem.readIntNative__anon_8219
   18 mem.readIntNative__anon_8215
   18 mem.readIntNative__anon_8172
   18 mem.readIntNative__anon_8130
   18 mem.readIntNative__anon_7837
   18 mem.bytesAsValue__anon_8721
   18 mem.bytesAsValue__anon_7594
   18 mem.asBytes__anon_9535
   18 mem.asBytes__anon_9440
   18 mem.asBytes__anon_9001
   18 mem.asBytes__anon_8430
   18 mem.asBytes__anon_8427
   18 math.absCast__anon_8690
   18 math.absCast__anon_8474
   18 hash.crc.Crc32SmallWithPoly(.IEEE).init
   18 hash.adler.Adler32.init
   18 fs.cwd
   17 os.noopSigHandler
   17 mem.readIntNative__anon_8217
   17 mem.readIntNative__anon_8175
   17 mem.readIntNative__anon_8072
   17 hash.adler.Adler32.final
   16 os.linux.gettid
   16 array_hash_map.Index(u16).isEmpty
   15 dwarf.missingDwarf
   15 dwarf.badDwarf
   15 debug.relocateContext
   14 array_hash_map.Index(u32).isEmpty
   13 fs.file.File.writer
   13 fs.file.File.close
   13 dynamic_library.get_DYNAMIC
   13 array_hash_map.Index(u8).isEmpty
   11 io.getStdErrHandle
   11 debug.maybeEnableSegfaultHandler
    8 test.main

@kcbanner
Copy link
Contributor Author

@IntegratedQuantum thanks!

Indeed, reducing those cases does improve the compile time, working on those fixes here: https://github.com/kcbanner/zig/tree/fixup_unwind_perf_regression

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Missing stacktrace for Segmentation fault in C library
4 participants