Parallel heap verification in G1 currently has a flaw which is that, if different GC workers find and attempt to report issues around the same time the output can get messed up. This is not a correctness flaw, i.e. the issues will be correctly identified and reported. However, it does sometimes make it very hard to make sense of the output. It'd be helpful to ensure that the output generated by parallel heap verification is always easily readable.
While each GC worker generates output during parallel heap verification we should take a lock to ensure only one worker generates output at any one time. We can use ParGCRareEvent_lock, I don't think there's much point in introducing a new one just for this.
Also note that taking the lock will not affect the performance of heap verification in the normal case (where there are no failures). It will only serialize the workers when a failure is detected which is not a big issue given that we are about to fail anyway.