Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Mar 2000 21:23:55 -0800
From:      Alfred Perlstein <bright@wintelcom.net>
To:        John Ryan <jryan@kgv.edu.hk>
Cc:        freebsd-questions@FreeBSD.ORG
Subject:   Re: Panic when mounting a CDrom (fwd)
Message-ID:  <20000309212355.Y14279@fw.wintelcom.net>
In-Reply-To: <Pine.BSF.4.10.10003101208390.88503-100000@student.kgv.edu.hk>; from jryan@kgv.edu.hk on Fri, Mar 10, 2000 at 12:19:59PM %2B0800
References:  <20000309202241.W14279@fw.wintelcom.net> <Pine.BSF.4.10.10003101208390.88503-100000@student.kgv.edu.hk>

next in thread | previous in thread | raw e-mail | index | archive | help
* John Ryan <jryan@kgv.edu.hk> [000309 20:52] wrote:
> On Thu, 9 Mar 2000, Alfred Perlstein wrote:
> 
> > * John Ryan <jryan@kgv.edu.hk> [000309 19:50] wrote:
> > > Whenever I mount a CDRom on my system, it panics.  I have a debug kernel
> > > and below is some of the output from kgdb.
> > >   
> > > I found a FAQ that says if you get this, increase NMBCLUSTERS, but the
> > > output from netstat -m looks like:
> > 
> > NMBCLUSTERS is only useful when one panics as a result of massive amounts
> > of network traffic.  Also, you need to mention what version of FreeBSD you
> > are using, I assume 3-something because that's what matches the traceback
> > best.
> 
> Sorry, FreeBSD 3.4STABLE - output of uname -a:
> FreeBSD student.kgv.edu.hk 3.4-STABLE FreeBSD 3.4-STABLE #12: Fri Mar  3 08:55:53 CST 2000     root@student.kgv.edu.hk:/usr/src/sys/compile/STUDENT  i386
> 
> > 
> > ...
> > > panicstr: kmem_malloc(-943165440): kmem_map too small: 12419072 total allocated
> > > panic messages:
> > > ---
> > > panic: kmem_malloc(-943165440): kmem_map too small: 12419072 total allocated
> > > mp_lock = 00000001; cpuid = 0; lapic.id = 00000000
> > > boot() called on cpu#0
> > 
> > ...
> > 
> > > #1  0xc0143af7 in panic (
> > >     fmt=0xc02442f6 "kmem_malloc(%d): kmem_map too small: %d total allocated")
> > >     at ../../kern/kern_shutdown.c:446
> > > #2  0xc01e94fb in kmem_malloc (map=0xc02710c8, size=3351801856, waitflag=0)
> > >     at ../../vm/vm_kern.c:302
> > > #3  0xc01406dc in malloc (size=3351799944, type=0xc0257b8c, flags=0)
> > >     at ../../kern/kern_malloc.c:157
> > > #4  0xc01692d7 in vfs_hang_addrlist (mp=0xc14fc600, nep=0xc0f46c20, 
> > >     argp=0xc9026d18) at ../../kern/vfs_subr.c:2211
> > > #5  0xc01694fe in vfs_export (mp=0xc14fc600, nep=0xc0f46c20, argp=0xc9026d18)
> > >     at ../../kern/vfs_subr.c:2312
> > > #6  0xc01311d4 in cd9660_mount (mp=0xc14fc600, path=0x808f090 "/cdrom", 
> > >     data=0xbfbfd720 "", ndp=0xc9026eb8, p=0xc8fe0de0)
> > >     at ../../isofs/cd9660/cd9660_vfsops.c:213
> > > #7  0xc016a35a in mount (p=0xc8fe0de0, uap=0xc9026f94)
> > >     at ../../kern/vfs_syscalls.c:305
> > > #8  0xc021589f in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 0, 
> > >       tf_esi = 0, tf_ebp = -1077946444, tf_isp = -922587164, tf_ebx = 0, 
> > >       tf_edx = -1077946460, tf_ecx = -1077945356, tf_eax = 21, tf_trapno = 12, 
> > >       tf_err = 2, tf_eip = 134541012, tf_cs = 31, tf_eflags = 662, 
> > >       tf_esp = -1077946628, tf_ss = 39}) at ../../i386/i386/trap.c:1100
> > > #9  0xc02022ec in Xint0x80_syscall ()
> > > #10 0x804963c in ?? ()
> > > ---Type <return> to continue, or q <return> to quit---
> > > #11 0xbfbfdfcc in ?? ()
> > > #12 0x80484e5 in ?? ()
> > > #13 0x80480e9 in ?? ()
> > > (kgdb) up 6
> > > #6  0xc01311d4 in cd9660_mount (mp=0xc14fc600, path=0x808f090 "/cdrom", 
> > >     data=0xbfbfd720 "", ndp=0xc9026eb8, p=0xc8fe0de0)
> > >     at ../../isofs/cd9660/cd9660_vfsops.c:213
> > > 213				return (vfs_export(mp, &imp->im_export, &args.export));
> > > (kgdb) quit
> > 
> > It looks like mount is passing in an invalid mount structure to the
> > kernel, is your userland and kernel in sync?  If so can you please show
> > me the output of
> 
> I've tried a couple of times to fix this.  It used to be okay at 3.3, but
> I did a make update, followed a make world, then rebuilt and installed the
> kernel.  Everything should be in sync.
> 
> > 
> > print args
> > 
> > in the 6'th stack frame?
> 
> (kgdb) up 6
> #6  0xc01311d4 in cd9660_mount (mp=0xc14fc600, path=0x808f090 "/cdrom", 
>     data=0xbfbfd720 "", ndp=0xc9026eb8, p=0xc8fe0de0)
>     at ../../isofs/cd9660/cd9660_vfsops.c:213
> 213				return (vfs_export(mp, &imp->im_export, &args.export));
> (kgdb) print args
> $1 = {fspec = 0x0, export = {ex_flags = 256, ex_root = 3217020732, ex_anon = {
>       cr_ref = 1, cr_uid = 0, cr_ngroups = 8, cr_groups = {0, 2, 3, 4, 5, 20, 
>         31, 104, 0, 0, 0, 0, 0, 0, 0, 0, 3217020836, 16, 3217020820, 16, 0, 
>         3217022016, 3217022023, 528, 255, 0, 0, 528, 266, 0, 0, 3217022196, 
>         134518332, 134803552, 134803520, 256, 3217021864, 134803600, 6, 
>         3217021940, 4, 134820000, 3217022460, 9, 6, 1, 0, 3217020960, 
>         134803600, 134803520, 134803552, 134618216, 134681248, 3, 134803584, 
>         256, 1, 134781187, 134781187, 0, 131072, 134778620, 0, 0}}, 
>     ex_addr = 0xbfbfddfc, ex_addrlen = -1077946292, ex_mask = 0xbfbfd850, 
>     ex_masklen = 134778620, ex_indexfile = 0x80898d0 ""}, flags = 134547011, 
>   ssector = 5}
> (kgdb) quit
> 
> > 
> > what's in your /etc/export?
> 
> /cdrom -maproot=0 -network 10.1.0.0

I can't reproduce this, it would be smart of the kernel to maybe check
the sanity of the values passed in:

  ex_addrlen = -1077946292 ex_masklen = 134778620

Seems pretty wrong, can you please file a PR about this? I'll assign it
to myself.

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000309212355.Y14279>