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);Received on Sat Jun 28 2003 - 01:51:42 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:13 UTC