debug: fix MemoryAccessor file leak

- patch authored by Jacob Young
- tested on alpine-aarch64, 3.21.0, qemu-system 9.2.0
- issue manifested on Alpine Linux aarch64 under qemu-system where
  zig2 fails during bootstrap: error.ProcessFdQuotaExceeded
This commit is contained in:
Michael Dusan 2025-01-30 09:27:32 -05:00 committed by Alex Rønne Petersen
parent 4de2b1ea65
commit c44be99f1a
2 changed files with 12 additions and 0 deletions

View file

@ -775,6 +775,7 @@ pub const StackIterator = struct {
}
pub fn deinit(it: *StackIterator) void {
it.ma.deinit();
if (have_ucontext and it.unwind_state != null) it.unwind_state.?.dwarf_context.deinit();
}

View file

@ -25,6 +25,17 @@ pub const init: MemoryAccessor = .{
},
};
pub fn deinit(ma: *MemoryAccessor) void {
switch (native_os) {
.linux => switch (ma.mem.handle) {
-2, -1 => {},
else => ma.mem.close(),
},
else => {},
}
ma.* = undefined;
}
fn read(ma: *MemoryAccessor, address: usize, buf: []u8) bool {
switch (native_os) {
.linux => while (true) switch (ma.mem.handle) {