RFR JDK-8130914: java/util/zip/TestExtraTime.java fails with "java.lang.RuntimeException: setTime should make getLastModifiedTime return the specified instant: 3078282244456 got: 3078282244455"
Xueming Shen
xueming.shen at oracle.com
Thu Jul 16 17:04:31 UTC 2015
On 07/15/2015 03:33 PM, Claes Redestad wrote:
> Code change looks OK to me, but perhaps there should be an explicit long conversion somewhere around the getYear() part ('d.getYear() - 1980 << 25L') of the expressions to deal properly with even larger values?
>
The spec of the dos time has the up limit, it should not beyond 32-bit. It was
not a problem when anything number overflows into up 32-bit before we tried
to utilize the up bits for the < 2000ms bits.
> Are there added tests missing from the updated TestExtraTime? I guess this is an intermittent issue, but it looks odd to update the test without adding some explicit test that provoke this issue.
>
It appears this existing test can easily catch the bug, so I just add the bugid to indicate that
this regression test can be used for that particular bug.
thanks,
-sherman
> /Claes
>
> Xueming Shen <xueming.shen at oracle.com> skrev: (15 juli 2015 21:10:39 CEST)
>
> Hi,
>
> Please help review the change for JDK-8130914.
>
> issue:https://bugs.openjdk.java.net/browse/JDK-8130914
> webrev:http://cr.openjdk.java.net/~sherman/8130914 <http://cr.openjdk.java.net/%7Esherman/8130914>/
>
> This is a "regression" triggered by
> https://bugs.openjdk.java.net/browse/JDK-8130914
> http://cr.openjdk.java.net/~redestad/jdk9/8073497/webrev.6 <http://cr.openjdk.java.net/%7Eredestad/jdk9/8073497/webrev.6>/
>
> In which the change is to utilize a high 32-bit of the time value to store
> < 2000 ms time piece. It appears the offending timestamp (year 2067...)
> triggers the 32-bit "overflow" when converting java time to a 32-bit dos
> time.
>
> Thanks,
> -Sherman
>
More information about the core-libs-dev
mailing list