SUMMARY: Invalid argument: TIOCGPGRP and TIOCSPGRP

From: Mark S. Anderson (anderson@neon.mitre.org)
Date: Mon Feb 12 1996 - 09:19:52 CST


Synopsis of original question:

> At boot time, these messages appear:
>
> intr: TIOCGPGRP: Invalid argument
> intr: TIOCSPGRP: Invalid argument
>
> I know that intr(8) is trying to manipulate the process group ID of the
> terminal. Can anybody tell me why intr(8) is calling ioctl(2) with an
> invalid argument, and how I can fix this?
 
The full text of the original question appears below.

Solution:
--------
The offending line in /etc/rc.local was:

  intr -a mount -vat nfs &

intr is used to allow the user to interrupt the nfs mounts if
necessary. To do that, intr must set some terminal attributes.
Problem is, by putting the command in the background, intr has no
controlling terminal and generates the error messages. We had
inadvertantly added the '&' (which is not in the version of rc.local
distributed with the OS) causing this problem. Removing the ampersand
solved the problem. The correct line is:

  intr -a mount -vat nfs

Thanks to:
casper@Holland.Sun.COM, who had the answer.
Glenn.Satchell@uniq.com.au, who suggested using trace to generate clues.

Mark Anderson
----------------------------------------------------------
Mitretek Systems, Inc. manderso@mitre.org
7525 Colshire Drive, MS Z420 voice: (703) 883-6439
McLean, VA 22102 FAX: (703) 883-1951

---------------------------------------------
Original Question:
---------------------------------------------
Dear Sun-managers;

System: Sun 4/370, SunOS 4.1.1

Lately, when I reboot this system, the following messages appear during
the boot process:

   intr -a mount -vat nfs
   starting additional services:
   intr: TIOCGPGRP: Invalid argument
   intr: TIOCSPGRP: Invalid argument
    biod

The error messages are obviously coming from the line:

   intr -a mount -vat nfs

in /etc/rc.local .

This is what I have learned from the manpages:

"Invalid argument" is the meaning of the EINVAL error. Intro(2)
explains: "A system call was made with an invalid argument." The
termio(4) manpage says TIOCGPGRP and TIOCSPGRP are arguments to the
ioctl() system call, and "explains":

   TIOCGPGRP and TIOCSPGRP are pointers to an int.

   TIOCGPGRP means: "set the value of that int to the process group ID
   of the distinguished process group associated with the terminal". (I
   think it means to "get process group" from the termio structure
   associated with the terminal.)

   TIOCSPGRP means: "associate the process group whose ID is specified
   by the value of that int with the terminal." (I think it means "set
   process group.")

So now I know that intr(8) is trying to manipulate the process group ID
of the terminal. What I don't know is what is wrong. Can anybody tell
me why intr(8) is calling ioctl(2) with an invalid argument, and how I
can fix this?

Your help is, as always, appreciated. (I will summarize.)

---------------------
End original question
---------------------



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:10:53 CDT