Enormous utmp since mpsafetty

Peter Wemm peter at wemm.org
Fri Aug 29 20:21:51 UTC 2008

On Fri, Aug 29, 2008 at 8:40 AM, John Baldwin <jhb at freebsd.org> wrote:
> On Wednesday 27 August 2008 10:19:40 am Gary Jennejohn wrote:
>> On Wed, 27 Aug 2008 12:50:17 +0100 (BST)
>> Robert Watson <rwatson at FreeBSD.org> wrote:
>> > On Wed, 27 Aug 2008, Ollivier Robert wrote:
>> >
>> > > According to Gary Jennejohn:
>> > >> There are many more pseudo-ttys in /etc/ttys now.  AFAIK utmp allocates
> an
>> > >> entry for every one of them at startup.
>> > >
>> > > utmp concepts are ancient.  It is indexed by the tty/pty number so can
> grow
>> > > rather large but it should be a sparse one too.  I remember talks about
>> > > replacing it with something a bit more modern.  Backward compatibility
> is
>> > > assured through login(3) although it would break programs digging in the
>> > > utmp file itself.  SVR4 had utmp/utmpx and setutline/getutline BTW...
>> >
>> > Right -- utmp growing to 256K would be an excellent example of utmp format
>> > inefficiency.  On the other hand, utmp growing to 998M is probably an
> example
>> > of a bug rather than an inefficient design.  freefall.FreeBSD.org, a
>> > relatively busy shell box, has a utmp of around 5k, so common use doesn't
>> > generally exercise that inefficiency...
>> >
>> But freefall is running FreeBSD 7.0-STABLE #34: Sat Apr 12, so it doesn't
>> have the new tty stuff running, although I don't suppose that completely
>> explains the gigantic utmp which OT reported.
> The new pts entries are after all the 256 pty entries in /etc/ttys, so utmp
> may be larger becuase the pts entries are "later" in the file (higher
> offsets).  However, if the file is sparse, then it doesn't actually hurt
> anything.

Maybe so, but sizeof(struct utmp) is 44 bytes.  The OP reported a utmp
of 998MB.  The utmp slot is given by ttyslot(3), which looks up
/etc/ttys.  If everything was working right, there would have to be
roughly 24 million lines in /etc/ttys for ttyslot() to cause a
seek/write this high up.  Something obviously didn't go right.

On that note.. who wants to do utmp.db using the sysv/posix compatible
utmp/utmpx API to access it? Fixed index slots should have died 10+
years ago.

(getttyent(3) also handles the 'secure' flag, which is another pretty
outdated concept these days)
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com; KI6FJV
"All of this is for nothing if we don't go to the stars" - JMS/B5
"If Java had true garbage collection, most programs would delete
themselves upon execution." -- Robert Sewell

More information about the freebsd-current mailing list