OK, I've played around with my kernel trying to figure out what causes
this.  The one thing I know is that it disappears if I leave pcm out
of my kernel, but I don't think pcm is the culprit.  Since the address
at fault is constant, I've added code to mtrash_[cd]tor() which calls
db_print_backtrace() every time we hit that address.  I also added
code to module_regiser_init() to identify the module being processed:

> module_register_init: registering 'isa/esscontrol'
> mtrash_ctor(0xfffffc00007aab80, 64, 0)
> mtrash_ctor(0xfffffc00007a8ba0, 32, 0)
> mtrash_ctor(0xfffffc00007b6000, 8192, 0)
> db_print_backtrace() at db_print_backtrace+0x18
> mtrash_ctor() at mtrash_ctor+0x68
> uma_zalloc_arg() at uma_zalloc_arg+0x160
> malloc() at malloc+0x94
> kobj_class_compile() at kobj_class_compile+0x2c
> devclass_add_driver() at devclass_add_driver+0x64
> driver_module_handler() at driver_module_handler+0xb4
> module_register_init() at module_register_init+0xc0
> mi_startup() at mi_startup+0x144
> locorestart() at locorestart+0x64
> --- root of call graph ---
> Memory modified after free 0xfffffc00007b6000(8184)
> panic: Most recently used by none
> 
> panic
> Stopped at      Debugger+0x38:  zapnot  v0,#0xf,v0      <v0=0x6>
 
The problem is that this doesn't really tell me what I want (i.e. who
held that block before it was allocated to isa/esscontrol).  All I
know about that is:

mtrash_dtor(0xfffffc00007b6000, 8192, 0)

because it seems that db_print_backtrace() is a nop at that point.

Any suggestions as to how I can figure out who used that block of
memory before it was allocated to the ess driver?

DES
-- 
Dag-Erling Smorgrav - [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to