[4985] in testers
Re: Sparc autoupdates don't display anything on the console
daemon@ATHENA.MIT.EDU (Greg Hudson)
Fri Jul 13 10:20:04 2001
Message-Id: <200107131419.KAA07275@egyptian-gods.MIT.EDU>
To: Mitchell E Berger <mitchb@MIT.EDU>
cc: testers@MIT.EDU
In-Reply-To: Your message of "Fri, 13 Jul 2001 03:44:53 EDT."
<200107130744.DAA05359@byte-me.mit.edu>
Date: Fri, 13 Jul 2001 10:19:58 -0400
From: Greg Hudson <ghudson@MIT.EDU>
I have some more information about this problem.
Using a remote shell on a 9.0.10 machine, I trussed dm and then sent
it a SIGFPE. The results were quite as expected, leading up to:
waitid(P_ALL, 0, 0xFFBEEC78, WEXITED|WTRAPPED|WNOHANG) Err#10 ECHILD
setcontext(0xFFBEEE50)
read(5, 0xFFBEF170, 1024) (sleeping...)
I then did an "echo foo > /dev/console", and here's where things
started to go wrong:
read(5, " f o o\r\n", 1024) = 5
write(1, " f o o\r\n", 5) = 5
read(5, " f o o\r\r\n", 1024) = 6
write(1, " f o o\r\r\n", 6) = 6
read(5, " f o o\r\r\r\n", 1024) = 7
write(1, " f o o\r\r\r\n", 7) = 7
read(5, " f o o\r\r\r\r\n", 1024) = 8
write(1, " f o o\r\r\r\r\n", 8) = 8
read(5, " f o o\r\r\r\r\r\n", 1024) = 9
write(1, " f o o\r\r\r\r\r\n", 9) = 9
read(5, " f o o\r\r\r\r\r\r\n", 1024) = 10
write(1, " f o o\r\r\r\r\r\r\n", 10) = 10
...
It appears that output to dm's fd 1 is being treated as console output
and redirected (after nl -> crnl translation) back to the pty. I'm
not sure why the games you played with x_stop_wait() and closing file
descriptors >=3 would have any effect on this loop, or, for that
matter, why we don't see this loop on other platforms or under earlier
versions of Solaris.
I've put the system call trace in ~/tmp/dm.out for now.