5.1 on a production box with some small problems (su, linux emu
7)
Karl M. Joch
k.joch at kmjeuro.com
Sat Jun 28 09:12:51 PDT 2003
arno,
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);
arno at heho.snv.jussieu.fr 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
k.joch at ctseuro.com
http://www.ctseuro.com
More information about the freebsd-current
mailing list