21:20:19stassatsso much advice on the internet is wrong, like all the people trying to convince that fork+exec is really fast because of CoW
21:21:29stassatsand now i can reproduce the deadlock in run-program
21:22:42stassatsmaybe interrupting fork is not a good idea and i should push the change that moves forking into a separate non-lisp thread
21:31:07stassatsi actually want two dedicated threads for run-program houskeeping, the C one will fork, handle SIGCHLD and the lisp one will handle input/output polling
21:32:00stassatsbut first i need to somehow use vfork/clone
21:32:11stassatsmaybe a dedicated subprocess for launching processes
21:40:51stassatsa dedicated thread doesn't help, seems like malloc itself is broken, maybe there's just no progress, not a real lock
21:44:47stassatsit eventually reaches a state where it just GCes in a loop
22:33:31stassatsa sigchld handler is in play as well