RFR(S): 8149557: Resource mark breaks printing to string stream
Lindenmaier, Goetz
goetz.lindenmaier at sap.com
Thu Feb 11 08:24:15 UTC 2016
Hi
Please review this change. I please need a sponsor.
http://cr.openjdk.java.net/~goetz/wr16/8149557-ResMrk/webrev.01/
If a stringStream is passed to Symbol::print_symbol_on(),
assertion "stringStream is re-allocated with a different ResourceMark." can fire in stringStream::write(const char* s, size_t len).
This can be verified by running TestLogTouchedMethods.java after adding the patch below to the VM.
My fix copies the string to locally managed memory before popping the ResoreceMark.
A better solution would be to guarantee enough space on the stream
before doing the resource mark, but outputStream has no such
method as 'ensureCapacity' or the like.
Alternatively the ResourceMark could be skipped altogether.
But then the aux memory used remains on the ResourceArea too long.
Also, various ResourceMarks have to be added in other places.
Best regards,
Goetz.
--- a/src/share/vm/runtime/java.cpp Wed Jan 13 11:33:21 2016 +0100
+++ b/src/share/vm/runtime/java.cpp Wed Feb 10 08:56:14 2016 +0100
@@ -340,7 +340,10 @@
}
if (LogTouchedMethods && PrintTouchedMethodsAtExit) {
- Method::print_touched_methods(tty);
+ ResourceMark rm;
+ stringStream st(16);
+ Method::print_touched_methods(&st);
+ tty->print("%s", st.as_string());
}
if (PrintBiasedLockingStatistics) {
More information about the hotspot-runtime-dev
mailing list