utils.pm::run_command does not consistently return the correct exit status. It often returns -1. This looks to be due to timing of when REAPER is called. Sometimes REAPER enters its 'while waitpid' block, sometimes it doesn't. Either way, the exit status is inconsistent.
I don't know of a benefit of entering REAPER for children of vcld child processes. It can be bypassed by adding the following in run_command after the process is forked:
If this is added, the exit status is always correct. It is also correct if the entire subroutine is changed to call the command via backticks.