Mercurial > hg > truffle
diff src/share/vm/runtime/sweeper.cpp @ 2482:dbccacb79c63
7036236: VM crashes assert((!inside_attrs()) || is_error_reported()) failed ...
Summary: Eliminate the race condition.
Reviewed-by: kvn
author | iveresov |
---|---|
date | Thu, 14 Apr 2011 00:02:21 -0700 |
parents | 1d1603768966 |
children | f52ed367b66d |
line wrap: on
line diff
--- a/src/share/vm/runtime/sweeper.cpp Wed Apr 13 14:33:03 2011 -0700 +++ b/src/share/vm/runtime/sweeper.cpp Thu Apr 14 00:02:21 2011 -0700 @@ -418,6 +418,11 @@ // state of the code cache if it's requested. void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) { if (PrintMethodFlushing) { + stringStream s; + // Dump code cache state into a buffer before locking the tty, + // because log_state() will use locks causing lock conflicts. + CodeCache::log_state(&s); + ttyLocker ttyl; tty->print("### sweeper: %s ", msg); if (format != NULL) { @@ -426,10 +431,15 @@ tty->vprint(format, ap); va_end(ap); } - CodeCache::log_state(tty); tty->cr(); + tty->print_cr(s.as_string()); } if (LogCompilation && (xtty != NULL)) { + stringStream s; + // Dump code cache state into a buffer before locking the tty, + // because log_state() will use locks causing lock conflicts. + CodeCache::log_state(&s); + ttyLocker ttyl; xtty->begin_elem("sweeper state='%s' traversals='" INTX_FORMAT "' ", msg, (intx)traversal_count()); if (format != NULL) { @@ -438,7 +448,7 @@ xtty->vprint(format, ap); va_end(ap); } - CodeCache::log_state(xtty); + xtty->print(s.as_string()); xtty->stamp(); xtty->end_elem(); }