RFR: 8138916: Logging write function does not allow for long enough messages
Rachel Protacio
rachel.protacio at oracle.com
Wed Oct 28 14:48:09 UTC 2015
Thank you for the comments, both Dmitry and Mikael. Replies inline.
Modified webrev: http://cr.openjdk.java.net/~rprotacio/8138916.01/
(Retested and works fine.)
On 10/27/2015 7:52 AM, Dmitry Samersoff wrote:
> Rachel,
>
> In worst case (windows, overflow) the code would parse format string
> four times.
You're right. I've added a check. New amount of times vnsprintf() is called:
posix, fits => 1
posix, overflow => 2
windows, fits => 1
windows, overflow => 3 (the best performance we can get)
> Also NEW_C_HEAP_ARRAY takes a lock and might become a
> performance bottleneck.
>
> POSIX equivalent of _vscprintf(fmt, args) is vsnprintf(NULL, 0, fmt, args)
>
> So it might be better to create os::log_vcprintf(fmt, args), then write
> code at log.hpp as:
>
> int buf_len = os::log_vcprintf(fmt, args);
> assert(buf_len < 2*page_size, "Stack overflow in logging");
> char buf[buf_len];
> vsprintf(buf, fmt, args);
I don't think this would work anyway. A char[] needs a static size.
Thanks,
Rachel
> -Dmitry
>
>
>
> On 2015-10-26 23:58, Rachel Protacio wrote:
>> Hello, all,
>>
>> Please review this fix to the faulty write function from the Unified
>> Logging framework.
>>
>> Summary: In logging/log.hpp, the logging vwrite function previously
>> asserted that the buffer remains within 512 characters, which is too
>> short for logging message of non-pre-determined length, e.g. for vtable
>> and itable function names. Now, the function resizes the buffer to the
>> appropriate length, asserting only that the resulting buffer is valid.
>> Includes tag "logtest" to test that logging can print an output of 518
>> characters.
>>
>> Open webrev:http://cr.openjdk.java.net/~rprotacio/8138916/
>> Bug:https://bugs.openjdk.java.net/browse/JDK-8138916
>>
>> Includes own acceptance test, and passes JPRT and remote hotspot/test
>> tests.
>>
>> Thank you,
>> Rachel
More information about the serviceability-dev
mailing list