RFR (S): 8237857: LogDecorations::uptimenanos is implemented incorrectly

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Jan 29 18:29:43 UTC 2020


On 1/29/20 12:13 AM, David Holmes wrote:
> Bug: https://bugs.openjdk.java.net/browse/JDK-8237857
> Webrev: http://cr.openjdk.java.net/~dholmes/8237857/webrev/

src/hotspot/share/logging/logConfiguration.cpp
     No comments.

src/hotspot/share/logging/logDecorations.hpp
     No comments.

src/hotspot/share/logging/logDecorations.cpp
     I was trying to figure out where you were going with this fix
     and now I see. It would be good if you mentioned in the bug
     report why you are using os::elapsedTime(). Perhaps even
     mention your elapsed_time() helper

test/hotspot/gtest/logging/test_logDecorations.cpp
     Thanks for adding this comment:

     L117:       // The sleep needs to be longer than the timer 
resolution to ensure
     L118:       // we see updates to 'timemillis'. Windows has the 
lowest resolution
     L119:       // at 15-16ms, so we use 20.

Thumbs up.

Dan


>
> After my changes in JDK-8235741 which changed uptimemillis to be the 
> same as uptimenanos*1000000 the gtest for the logging time decorators 
> started to fail intermittently on Windows where the uptimemillis 
> values was not advancing sometimes after a 5ms sleep. It turned out 
> this was actually a day one bug in the logging code that my change had 
> exposed - the code uptimenanos was using os::elapsed_counter() but 
> that isn't a time value it's just a counter value. On Linux/AIX/BSD it 
> happens to count at 1ns resolution but not so on Solaris and in 
> particular not so on Windows. When this counter value was truncated to 
> "millis" there was no guarantee the value would increase as expected 
> by the test.
>
> Changes:
> - use os::elapsedTimer() not os::elapsed_counter() for uptimemillis 
> and uptimenanos
> - remove dead code that should have been removed in JDK-8235741
> - update the test by:
>   - adding diagnostic printouts of the time values read
>   - fix a bug where the sleep time can be too short for Windows (see 
> details in bug report)
>
> Testing:
>   - gtests on all platforms with manual analysis of log files
>
> Thanks,
> David
> -----



More information about the hotspot-dev mailing list