Date: Tue, 23 Nov 2021 10:11:03 +0100 From: =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?= <mgorny@moritz.systems> To: John Baldwin <jhb@FreeBSD.org>, freebsd-hackers@FreeBSD.org Cc: emaste@FreeBSD.org, peter@FreeBSD.org Subject: Re: Looking for rationale for the minidump format Message-ID: <4b1b49da6c83165fbad3c4804c1394473e1b67da.camel@moritz.systems> In-Reply-To: <cd2f2575-db5b-db6a-db9d-1575d309a74f@FreeBSD.org> References: <305082d9f216bb8382773c074eaf7a5c3101cc13.camel@moritz.systems> <cd2f2575-db5b-db6a-db9d-1575d309a74f@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 2021-11-22 at 09:47 -0800, John Baldwin wrote: > On 11/21/21 6:42 AM, Michał Górny wrote: > > Hi, everyone. > > > > As part of the work contracted by the FreeBSD Foundation, I'm working > > on adding explicit minidump support to LLDB. When discussing > > the options with upstream, I've been asked why FreeBSD created their own > > minidump format. > > > > I did a bit of digging but TBH all the rationale I could get was to > > create partial memory dumps. However, unless I'm mistaken the ELF > > format is perfectly capable of that -- e.g. via creating an explicit > > segment for every continuous active region. > > > > Does anyone happen to know what the original rationale for creating > > a custom file format was, or know where to find one? Thanks in advance. > > The direct map aliases pages mapped via kmem. You'd be double dumping > all the data mapped into kmem, once for the direct map and once for the > non-direct mappings. > > You can think of minidumps as being a dump of physical memory, whereas > an ELF core for a virtually-mapped kernel wants to dump virtual memory, > and there is the disconnect. > > [...] > > You could perhaps imagine something similar where you had an ELF core > with physical memory for PT_LOAD instead of virtual and a way to hint that > so that the debugger would handle all the virtual -> PA translation, but > you'd still need some home-grown notes for some of the other metadata we > pass along (like the message buffer, etc.). Also, changing the format > doesn't help with reading existing crash dumps. > Thank you for your reply. If I understand correctly, you're comparing minidump with a "proper" (i.e. virtual memory-based) ELF core. However, the "full memory dump" ELF core also uses physical memory map model, is that correct? Does that mean that using a different core format makes it clear that it's a physical memory dump and not virtual? That said, please correct me if I'm mistaken but I think we should be able to create a "virtual memory mapped" ELF core without too much duplication. We could creating multiple segments with different p_vaddr values but the same file p_offset, correct (and maybe p_paddr)? I'm not advocating for changing the format, just trying to improve my knowledge. -- Best regards, Michał Górny
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4b1b49da6c83165fbad3c4804c1394473e1b67da.camel>