]> Kevux Git Server - fll/commit
Bugfix: thread exiting issues and related.
authorKevin Day <thekevinday@gmail.com>
Sat, 10 Apr 2021 04:31:13 +0000 (23:31 -0500)
committerKevin Day <thekevinday@gmail.com>
Sat, 10 Apr 2021 04:46:01 +0000 (23:46 -0500)
commit1794318ae07cb61e92d01f119f88adebd49f10d7
tree342d026a940a49eeabe746900202a17d781f85a2
parentcd9fccf86e3d20d9f1bb00eceeb6cc6bff38025f
Bugfix: thread exiting issues and related.

My attempt to add locks to make helgrind ended up backfired on me.
It seems that when an interrupt is received, the cancel is being sent and it happens at any point in time.
Which includes when locks are opened.
When an interrupt cancels a thread with an open lock, that lock is never closed.
Then, using the same locks to handle cleanup of threads resulted in an occasional deadlock.
Remove all locking in the main thread.
The logic should be safe as the only cases where there might be a conflict, a f_thread_join() is in protected between them.
The cancel function should avoid locks to, where possible.
I am somewhat more nervous about this case, I need to review and confirm if main->thread->processs.size does not change.

I previously updated the force cancel exit thread to use waits and locks.
It later dawned on me that I could just get rid of the force cancel exit thread entirely and implement the same functionality in the cancel thread.
level_3/controller/c/private-common.c
level_3/controller/c/private-common.h
level_3/controller/c/private-thread.c
level_3/controller/c/private-thread.h