ADDITIONAL SYSTEM INFORMATION :
Linux and Windows 64Bit with Java 11.0.19 Corretto and Adoptium
A DESCRIPTION OF THE PROBLEM :
Core Dump when using GregorianCalen
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Using the class below on my machine results in a crashed JVM in ~90% of cases.
When starting with lenient=false it always crashed (~12 tries)
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Should not crash
ACTUAL -
crashes
---------- BEGIN SOURCE ----------
import java.util.Calendar;
import java.util.Date;
import java.util.stream.IntStream;
public class Datetest
{
public static void main( String[] args )
{
Datetest.crashMe(false);
Datetest.crashMe(true);
}
public static void crashMe(boolean crash) {
IntStream.range( 0, 8000 ).forEach( i -> {
Calendar timespan = Calendar.getInstance();
timespan = removeTime( new Date(), crash );
timespan.getTime();
if (i%10==0) {
System.out.println( "Crash: "+crash+ " Iteration: " + i + " / " + timespan.toString() );
}
} );
}
public static Calendar removeTime( Date date, boolean crash_me )
{
Calendar calendar = Calendar.getInstance();
if (crash_me) {
calendar.setLenient( false );
}
calendar.setTime( date );
calendar = Datetest.removeTime( calendar );
return calendar;
}
public static Calendar removeTime( Calendar calendar )
{
calendar.set( Calendar.HOUR_OF_DAY, 0 );
calendar.set( Calendar.MINUTE, 0 );
calendar.set( Calendar.SECOND, 0 );
calendar.set( Calendar.MILLISECOND, 0 );
return calendar;
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Never crashes with lenient=true
I could also not reproduce this with 32bit-Build (5 tries)
FREQUENCY : often