cvs commit: src/usr.bin/kdump kdump.c
Robert Watson
rwatson at FreeBSD.org
Sat Jan 6 04:13:57 PST 2007
On Sat, 6 Jan 2007, Peter Jeremy wrote:
> On Fri, 2007-Jan-05 16:07:58 -0500, John Baldwin wrote:
>> On Friday 05 January 2007 16:04, John Baldwin wrote:
>>> jhb 2007-01-05 21:04:37 UTC
>>>
>>> FreeBSD src repository
>>>
>>> Modified files:
>>> usr.bin/kdump kdump.c
>>> Log:
>>> Add code to parse the utrace(2) entries generated by malloc(3) in a more
>>> human-readable format. Note that we report 'realloc(p, 0)' as 'free(p)'
>>> since both cases are encoded the same way and 'free()' is more common
>>> than a realloc() to 0.
>>>
>>> MFC after: 1 week
>
> This is much nicer than having to run kdump output thru my perl script to do
> this. The only downside I see is that the code in kdump assumes that any
> utrace records that are sizeof(struct utrace_malloc) are generated by
> malloc. This isn't necessarily true - whilst nothing in the base system
> apart from malloc currently uses utrace, it's possible that people are using
> utrace in their own code. I'd prefer to see this decoding controlled by a
> command line option. (Ideally, kdump would grow a configuration file so
> that a user could define their own decoding rules - but that is a lot of
> work).
Would it make sense to take this opportunity to require that utrace records
begin with a 32-bit integer that defines what subsystem they are from, and
allocate a subsystem namespace? Or something along these lines? It's easy to
imagine other subsystems growing utrace support in user space, and wanting to
use more than one at once. I don't really mind what the mechanism is, but if
we're going to add one, now is probably the time to do it, before kdump learns
too much more about utrace.
Robert N M Watson
Computer Laboratory
University of Cambridge
>
>> I also have patches I use at work that allow kdump to recognize a 32-bit
>> malloc utrace on an amd64 machine (for when you run an i386 binary) if folks
>> are interested. I'm not sure how many i386 on amd64 hacks we want in the
>> official CVS tree. :)
>
> Personally, I'd like FreeBSD to behave similarly to Solaris: You choose
> whether to compile 32-bit or 64-bit executables with a compiler switch
> and everything else is transparent. FreeBSD 3.x had smarts so that nm,
> ld, gdb etc could transparently handle either a.out or ELF executables.
> It would be nice if FreeBSD/amd64 could do the same (though I realise
> that we don't want the overheads on other platforms, which would make it
> more difficult to implement).
>
>> I also have another set of patches to add various utrace(2) events to the
>> runtime linker as well as logic in kdump to parse them that I hope to commit
>> in the near future.
>
> Sounds good. This goes back to my first point above - I don't think it's
> safe to rely on the size of a utrace record to determine its type.
>
> --
> Peter Jeremy
>
More information about the cvs-src
mailing list