Sclang unstable shutdown with forked processes

Odd question… I just had to reboot my entire system because a rebooted sclang process failed to release port 57120.

The scenario is that my live set start up sequence launches two external processes: a2jmidid and VCV Rack (v1, will eventually update the Rack patches to v2 but not today).

Upon sclang shut down, I am trying to release these processes gracefully, but in fact it never actually happens. I found that it usually works, to reset the system, to quit Rack manually and then reboot the language interpreter. For some reason, recompiling just hangs.

I hadn’t seen port problems with this in the past, but today, 57120 remained unavailable. killall sclang did not release the port. A quick web search revealed that releasing a port where the process has already gone away is exceptionally complicated, so I cut my losses and rebooted the system.

Still… this means something nasty is going on with forked processes. It seems possible, under some circumstances, that a forked process can lock up sclang’s shutdown sequence (and I’ve also observed in turn that this can block IDE quit as well).

So… where do we take this next? I guess it’s not truly catastrophic, but IMO if a software package forces the user to reboot the system to restore normal behavior, then by definition something is wrong.