Invalid argument: TIOCGPGRP and TIOCSPGRP

2007-12-25 9:25:00

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

---------------------

Comments

Got something to say?

You must be logged in to post a comment.