]> Kevux Git Server - fll/commit
Bugfix: wait condition issues, memory addressing issues, and exiting issues.
authorKevin Day <thekevinday@gmail.com>
Sun, 4 Apr 2021 21:52:57 +0000 (16:52 -0500)
committerKevin Day <thekevinday@gmail.com>
Sun, 4 Apr 2021 22:45:42 +0000 (17:45 -0500)
commit35eaff9760b3f6c2f1b362e5de0013b6ddfe9424
tree4ed04b3e38735f37938ba6d6e312c6dcc28d9631
parentd4070280aca546c72d00ebccd0e6d4a0f91df141
Bugfix: wait condition issues, memory addressing issues, and exiting issues.

The thread conditions, when waiting, may never stop waiting.
Switch to a timed wait, allowing for the condition to determine if it should stop waiting.
I attempting to signal the waits on exit, but this didn't work (however, this will still signal on exit).

Make sure to join all threads, add a failsafe thread join in the process delete function.

The array of processes is a single array.
When this array gets reallocated (resizing to a larger size) the memory addresses may change.
This is a serious problem in that the threads are using those addresses and they suddenly change.
The threads have no way of switching to the new addresses and memory problems happen.
Redesign the array of processes to an array of pointers to processes.
I considered using a block structure, but decided to keep it simple for now.
The downside of this is that on every resize, there must be another allocation for the process address being pointed to.
In the future, I may consider switching to a block structure where I allocated multiple blocks at a time, while still using pointers.

Rename "id_process" to "id_child" to avoid potential confusion between "processes" and "pids", given that I am using "process" with a very different context in this project.

Update all timeouts to be stored in macros.

The cleanup and exit functions were deadlocking, change the locking usage in these functions.

Add missing increment at the end of the loop when processing entry items.
level_3/controller/c/private-common.c
level_3/controller/c/private-common.h
level_3/controller/c/private-controller.c
level_3/controller/c/private-rule.c
level_3/controller/c/private-thread.c