summaryrefslogtreecommitdiff
path: root/scsh-process.scm
AgeCommit message (Collapse)Author
2017-11-18Perform trial wait with "nohang" set to #t when blockingPeter Bex
We might have missed the one and only SIGCHLD event for the process we're about to wait for, so attempt to reap it before entering the condition variable wait loop. Just in case, we always do this when we're woken up, so that we can't accidentally miss the signal.
2017-11-10Also unmask (if needed) sigchld in the child process thunkPeter Bex
This would be otherwise kept in masked mode because the thunk is in the dynamic extent of the dynamic-wind.
2017-11-10Don't unmask signal if the signal was already masked before forkingPeter Bex
2017-11-09Temporarily mask sigchld to avoid race condition in forkPeter Bex
We do a fork, and immediately afterwards we insert a scsh-process object into the pending processes table with the pid of the newly created child process. However, sigchld may arrive in between the fork and the insertion of the scsh-process object into the pending process table. The sigchld handler will reap the child process and attempt to update the pending scsh-process object, but it can't find it yet because the insertion of this object into the table happens after the fork, thus losing the reaped child's exit status. Then, if the program waits for the process after that, we enter an infinite busy waiting loop that expects a sigchld to arrive and update the object through the table, but that never happens because the child has already been reaped.
2017-11-08Fix process-wait on #f or a plain pidPeter Bex
Thanks to Jörg F. Wittenberger for the patch and test
2017-06-29Ensure ports are closed after reading in run/...* procedures (thanks to ↵Peter Bex
Jörg F. Wittenberger)
2017-06-03Reinstall deadlock workaround thread when forking with thread killingPeter Bex
2017-05-23Fix race condition that caused mutex to get unlocked when the process wasn't ↵Peter Bex
ready yet
2017-05-23Block only current thread instead of entire process when waiting for a child.Jörg Wittenberger
Signed-off-by: Peter Bex <peter@more-magic.net>
2017-01-24Update copyright yearPeter Bex
2017-01-21Clear pending process table on fork.Peter Bex
Thanks to Joerg Wittenberger
2017-01-21Also export proc:pid (thanks to Joerg Wittenberger)Peter Bex
2016-09-24Add proc:pid, proc?, signal-process and process-sleep for improved compatPeter Bex
Thanks to Joerg Wittenberger for the suggestion to add proc:pid and signal-process.
2015-07-18Fix default output redirections to ignore stderr.Peter Bex
This is what scsh does as well, and is more like a regular UNIX shell. Thanks to Haochi Kiang for reporting the bug and providing a patch.
2013-06-22Bump version to 0.4.1 (and update copyright year, while we're at it)0.4.1Peter Bex
2013-06-18Support unquote-splicing through a variant of exec-path (reported by Moritz)Peter Bex
2012-11-03Support new process-fork form which can kill all other threads. We still ↵Peter Bex
see some problems occurring
2012-10-06Fix order of returning0.3.1Peter Bex
2012-10-06Return #f from WAIT when nohang is given and the process hasn't completedPeter Bex
2012-10-06Provide a new 'wait' procedure so we don't need to modify the type of ↵0.3Peter Bex
process-wait, which could lead to trouble in user code when compiled with scrutiny and/or specialization. This procedure returns the values in a different order for ease of use. May be a bit confusing...
2012-10-06Revert back to standard-extension and include a type declaration override ↵Peter Bex
for scsh-process to fix bogus optimization of 'signal-handler' due to invalid scrutiny type
2012-10-06Add back the nohang option to the process-wait overridePeter Bex
2012-10-05Improve test for <<-redirection by making it less dependent on random ↵Peter Bex
factors that determine process interleaving, ensuring it gets processed through the pipeline rather than on the same descriptor by mangling it through 'tr'. Fix <<-redirection by reopening output port on new descriptor and explicitly setting up the input port to the given fd in the parent process
2012-10-04Reorder return values of process-wait; we shouldn't mess with that!Peter Bex
2012-10-03Add bookkeeping code for processes so we can get rid of all zombie processesPeter Bex
2012-10-03Clean up tempfiles by open/unlink combination in run/collecting*Peter Bex
2012-10-02Ensure port is closed before returning from run/sexp*; this would hopefull ↵Peter Bex
ensure processes don't hang when they keep writing while the pipe buffer is full. Instead, it would kill the process with sigpipe
2012-10-02fork/pipe returns #f in the child, not 0Peter Bex
2012-10-02Use implicit quasiquotation inside object-redirection rule tooPeter Bex
2012-10-02Fix setup script and remove untrue and misleading commentPeter Bex
2012-10-02Use better ->string conversion routinePeter Bex
2012-10-02Fix run/collecting* and add a testcase for itPeter Bex
2012-10-02Implement <<-redirectionPeter Bex
2012-10-01Implement appending to filesPeter Bex
2012-10-01Fix run/port* so it doesn't replace the input port when in the REPL. ↵Peter Bex
Unfortunately, no test for it
2012-10-01Implement run/file*, which is really weirdPeter Bex
2012-10-01Mistake: the fork should automatically exit, the user shouldn't need to do thisPeter Bex
2012-10-01Implement && and || (which is a bit of a hack in Chicken considering it's ↵Peter Bex
the empty symbol)
2012-10-01Add BSD license clausePeter Bex
2012-10-01Clean up FDs that we don't use anymorePeter Bex
2012-10-01Fix nested pipe expressions and run/sexps, adding tests for bothPeter Bex
2012-10-01Provide a more complete set of primitives, and convert fit-pipes to ↵Peter Bex
fork/pipe+ chain
2012-10-01Implement pipe fittingPeter Bex
2012-09-30Implement scheme begin forms, filedescriptor dup()ing and use ↵Peter Bex
print-error-message to print the error message, then exit
2012-09-30First stab at basic scsh interface. Currently can fork off subprocesses and ↵Peter Bex
run processess synchronously