-
Bug
-
Resolution: Fixed
-
P4
-
6
-
b112
-
x86
-
windows_7
-
Verified
FULL PRODUCT VERSION :
A DESCRIPTION OF THE PROBLEM :
If list contains itself then hashCode() loops forever (undetected recursion).
Items may be added/removed but operations requiring hashCode() (e.g. adding list to Map as key) results in stack overflow.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
List list=new ArrayList();
list.add(list);
list.hashCode();
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
some int value
ACTUAL -
exception
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.StackOverflowError
at java.util.AbstractList$Itr.<init>(AbstractList.java:318)
...
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class TestListStackOverflow {
public static void main(String[] args) {
List list=new ArrayList();
list.add(list);
list.hashCode();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
change specification or introduce loopback detection in hasCode evaluation.
A DESCRIPTION OF THE PROBLEM :
If list contains itself then hashCode() loops forever (undetected recursion).
Items may be added/removed but operations requiring hashCode() (e.g. adding list to Map as key) results in stack overflow.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
List list=new ArrayList();
list.add(list);
list.hashCode();
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
some int value
ACTUAL -
exception
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.StackOverflowError
at java.util.AbstractList$Itr.<init>(AbstractList.java:318)
...
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class TestListStackOverflow {
public static void main(String[] args) {
List list=new ArrayList();
list.add(list);
list.hashCode();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
change specification or introduce loopback detection in hasCode evaluation.