summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-09-14Close extraneous file descriptors to prevent an FD leak.HEADmasterPeter Bex
After dup(2)ing an fd into another already existing fd, we can close the original.
2021-09-14Fix issue with redirection in run/port (and, by extension, run/string)Peter Bex
We would initially create a pipe, dup(2) that onto fd 1 in the forked process and open an output port on the original fd. This resulted in a pretty nasty bug: if the fd would be redirected (by number) later, it would not affect the output port because that was set up to point to the original fd. Instead, open an output port to the newly set up stdout and close the direct pipe port.
2020-05-17Bump version to 1.6.01.6.0Peter Bex
2020-05-17Use 0666 as default file-open modeVasilij Schneidermann
Signed-off-by: Peter Bex <peter@more-magic.net>
2019-05-16Add 1.5.2 to release-info filesPeter Bex
2019-05-16Add missing chicken.fixnum import for `fx+ in `run` macro1.5.2Evan Hanson
Signed-off-by: Peter Bex <peter@more-magic.net>
2019-01-20Use https instead of http for locationsPeter Bex
2018-10-10Bump version to 1.5.1 (for some reason 1.5.0 was not pointing to the latest ↵Peter Bex
codebase)
2018-10-04Add 1.5.0 to release-info1.5.1Peter Bex
2018-10-04Bump version to 1.5.01.5.0Peter Bex
2018-10-04Use llrb-tree for pending processes to conserve some ressources and use only ↵Jörg Wittenberger
one thread to forrward SIGHCLD to. Signed-off-by: Peter Bex <peter@more-magic.net>
2018-08-16Add release-info for CHICKEN 5, bump version1.4.0Peter Bex
2018-08-16Port scsh-process to CHICKEN 5Peter Bex
Thanks to Vasilij Schneidermann for providing an initial patch.
2018-08-16Wrap tests in module to make porting easierPeter Bex
2018-08-16Drop bogus testPeter Bex
run*/string* does not exist, and run/string* doesn't raise an exception on nonzero exit status.
2018-04-21Bump version to 1.3.01.3.0Peter Bex
2018-04-21Make ">" redirect truncate existing filesPeter Bex
Thanks to Joerg Wittenberger
2018-01-26Bump version to 1.2.21.2.2Peter Bex
2018-01-26Fix ordering of (= x y) redirection EPFPeter Bex
Thanks to Diego "dieggsy" for pointing out this incongruity with scsh-process.
2018-01-23Bump version to 1.2.11.2.1Peter Bex
2018-01-23Do not connect stdin to subprocess' stdout in run/filePeter Bex
This would cause the REPL to exit after calling (run/file ...) because it reached EOF. Strangely this didn't cause any issues in the tests. Still not sure why this would be the case. Reported by Diego "dieggsy"
2017-12-09Bump version to 1.2.01.2.0Peter Bex
2017-12-09Do not redirect stderr to stdin in fork/pipe.Benutzer
Signed-off-by: Peter Bex <peter@more-magic.net>
2017-11-18Tag 1.1.01.1.0Peter Bex
2017-11-18Run signal handler in a separate threadPeter Bex
This seems to be necessary so that condition-variable-broadcast! works when the signal handler is running in the same thread as the waiting thread.
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-10Tag 1.0.01.0.0Peter Bex
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-09Tag 0.9.00.9.0Peter 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-08Tag 0.8.30.8.3Peter Bex
2017-11-08Add a test case for "annonymous" wait.Jörg Wittenberger
Signed-off-by: Peter Bex <peter@more-magic.net>
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-29Tag 0.8.20.8.2Peter Bex
2017-06-29Ensure ports are closed after reading in run/...* procedures (thanks to ↵Peter Bex
Jörg F. Wittenberger)
2017-06-03Tag 0.8.10.8.1Peter Bex
2017-06-03Reinstall deadlock workaround thread when forking with thread killingPeter Bex
2017-05-23scsh-process: Add release 0.80.8Peter Bex
2017-05-23Fix race condition that caused mutex to get unlocked when the process wasn't ↵Peter Bex
ready yet
2017-05-23chicken-version is not from setup-apiPeter Bex
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-28scsh-process: Add release 0.7.10.7.1Peter Bex
2017-01-28Bump version to 0.7.1 (forgot to do that when tagging)Peter Bex
2017-01-24Update copyright yearPeter Bex
2017-01-24scsh-process: Add release 0.70.7Peter 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-24Bump version to 0.60.6Peter 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.