<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gh_mirror/jhunkeler/stasis.git/src/lib, branch timeout-hours-bug</title>
<subtitle>A pipeline delivery generator
</subtitle>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/'/>
<entry>
<title>Fixes number of seconds in an hour. Oops.</title>
<updated>2026-01-16T19:28:25+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2026-01-16T19:28:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=23d3e4c5b313f1a6cb14dcee505a12020a8bf418'/>
<id>23d3e4c5b313f1a6cb14dcee505a12020a8bf418</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Trying to fix a buffer overflow reported by the CI</title>
<updated>2026-01-03T07:03:01+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2026-01-03T07:01:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=5c1f18bf3a98ad71d3674f4fd935feae73e0963a'/>
<id>5c1f18bf3a98ad71d3674f4fd935feae73e0963a</id>
<content type='text'>
* Locally ASAN wasn't complaining.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Locally ASAN wasn't complaining.
</pre>
</div>
</content>
</entry>
<entry>
<title>Consolidate timer data</title>
<updated>2026-01-02T21:29:10+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2026-01-02T21:29:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=69ad7329284d9d5af6d23a4fb4a6f605228ea52a'/>
<id>69ad7329284d9d5af6d23a4fb4a6f605228ea52a</id>
<content type='text'>
* Add MultiProcessingTimer struct
* Replace raw timespec and double counters with MultiProcessingTimer(s)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Add MultiProcessingTimer struct
* Replace raw timespec and double counters with MultiProcessingTimer(s)
</pre>
</div>
</content>
</entry>
<entry>
<title>Move utility functions to utils.c</title>
<updated>2026-01-02T21:23:28+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2026-01-02T21:23:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=9be1567765803341e252e87262dc43d790d8e770'/>
<id>9be1567765803341e252e87262dc43d790d8e770</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update multiprocessing to use semaphore</title>
<updated>2025-12-31T16:53:20+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2025-12-31T16:51:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=1d071010c2bec860e62371cfb70f2e12a7d00563'/>
<id>1d071010c2bec860e62371cfb70f2e12a7d00563</id>
<content type='text'>
* Introduce a small public domain timespec handling library
* Renamed MultiProcessingTask members _now and _seconds to _interval_start and _interval_stop
* Added interval_elapsed member
* Change elapsed member from type int to double
* mp_pool_free no longer tries to free semaphores with empty names
* semaphore_init uses the correct default value of 1 instead of 2. The bug was related to calling semaphore_wait before the child() process started and semaphore_post after the parent exited. Now we post before the child to prevent a deadlock
* Replace sleep with usleep in mp_pool_join. Set to 100ms.
* Replace time() with clock_gettime() (helper functions created to prevent mistakes)
* Stop recording time when the process ends. This fixes a bug where a process ends and up to 3 different elapsed times were reported to the user.
* Progress output is now always available, not only when pid &gt; 0
* Implement seconds_to_human_readable and hook it up to progress reporting calls. Breaking down thousands of seconds in my head after a long run was mentally exhausting.
* Cleaned up some if-statements; removed else-if for clarity
* Implemented a global timeout for pool tasks
* Add register_semaphore() and semaphore_handle_exit() to aid with clean up. On Darwin a dangling shared memory file will lead to unexpected failures. These are destroyed via atexit().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Introduce a small public domain timespec handling library
* Renamed MultiProcessingTask members _now and _seconds to _interval_start and _interval_stop
* Added interval_elapsed member
* Change elapsed member from type int to double
* mp_pool_free no longer tries to free semaphores with empty names
* semaphore_init uses the correct default value of 1 instead of 2. The bug was related to calling semaphore_wait before the child() process started and semaphore_post after the parent exited. Now we post before the child to prevent a deadlock
* Replace sleep with usleep in mp_pool_join. Set to 100ms.
* Replace time() with clock_gettime() (helper functions created to prevent mistakes)
* Stop recording time when the process ends. This fixes a bug where a process ends and up to 3 different elapsed times were reported to the user.
* Progress output is now always available, not only when pid &gt; 0
* Implement seconds_to_human_readable and hook it up to progress reporting calls. Breaking down thousands of seconds in my head after a long run was mentally exhausting.
* Cleaned up some if-statements; removed else-if for clarity
* Implemented a global timeout for pool tasks
* Add register_semaphore() and semaphore_handle_exit() to aid with clean up. On Darwin a dangling shared memory file will lead to unexpected failures. These are destroyed via atexit().
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix broken header guard</title>
<updated>2025-12-31T03:38:24+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2025-12-31T03:38:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=059519c39bb7d452d651e7dc440594251966c88b'/>
<id>059519c39bb7d452d651e7dc440594251966c88b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement task timeout</title>
<updated>2025-12-30T16:28:36+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2025-12-30T16:28:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=18b29bd58d1daa1752e981488445e0fcb100f2a7'/>
<id>18b29bd58d1daa1752e981488445e0fcb100f2a7</id>
<content type='text'>
* Add argument: --task-timeout=1[s,m,h]
* Timed out tasks are SIGKILL'd
* If killing a task fails, the entire program ends
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Add argument: --task-timeout=1[s,m,h]
* Timed out tasks are SIGKILL'd
* If killing a task fails, the entire program ends
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix undefined PSEMNAMLEN on Darwin</title>
<updated>2025-12-24T15:04:28+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2025-12-24T15:04:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=67c290158cdb12b755c17b404f0eb63bc40eac73'/>
<id>67c290158cdb12b755c17b404f0eb63bc40eac73</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove blank line</title>
<updated>2025-11-18T13:45:48+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2025-11-18T13:45:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=df4c6e0b0df7b9839b11da53f03f69ed6d0c9244'/>
<id>df4c6e0b0df7b9839b11da53f03f69ed6d0c9244</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add destroy to example</title>
<updated>2025-11-18T13:45:29+00:00</updated>
<author>
<name>Joseph Hunkeler</name>
<email>jhunkeler@gmail.com</email>
</author>
<published>2025-11-18T13:45:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.einval.net/gh_mirror/jhunkeler/stasis.git/commit/?id=3d7e1eab65e815bf72b6101aee59d7b22e17c08b'/>
<id>3d7e1eab65e815bf72b6101aee59d7b22e17c08b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
