For clarification, the "exitcode" is only valid the FIRST TIME IT IS CALLED after the process exits.
If you have a method that polls a spawned process for its status, you *MUST* have that same method capture the exitcode: if the method is called a second time (after realizing the pid is dead) and it hasn't cached that exitcode, it will receive the -1 mentioned.