thanks. i already found that patch posted somewhere on people.freebsd.org. but it hasnt helped. but thanks anyway.
i had that : --- su.c.orig Sat Jun 28 17:52:21 2003 +++ su.c Sat Jun 28 17:57:13 2003 @@ -359,6 +359,8 @@ child_pid = fork(); switch (child_pid) { default: + sa.sa_handler = SIG_IGN; + sigaction(SIGTTOU, &sa, NULL); close(fds[0]); setpgid(child_pid, child_pid); tcsetpgrp(1, child_pid); @@ -366,7 +368,9 @@ sigaction(SIGPIPE, &sa_pipe, NULL); while ((pid = waitpid(child_pid, &statusp, WUNTRACED)) != -1) { if (WIFSTOPPED(statusp)) { - kill(getpid(), SIGSTOP); + if (WSTOPSIG(statusp) != SIGTTOU && + WSTOPSIG(statusp) != SIGTTIN) + kill(getpid(), SIGSTOP); child_pgrp = getpgid(child_pid); tcsetpgrp(1, child_pgrp); kill(child_pid, SIGCONT);
[EMAIL PROTECTED] wrote:
Karl,
i run 5.1 on one of the inhouse production boxes successful. there are only 2 small points witch are a pain and i found no solution. box was fresh setup with 5.0 then cvsuped to 5.1.
1. when starting some scripts su doesnt return from the shell and hangs on boot. when starting manually i get "tty output stopped". with exit there is a way out of this shell, but i havnt found a solution. most of the scripts runs since 3.x, at least 4.x and was working up to 4.8. one of this scripts is the pervasive sql server startup script which is part of the pervasive server for linux. using #!/compat/linux/bin/sh doesnt help. there are 2 lines in it starting sqlmgr and psql with: echo "commands...." | /bin/su - psql || exit 1 after the 1st one tty output is stopped. the other script is vmware and vncserver related and uses linux emu too.
I had a similar problem, which has been solved by the following patch posted by David Xu (not white-space clean), you might give it a try.
Arno
#####
Index: usr.bin/su/su.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/su/su.c,v
retrieving revision 1.68
diff -c -r1.68 su.c
*** usr.bin/su/su.c 8 Apr 2003 16:59:53 -0000 1.68
--- usr.bin/su/su.c 28 Jun 2003 10:33:17 -0000
***************
*** 359,364 ****
--- 359,366 ----
child_pid = fork();
switch (child_pid) {
default:
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGTTOU, &sa, NULL);
close(fds[0]);
setpgid(child_pid, child_pid);
tcsetpgrp(1, child_pid);
***************
*** 366,372 ****
sigaction(SIGPIPE, &sa_pipe, NULL);
while ((pid = waitpid(child_pid, &statusp, WUNTRACED)) != -1) {
if (WIFSTOPPED(statusp)) {
! kill(getpid(), SIGSTOP);
child_pgrp = getpgid(child_pid);
tcsetpgrp(1, child_pgrp);
kill(child_pid, SIGCONT);
--- 368,376 ----
sigaction(SIGPIPE, &sa_pipe, NULL);
while ((pid = waitpid(child_pid, &statusp, WUNTRACED)) != -1) {
if (WIFSTOPPED(statusp)) {
! if (WSTOPSIG(statusp) != SIGTTOU && ! WSTOPSIG(statusp) != SIGTTIN)
! kill(getpid(), SIGSTOP);
child_pgrp = getpgid(child_pid);
tcsetpgrp(1, child_pgrp);
kill(child_pid, SIGCONT);
-- Best regards / Mit freundlichen Gruessen,
Karl M. Joch [EMAIL PROTECTED] http://www.ctseuro.com
_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[EMAIL PROTECTED]"