tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

fd_refcnt leak? (was Re: sc->sc_dk.dk_copenmask == 1 after /etc/rc.d/fsck_root)



On Thu, Jul 09, 2009 at 01:25:37PM -0500, David Young wrote:
> On Wed, Jul 08, 2009 at 07:43:09PM -0500, David Young wrote:
> > dk_copenmask never returns to 0, not even during shutdown.
> > 
> > As a consequence of this dk_copenmask I am running 5.99.15.  The problem
> > seems to be relatively new.
> 
> Oops, that was supposed to say,
> 
> > As a consequence of this, dk_copenmask never returns to 0, not even
> > during shutdown.
> >
> > I am running 5.99.15.  The problem seems to be relatively new.
> 
> I modified /etc/rc.d/fsck_root to run 'ktruss -i fsck'. fsck execs
> fsck_ffs. fsck_ffs does open /dev/sd0a and /dev/rsd0a, but it does not
> close them before calling exit(0).
> 
> Perhaps the kernel is not cleaning up processes' file descriptor tables
> like it used to?

I set breakpoints with ddb at fd_free and at the 'dt = ' line:

        if (atomic_dec_uint_nv(&fdp->fd_refcnt) > 0)
                return;
        
        /* 
         * Close any files that the process holds open.
         */
        dt = fdp->fd_dt;

In fsck_ffs, fd_free() exits before reaching the 'dt = ' line.  In
fsck_ffs's parent, fsck, fd_free() proceeds to the 'dt = ' line.
Perhaps fsck and fsck_ffs share their descriptor tables by some mistake?

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 278-3933


Home | Main Index | Thread Index | Old Index