From 5a2bbe9a08e51ed38456929f9746a3caead7c713 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 6 Sep 2024 21:09:14 -0700 Subject: [PATCH] crash/minidump: header parsing --- src/crash/main.zig | 1 + src/crash/minidump.zig | 75 +++++++++++++++++++++++++++++++++++ src/crash/testdata/macos.dmp | Bin 0 -> 447456 bytes 3 files changed, 76 insertions(+) create mode 100644 src/crash/minidump.zig create mode 100644 src/crash/testdata/macos.dmp diff --git a/src/crash/main.zig b/src/crash/main.zig index 1ac971851..5f9aa96c5 100644 --- a/src/crash/main.zig +++ b/src/crash/main.zig @@ -5,6 +5,7 @@ const dir = @import("dir.zig"); const sentry_envelope = @import("sentry_envelope.zig"); +pub const minidump = @import("minidump.zig"); pub const sentry = @import("sentry.zig"); pub const Envelope = sentry_envelope.Envelope; pub const defaultDir = dir.defaultDir; diff --git a/src/crash/minidump.zig b/src/crash/minidump.zig new file mode 100644 index 000000000..caec0f1ea --- /dev/null +++ b/src/crash/minidump.zig @@ -0,0 +1,75 @@ +const std = @import("std"); +const assert = std.debug.assert; +const Allocator = std.mem.Allocator; + +const log = std.log.scoped(.minidump); + +/// Minidump parser. +pub const Minidump = struct { + header: Header, + + /// Read the minidump file for the given source. + /// + /// The source must have a reader() and seekableStream() method. + /// For example, both File and std.io.FixedBufferStream implement these. + pub fn read(alloc: Allocator, source: anytype) !Minidump { + _ = alloc; + + // Read the header which also determines the endianness of the file. + const header, const endian = try readHeader(source); + log.warn("header={} endian={}", .{ header, endian }); + + return .{ + .header = header, + }; + } + + /// Reads the header for the minidump file and returns endianness of + /// the file. + fn readHeader(source: anytype) !struct { Header, std.builtin.Endian } { + // Start by trying LE. + var endian: std.builtin.Endian = .little; + var header = try source.reader().readStructEndian(Header, endian); + + // If the signature doesn't match, we assume its BE. + if (header.signature != signature) { + // Seek back to the start of the file so we can reread. + try source.seekableStream().seekTo(0); + + // Try BE, if the signature doesn't match, return an error. + endian = .big; + header = try source.reader().readStructEndian(Header, endian); + if (header.signature != signature) return error.InvalidHeader; + } + + // "The low-order word is MINIDUMP_VERSION. The high-order word is an + // internal value that is implementation specific." + if (header.version.low != version) return error.InvalidVersion; + + return .{ header, endian }; + } +}; + +/// "MDMP" in little-endian. +pub const signature = 0x504D444D; + +/// The version of the minidump format. +pub const version = 0xA793; + +/// https://learn.microsoft.com/en-us/windows/win32/api/minidumpapiset/ns-minidumpapiset-minidump_header +pub const Header = extern struct { + signature: u32, + version: packed struct(u32) { low: u16, high: u16 }, + stream_count: u32, + stream_directory_rva: u32, + checksum: u32, + time_date_stamp: u32, + flags: u64, +}; + +test "Minidump read" { + const testing = std.testing; + const alloc = testing.allocator; + var fbs = std.io.fixedBufferStream(@embedFile("testdata/macos.dmp")); + _ = try Minidump.read(alloc, &fbs); +} diff --git a/src/crash/testdata/macos.dmp b/src/crash/testdata/macos.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5931c13a06284043c286fcda9a94aa93f2762909 GIT binary patch literal 447456 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
<8}G+das4`uDlUM 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%0A}{b*TTyo2jXplkIV$)2yqB#=6B62 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 literal 0 HcmV?d00001