Subject: Re: illegal variable name error upon login
To: None <paul@whooppee.com>
From: Zafer Aydogan <zafer@aydogan.de>
List: current-users
Date: 07/16/2007 00:09:39
2007/7/15, Paul Goyette <paul@whooppee.com>:
> I got that recently when I updated to 4.99.23 and traced it down to the
> 'alias hup ...' line in ~root/.cshrc  I'm not sure if it was the $< part
> or the \!$ part.
>
> After a couple logins, it went away before I could find the root cause.
>
>
> On Sat, 14 Jul 2007, Zafer Aydogan wrote:
>
> > Hello list,
> >
> > I'm getting this error, but I don't know what causes it.
> > If I login (csh), the message "Illegal variable name" is printed.
> > Screenshot: http://aydogan.org/login/illegal_variable_name.png
> >
> > I trussed it. The end looks like this:
> >
> > 435      1 csh      ioctl(0x3, FIOCLEX, 0)      = 0
> >  435      1 csh      __fstat30(0x3, 0xbfbfecf4)  = 0
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfedbc, 0xbfbfedac) = 0
> >  435      1 csh      ioctl(0x3, TIOCGETA, 0xbfbfec70) Err#25 ENOTTY
> >  435      1 csh      __sigprocmask14(0x3, 0xbfbfedac, 0) = 0
> >  435      1 csh      lseek(0x3, 0, 0, 0, 0x1)    = 0
> >  435      1 csh      lseek(0x3, 0, 0, 0, 0x1)    = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0x2, 0xbfbfec88, 0) = 0
> >  435      1 csh      read(0x3, 0xbfbfbb5b, 0x1000) = 974
> >      "#\t$NetBSD: dot.cshrc,v 1.16 2006/08/31 22:33:14 hubertf Exp $\n\nali"
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0x2, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0x2, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      close(0)                    Err#9 EBADF
> >  435      1 csh      dup(0x13)                   = 0
> >  435      1 csh      ioctl(0, FIONCLEX, 0)       = 0
> >  435      1 csh      close(0x1)                  Err#9 EBADF
> >  435      1 csh      dup(0x11)                   = 1
> >  435      1 csh      ioctl(0x1, FIONCLEX, 0)     = 0
> >  435      1 csh      close(0x2)                  Err#9 EBADF
> >  435      1 csh      dup(0x12)                   = 2
> >  435      1 csh      ioctl(0x2, FIONCLEX, 0)     = 0
> >  435      1 csh      close(0)                    = 0
> >  435      1 csh      close(0x1)                  = 0
> >  435      1 csh      close(0x2)                  = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0x2, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      close(0)                    Err#9 EBADF
> >  435      1 csh      dup(0x13)                   = 0
> >  435      1 csh      ioctl(0, FIONCLEX, 0)       = 0
> >  435      1 csh      close(0x1)                  Err#9 EBADF
> >  435      1 csh      dup(0x11)                   = 1
> > 435      1 csh      ioctl(0x1, FIONCLEX, 0)     = 0
> >  435      1 csh      close(0x2)                  Err#9 EBADF
> >  435      1 csh      dup(0x12)                   = 2
> >  435      1 csh      ioctl(0x2, FIONCLEX, 0)     = 0
> >  435      1 csh      close(0)                    = 0
> >  435      1 csh      close(0x1)                  = 0
> >  435      1 csh      close(0x2)                  = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0x2, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      close(0)                    Err#9 EBADF
> >  435      1 csh      dup(0x13)                   = 0
> >  435      1 csh      ioctl(0, FIONCLEX, 0)       = 0
> >  435      1 csh      close(0x1)                  Err#9 EBADF
> >  435      1 csh      dup(0x11)                   = 1
> >  435      1 csh      ioctl(0x1, FIONCLEX, 0)     = 0
> >  435      1 csh      close(0x2)                  Err#9 EBADF
> >  435      1 csh      dup(0x12)                   = 2
> >  435      1 csh      ioctl(0x2, FIONCLEX, 0)     = 0
> >  435      1 csh      close(0)                    = 0
> >  435      1 csh      close(0x1)                  = 0
> >  435      1 csh      close(0x2)                  = 0
> >  435      1 csh      __sigprocmask14(0, 0, 0x8068af8) = 0
> >  435      1 csh      __sigprocmask14(0x2, 0xbfbfec88, 0) = 0
> >  435      1 csh      __sigprocmask14(0x1, 0xbfbfec88, 0) = 0
> >  435      1 csh      write(0x12, 0x806e800, 0x17) = 23
> >      "Illegal variable name.\n"
> >  435      1 csh      lseek(0x3, 0, 0, 0, 0x2)    = 974
> >  435      1 csh      __sigprocmask14(0x3#
> >
> > and in fact, if I remove .cshrc, the error is gone.
> > if I switch to /bin/sh or ksh, the error is gone aswell.
> >
> > Any ideas ?
> >
> > Zafer.
> >
>
> ----------------------------------------------------------------------
> |   Paul Goyette   | PGP DSS Key fingerprint: |  E-mail addresses:   |
> | Customer Service | FA29 0E3B 35AF E8AE 6651 |  paul@whooppee.com   |
> | Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette@juniper.net |
> ----------------------------------------------------------------------
>
Michael has filed a PR:

http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=36650

The problem seems to be that in the latest change of csh the private
type 'bool', which is
an int, was replaced by the _Bool type from stdbool. However, the 'bool'
type is used in csh to store small integers and not just boolean values.

Zafer.