Estamos obteniendo ocasionalmente errores StackOverFlowError en la producción relacionados con la realización de una operación SubList. ¿Alguien ha visto algo así antes y sabe lo que podría causarlo?java.util.Sublist throwing StackOverFlowError
Este es el código que se llama que provoca el error:
FacesContext context = FacesContext.getCurrentInstance();
String newViewID = context.getViewRoot().getViewId();
if (newViewID != null) {
if (breadCrumbs.contains(newViewID)) {
// Trims the list upon going back to allow for multiple back button requests.
// This is lightweight and not intended for a complex circular navigation.
breadCrumbs = breadCrumbs.subList(0, breadCrumbs.indexOf(newViewID) + 1);
} else {
breadCrumbs.add(newViewID);
}
}
El resultado:
Caused By: java.lang.StackOverflowError
at java.util.SubList$1.<init>(AbstractList.java:688)
at java.util.SubList.listIterator(AbstractList.java:687)
at java.util.SubList$1.<init>(AbstractList.java:688)
at java.util.SubList.listIterator(AbstractList.java:687)
...
¿Qué versión del JDK está utilizando? SubList desde JDK abierto no parece tener este problema infinito de bucle: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/AbstractList.java #SubList –
Stackoverflow es un gran lugar para preguntar acerca de StackOverFlowError. – gawi
Existe la razón por la que a continuación (sublista de la lista mutable), pero lo que parece que quiere hacer es eliminar los elementos finales de la lista de migas y no crear una nueva vista de la lista anterior con ellos ocultos (lo que hace la sublista). –