Hello Cheleswer,
It is possible to create a regression test for that?
Dmitry
On 18.03.2016 10:54, Cheleswer Sahu wrote:
Hi,
Please review the code changes for
https://bugs.openjdk.java.net/browse/JDK-8151442.
Webrev Link: http://cr.openjdk.java.net/~csahu/8151442/
Bug Brief:
In jstack thread dumps , thread name greater than 1996 characters
doesn’t close quotation marks properly.
Problem Identified:
Jstack is using below code to print thread name
src/share/vm/runtime/thread.cpp
void JavaThread::print_on(outputStream *st) const {
st->print("\"%s\" ", get_thread_name());
Here “st->print()” internally uses max buffer length as O_BUFLEN (2000).
void outputStream::do_vsnprintf_and_write_with_automatic_buffer(const
char* format, va_list ap, bool add_cr) {
char buffer[O_BUFLEN];
do_vsnprintf_and_write_with_automatic_buffer() finally calls
“vsnprintf()” which truncates the anything greater than the max
size(2000). In this case thread’s name(> 1996) along with quotation
marks (2)
plus one terminating character exceeds the max buffer size (2000),
therefore the closing quotation marks gets truncated.
Solution:
Split the “st->print("\"%s\" ", get_thread_name())” in two statements
1.st->print("\"%s", get_thread_name());
2.st->print("\" “);
This will ensure presence of closing quotation mark always.
Regards,
Cheleswer