The G1 logging currently does repeated calls to the gclog_or_tty->print() method before calling gclog_or_tty->print_cr(). This means that several threads can end up writing information in the same log line.
This makes it difficult to write tools that parse the log files. The performance team is currently experiencing problems with time stamps from the concurrent mark thread being written in the middle of G1 pause information.
Use a small char* buffer and log intermediate information to that buffer. Then just do one call to gclog_or_tty->print_cr() when the information is complete.
*** (#1 of 1): [ UNSAVED ] ###@###.###