--- old/src/share/vm/gc/g1/heapRegion.cpp 2017-06-18 08:18:50.110781500 +0200 +++ new/src/share/vm/gc/g1/heapRegion.cpp 2017-06-18 08:18:49.435689600 +0200 @@ -36,6 +36,7 @@ #include "gc/shared/genOopClosures.inline.hpp" #include "gc/shared/space.inline.hpp" #include "logging/log.hpp" +#include "logging/logStream.hpp" #include "memory/iterator.hpp" #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" @@ -527,17 +528,21 @@ HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p); log.error("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ")", p2i(p), p2i(_containing_obj), p2i(from->bottom()), p2i(from->end())); - print_object(log.error_stream(), _containing_obj); + // Unconditional write? + LogStream ls(log.error()); + print_object(&ls, _containing_obj); log.error("points to obj " PTR_FORMAT " not in the heap", p2i(obj)); } else { HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p); HeapRegion* to = _g1h->heap_region_containing((HeapWord*)obj); log.error("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ")", p2i(p), p2i(_containing_obj), p2i(from->bottom()), p2i(from->end())); - print_object(log.error_stream(), _containing_obj); + // Unconditional write? + LogStream ls(log.error()); + print_object(&ls, _containing_obj); log.error("points to dead obj " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ")", p2i(obj), p2i(to->bottom()), p2i(to->end())); - print_object(log.error_stream(), obj); + print_object(&ls, obj); } log.error("----------"); _failures = true; @@ -594,10 +599,12 @@ log.error("Field " PTR_FORMAT " of obj " PTR_FORMAT ", in region " HR_FORMAT, p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from)); ResourceMark rm; - _containing_obj->print_on(log.error_stream()); + // Unconditional write? + LogStream ls(log.error()); + _containing_obj->print_on(&ls); log.error("points to obj " PTR_FORMAT " in region " HR_FORMAT, p2i(obj), HR_FORMAT_PARAMS(to)); if (obj->is_oop()) { - obj->print_on(log.error_stream()); + obj->print_on(&ls); } log.error("Obj head CTE = %d, field CTE = %d.", cv_obj, cv_field); log.error("----------");