RFR(trivial): 8231024: Improve the debug info when the output is truncated
Jie Fu
fujie at loongson.cn
Tue Sep 17 01:58:43 UTC 2019
Hi Ioi and David,
Thank you very much for your review and valuable comments.
Updated: http://cr.openjdk.java.net/~jiefu/8231024/webrev.02/
-1) Change the error message which is somewhat misleading
-2) Rename "written" to "required_len"
- Before the patch
------------------------------------
[2019-09-14 16:07:55,752] Agent[1]: stderr: OpenJDK 64-Bit Server VM
warning: increase O_BUFLEN in ostream.hpp -- output truncated
[2019-09-14 16:07:55,758] Agent[1]: stderr: OpenJDK 64-Bit Server VM
warning: increase O_BUFLEN in ostream.hpp -- output truncated
[2019-09-14 16:07:55,763] Agent[1]: stderr: OpenJDK 64-Bit Server VM
warning: increase O_BUFLEN in ostream.hpp -- output truncated
...
------------------------------------
- After the patch
------------------------------------
[2019-09-17 09:49:21,567] Agent[1]: stderr: OpenJDK 64-Bit Server VM
warning: outputStream::do_vsnprintf output truncated -- buffer length is
2000 bytes but 2013 bytes are needed.
[2019-09-17 09:49:21,571] Agent[1]: stderr: OpenJDK 64-Bit Server VM
warning: outputStream::do_vsnprintf output truncated -- buffer length is
2000 bytes but 2031 bytes are needed.
[2019-09-17 09:49:21,576] Agent[1]: stderr: OpenJDK 64-Bit Server VM
warning: outputStream::do_vsnprintf output truncated -- buffer length is
2000 bytes but 2049 bytes are needed.
...
------------------------------------
Could you please review it and give me some advice?
Thanks a lot.
Best regards,
Jie
On 2019/9/17 上午7:20, Ioi Lam wrote:
>
>
> On 9/16/19 12:44 AM, David Holmes wrote:
>> On 16/09/2019 5:09 pm, Jie Fu wrote:
>>> Hi David,
>>>
>>> Sorry for the confusion.
>>
>> The confusion is mine, not from you :)
>>
>>> On 2019/9/16 下午2:40, David Holmes wrote:
>>>> Okay I'm confused. I had assumed that the passed in buffer size
>>>> must be different in each case because of the 2014/2032/2050 values
>>>> in the message, but in fact they are all sized at 2000.
>>> According to the source code, the buffer size can be either
>>> 2000(O_BUFLEN) [1] or 2048(BUFLEN) [2].
>>> So it isn't always 2000.
>>
>> It is 2000 is all three examples of the output that you gave.
>
> xmlStream::va_tag() uses 2*K.
>
>>
>>>> That makes no sense
>>> I think it makes sense.
>>> It is still unclear which one (O_BUFLEN or BUFLEN?) should be
>>> increased if the current buffer size wasn't printed.
>>
>> You need to know the original caller that passed in the buffer size.
>>
>> But we can't just keep increasing the buffer size. We probably need
>> to examine the callers to see what amount of information is trying to
>> be passed through. Then decide whether to adjust what the callers are
>> passing through, or adjust the buffer size - perhaps on a callsite by
>> callsite basis rather than just bumping O_BUFLEN or BUFLEN.
>>
>
> I think the message should stop saying "increase O_BUFLEN" -- probably
> the reviewers will reject all future increase of O_BUFLEN and will
> suggest fixing the caller of outputStream::do_vsnprintf instead.
>
> Callers of outputStream::do_vsnprintf don't necessarily use O_BUFLEN.
> E.g., xmlStream::va_tag allocates its own buffer.
> VMError::report_and_die() also uses its own buffer -- it uses O_BUFLEN
> today, but there's no guarantee or requirement that it always does that.
>
> How about saying something like "outputStream::do_vsnprintf output
> truncated -- buffer length is 2000 bytes but 2100 bytes are needed."
>
>
>>>> - how can we have written e.g. 2014 bytes to a buffer of only 2000
>>>> bytes?
>>>
>>> The output is truncated since the current buffer size is too small
>>> (e.g., 2000 < 2014).
>>
>> Ah sorry - I'd missed that aspect of vsnprintf. We're calling:
>>
>> 102 int written = os::vsnprintf(buffer, buflen, format, ap);
>>
>> but it isn't "written" when it exceeds buflen, it's the required
>> buffer size.
>>
>
> I think the variable "written" should be renamed to "required".
>
> Thanks
> - Ioi
>
>> David
>> -----
>>
>>>
>>>> Do we have a bug in os::vsnprintf?
>>>
>>> I don't think so.
>>>
>>> Thanks a lot.
>>> Best regards,
>>> Jie
>>>
>>> [1]
>>> http://hg.openjdk.java.net/jdk/jdk/file/24df796eef3d/src/hotspot/share/utilities/ostream.cpp#l124
>>>
>>> [2]
>>> http://hg.openjdk.java.net/jdk/jdk/file/24df796eef3d/src/hotspot/share/utilities/xmlstream.cpp#l138
>>>
>>>
>>>
>
More information about the hotspot-dev
mailing list