kernel trap 12
Matthew Dillon
dillon at apollo.backplane.com
Tue Jul 20 00:14:23 PDT 2004
:The device_printf() was something I didn't try yet. Combined with BUS_DEBUG
:still in my kernel it yields:
:
:devclass_find_internal:115: looking for nexus
:devclass_add_device:404: (null) in devclass nexus
:devclass_alloc_unit:353: unit 0 in devclass nexus
:devclass_alloc_unit:393: now: unit 0 in devclass nexus
:root_bus_configure:2309: .
:devclass_find_driver_internal:253: nexus in devclass root
:device_probe_child:641: Trying nexus
:nexus0: nexus_probe()
:
:After that it kernel trap 12's.
:
:--
:Jeroen Ruigrok van der Werven <asmodai(at)wxs.nl> / asmodai / kita no mono
If it's printing nexus_probe() but not printing "generic probe of..."
then it must by dying in the TAILQ_FOREACH() in bus_generic_probe().
/*
* Call DEVICE_IDENTIFY for each driver.
*/
int
bus_generic_probe(device_t dev)
{
devclass_t dc = dev->devclass;
driverlink_t dl;
TAILQ_FOREACH(dl, &dc->drivers, link) {
printf("generic probe of driverlink %p\n", dl);
...
}
...
}
Which means that 'dc' is likely NULL, which could possibly have
produced by your other comment:
:Is devclass_add_device:404: (null) in devclass nexus legal?
:
:*writing down the offsets and such now*
:
:--
:Jeroen Ruigrok van der Werven <asmodai(at)wxs.nl> / asmodai / kita no mono
This is worth a shot. Try adding a KKASSERT() after that
PDEBUG line (line 404 in kern/subr_bus.c) so we can hopefully get
a backtrace of who called devclass_add_device() with a dev that
has a NULL name. If the dev has a NJULL name then it might have a
NULL devclass too.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Bugs
mailing list