I don't want to second guess the VM itself.  That would catch a very specific error in the VM internals but I think I'd rather just write unit tests for that.

What I will do is at least have the jump and bnz instructions explicitly check for a jump +0.  That will catch bugs in the user program which is what I really want to be protecting us from.  No user will unit test their code :)

There really isn't a good way to catch a more complex infinite loop in the user program though.  A `nop/jump -1` will still cause problems.