I am a little confused by the phrasing of this comment, though I agree with the sentiment and issue. To make sure we're on the same page, I can see a few possible interleavings (bold is kill() thread, unbold is this run() thread):

1) **kill = true**, **process.destroy()**, start process, return -1 [i.e., serial kill then run]
2) **kill = true**, start process, return -1, **process.destroy()** [last 2 commutative]
3) start process, **kill = true**, return -1, **process.destroy()** [last 2 commutative]
4) start process, process.waitFor(), **kill = true**, **process.destroy()** [i.e., serial run then kill]

In _all_ of these cases, since `process` cannot be made visible atomically as it is started, it's possible the process has not been destroyed. It is not, however, possible that we see killed=false, then start the process with a destruction in the middle, which is what the comment suggests.