Fatal trap 12 on booting GERERIC kernel

Joerg Sonnenberger joerg at britannica.bec.de
Thu Aug 11 02:30:54 PDT 2005


On Thu, Aug 11, 2005 at 05:46:04PM +0900, YONETANI Tomokazu wrote:
> On Thu, Aug 11, 2005 at 05:20:50PM +0900, Noritoshi Demizu wrote:
> > > The latest GENERIC kernel fails to boot on my machine.
> > 
> > When I reported this problem, I chose multi user mode in my all trys.
> > 
> > I just find that, if I choose single user mode, the '#' prompt of
> > /bin/sh is successfully displayed.  And the "pwd" command successfully
> > prints "/".  But when I typed "ls", the kernel paniced in generic_bzero.
> > 
> > I did buildworld & installworld both yesterday and today.  Yesterdays'
> > GENERIC kernel works fine with both yesterdays' and today's userland.
> > But today's GENERIC kernel does not work with yesterdays' nor today's
> > userland.
> 
> Yes, I'm seeing this too, and I suspect that the calculation in
> vop_write_dirent() is wrong; I inserted a printf() before the bzero()
> and found that the second argument, or
> 
>   dp->d_reclen - offsetof(struct dirent, d_name) - dp->d_namlen,
> 
> can be negative.  Try reverting the users of vop_write_dirent()
> to the previous revisions and see if it helps.

Found it. In the full dirent tree, the equivalent of GENERIC_DIRSIZ
takes the string length directly, while GENERIC_DIRSIZ takes it from
dirent. That field wasn't initialised.

Joerg





More information about the Kernel mailing list