Emilio Lopes <eclig@gmx.net> writes:
[snip]
> If you substitute `ls' by something appropriate, like `touch /tmp/foobar',
> you'll see that the command does not get executed at all.
>
> Thanks for any insight.
The reason is a bug in scsh that causes the REPL to hold the locks of
the command ports even though the REPL thread is not running any
more. The following patch fixes this:
Index: scsh.scm
===================================================================
RCS file: /cvsroot/scsh/scsh/scsh/Attic/scsh.scm,v
retrieving revision 1.46.2.4
diff -u -r1.46.2.4 scsh.scm
--- scsh.scm 24 Mar 2004 08:14:55 -0000 1.46.2.4
+++ scsh.scm 26 Apr 2006 09:36:53 -0000
@@ -1135,6 +1135,14 @@
(if (zero? pid)
;; Child
(lambda () ; Do all this outside the
WITH-INTERRUPTS.
+ (if narrow?
+ (begin
+ ;; ugly kludge:
+ ;; the REPL thread is not running any more,
+ ;; hence release its ports
+ (release-port-lock (command-input))
+ (release-port-lock (command-output))
+ (release-port-lock (command-error-output))))
;; There is no session if parent was started in batch-mode
(if (and (session-started?) clear-interactive?)
(set-batch-mode?! #t)) ; Children are non-interactive.
Thanks for the report!
--
Martin
|