If the user hits control-C while vupdate is running vadvance, the vadvance process seems to get sent the signal rather than the vupdate process. When vadvance fails in any way, vupdate continues (though it will exit with error status at the end). For a long-running vupdate, this can prevent the user from stopping it with control-C.
Another possibility is that the user hits control-C while vadvance is running a process configured as a trigger. In that case, vadvance will exit with failure status and print a message about the trigger being interrupted by the user. Again, vupdate will continue anyway.
I think the only solution to this is to have vupdate exit immediately when vadvance fails. If we decide we don't want that to happen in every case, we could make vadvance and other repository tools kill themselves with the same signal as a trigger is killed by, though we should probably do that only with certain signals. (We wouldn't want a repository tool to kill itself with SIGSEGV if the trigger died that way.) Then vupdate could exit immediately only if vadvance dies with certain signals.