<feed xmlns='http://www.w3.org/2005/Atom'>
<title>scsh-process, branch 1.2.0</title>
<subtitle>Egg to add Scheme Shell process notation to CHICKEN Scheme.
</subtitle>
<id>https://code.more-magic.net/scsh-process/atom?h=1.2.0</id>
<link rel='self' href='https://code.more-magic.net/scsh-process/atom?h=1.2.0'/>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/'/>
<updated>2017-12-09T11:25:10Z</updated>
<entry>
<title>Bump version to 1.2.0</title>
<updated>2017-12-09T11:25:10Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-12-09T11:25:10Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=c9ea3c7427f40f456a589e61529fb12cdb99d9af'/>
<id>urn:sha1:c9ea3c7427f40f456a589e61529fb12cdb99d9af</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do not redirect stderr to stdin in fork/pipe.</title>
<updated>2017-12-09T11:23:41Z</updated>
<author>
<name>Benutzer</name>
<email>u@exefce</email>
</author>
<published>2017-12-08T12:55:43Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=e9f13148358a250b72a7ddae932c828235eeb9ab'/>
<id>urn:sha1:e9f13148358a250b72a7ddae932c828235eeb9ab</id>
<content type='text'>
Signed-off-by: Peter Bex &lt;peter@more-magic.net&gt;
</content>
</entry>
<entry>
<title>Tag 1.1.0</title>
<updated>2017-11-18T13:31:26Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-18T13:31:26Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=afed169a7ae9b1957169390127ccd617fed62716'/>
<id>urn:sha1:afed169a7ae9b1957169390127ccd617fed62716</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Run signal handler in a separate thread</title>
<updated>2017-11-18T12:58:13Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-18T12:58:13Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=1adc1af6d9b52ad33f0b773cfdcd64573a2b7b9e'/>
<id>urn:sha1:1adc1af6d9b52ad33f0b773cfdcd64573a2b7b9e</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Perform trial wait with "nohang" set to #t when blocking</title>
<updated>2017-11-18T12:19:28Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-18T12:19:28Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=dac7e59c6ccd22d36ba4de9c9c6c171c143eb9cc'/>
<id>urn:sha1:dac7e59c6ccd22d36ba4de9c9c6c171c143eb9cc</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Tag 1.0.0</title>
<updated>2017-11-10T20:10:28Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-10T20:10:28Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=bb04c5e4dedaa967e5a0b14efdea8c1514b6e223'/>
<id>urn:sha1:bb04c5e4dedaa967e5a0b14efdea8c1514b6e223</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Also unmask (if needed) sigchld in the child process thunk</title>
<updated>2017-11-10T20:08:02Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-10T20:08:02Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=4e420e4d032b550fa6e0193a3bbf04f4db76cc8b'/>
<id>urn:sha1:4e420e4d032b550fa6e0193a3bbf04f4db76cc8b</id>
<content type='text'>
This would be otherwise kept in masked mode because the thunk is in
the dynamic extent of the dynamic-wind.
</content>
</entry>
<entry>
<title>Don't unmask signal if the signal was already masked before forking</title>
<updated>2017-11-10T20:03:18Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-10T20:00:22Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=a29a4e79aa00d697a564cb3bd7f1f78d7e5d7245'/>
<id>urn:sha1:a29a4e79aa00d697a564cb3bd7f1f78d7e5d7245</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Tag 0.9.0</title>
<updated>2017-11-09T20:33:50Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-09T20:33:50Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=bac1abe8dda69b9350aa1f983092ca1dfb9062be'/>
<id>urn:sha1:bac1abe8dda69b9350aa1f983092ca1dfb9062be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Temporarily mask sigchld to avoid race condition in fork</title>
<updated>2017-11-09T20:26:48Z</updated>
<author>
<name>Peter Bex</name>
<email>peter@more-magic.net</email>
</author>
<published>2017-11-09T20:26:48Z</published>
<link rel='alternate' type='text/html' href='https://code.more-magic.net/scsh-process/commit/?id=e7bf6cc5f6301e5d4be4d877b57039512379a1ec'/>
<id>urn:sha1:e7bf6cc5f6301e5d4be4d877b57039512379a1ec</id>
<content type='text'>
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.
</content>
</entry>
</feed>
