Matthew Foulkes <[EMAIL PROTECTED]> writes: > I looked at the source but am not expert enough to investigate this > myself. Sorry.
No problem. To further investigate it, I would very much like to see the strace output, if you could run that for me. strace -o trace.log schroot <schroot options> Since the program is setuid root, you will need to do this as root. Could you also try running with "</dev/null". The termios stuff is not done unless standard input is a terminal, so this should correct it. Is this the case. Lastly, if you could also try building from source with the attached patch (it removes all termios getting/setting), I would like to know if that changes the behaviour. > The ideal behaviour, in my view, would be for > > schroot -c ia32 -p any_program & > > to be equivalent to logging in to the chroot, changing to the right > working directory, running > > any_program & > > and then logging out of the chroot. At the moment this is not the case. This should be how it works. However, it's /not/ entirely equivalent to running "any_program &", because schroot cannot run backgrounded processes /inside itself/. If the oowriter process outlived schroot, it would prevent chroot cleanup, including filesystem unmounting. (You can do this, in fact, but you have to create a session first. It's only useful for running daemons, however.) > If the termios restore is indeed the problem, one might ask whether this > ought to be the job of schroot. I don't understand why schroot feels it > has to fix problems caused by any_program? Would bash do something > equivalent? If so, it might be worth investigating the approach used > there. Agreed. It was added as a convenience, but I may review how appropriate that is. It might be best only to run it for interactive use, for example (when no command is specified, and a shell is run). Regards, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please sign and encrypt your mail.
Index: schroot/schroot-base-main.cc =================================================================== --- schroot/schroot-base-main.cc (revision 894) +++ schroot/schroot-base-main.cc (working copy) @@ -96,20 +96,6 @@ std::cout.imbue(std::locale()); std::cerr.imbue(std::locale()); - // Save terminal state. - if (isatty(STDIN_FILENO)) - { - if (tcgetattr(STDIN_FILENO, &saved_termios) < 0) - { - termios_ok = false; - sbuild::log_warning() - << _("Error saving terminal settings") - << endl; - } - else - termios_ok = true; - } - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); textdomain (GETTEXT_PACKAGE); @@ -125,14 +111,6 @@ closelog(); - if (isatty(STDIN_FILENO) && termios_ok) - { - if (tcsetattr(STDIN_FILENO, TCSANOW, &saved_termios) < 0) - sbuild::log_warning() - << _("Error restoring terminal settings") - << endl; - } - return status; } catch (std::exception const& e) @@ -154,14 +132,6 @@ closelog(); - if (isatty(STDIN_FILENO) && termios_ok) - { - if (tcsetattr(STDIN_FILENO, TCSANOW, &saved_termios) < 0) - sbuild::log_warning() - << _("Error restoring terminal settings") - << endl; - } - return EXIT_FAILURE; } }
pgpB4udcly2ie.pgp
Description: PGP signature