United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 7129514 time warp warnings after 7117303
7129514 : time warp warnings after 7117303

Details
Type:
Bug
Submit Date:
2012-01-12
Status:
Closed
Updated Date:
2012-03-24
Project Name:
JDK
Resolved Date:
2012-03-24
Component:
hotspot
OS:
generic
Sub-Component:
gc
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs23
Fixed Versions:
hs23

Related Reports
Backport:
Backport:
Relates:

Sub Tasks

Description
Even after fix to 7117303, there are still some time warp warnings which indicate other problem. Note that time difference here is huge.

jstatd started as pid 28160
Java HotSpot(TM) Client VM warning: time warp: 1326343397113 to 23635156878

Java HotSpot(TM) Client VM warning: time warp: 1326346514971 to 13447721758

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/d903bf750e9f
                                     
2012-03-22
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/d903bf750e9f
                                     
2012-02-18
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/d903bf750e9f
                                     
2012-02-14
SUGGESTED FIX

Change remaining calls to os::javaTimeMillis() in GC code (used to update _time_since_last_gc or _millis_since_last_gc) to use os::javaTimeNanos() and convert to milliseconds.
                                     
2012-02-14
EVALUATION

As David points out - in the changes for 7117303, I missed a few calls to os::javaTimeMillis() in the GC code (specifically associated with updating the _time_of_last_gc field in the different generation types.

I believe that they can all be changed to us an alternative to os::javaTimeMillis().
                                     
2012-01-13
EVALUATION

It appears that various parts of the GC code still use os::javaTimeMillis to record GC times. These are not comparable with the value of javaTimeNanos() converted to ms that was put in place by 7117303.

./share/vm/memory/genMarkSweep.cpp:  gch->update_time_of_last_gc(os::javaTimeMillis());
./share/vm/memory/defNewGeneration.cpp:  update_time_of_last_gc(os::javaTimeMillis());
./share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp:  update_time_of_last_gc(os::javaTimeMillis());
./share/vm/gc_implementation/parNew/parNewGeneration.cpp:  update_time_of_last_gc(os::javaTimeMillis());

However it may be that GC times are expected to correlate to time-of-day values, which would mean we have a basic conflict in how these timestamps are used as they can not be both time-of-day values and monotonic.
                                     
2012-01-12



Hardware and Software, Engineered to Work Together