Problema de Estouro de Pilha (java.lang.StackOverflowError) Desconhecido

Olá amigos,

Estou com um erro na minha aplicação web (desenvolvida usando JSF, Ajax e RichFaces) e, para fazer o mapeamento, utilizo Hibernate.
Quando a aplicação vai setar um objeto do tipo List, ela utiliza um set normal:

public void setListRequisitanteString(List<String> listRequisitanteString) {      
        this.setListRequisitanteString(listRequisitanteString);
    }

Ela sempre setava corretamente. Porém, sem motivo algum, após fazer uma alteração em uma outra página e que não tem dependência nem relação nenhuma com esse List, a aplicação começou a gerar erro de estouro de pilha:

exception

javax.servlet.ServletException: #{diariaBean.inicializarCadastroDiaria}: java.lang.StackOverflowError
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

javax.faces.FacesException: #{diariaBean.inicializarCadastroDiaria}: java.lang.StackOverflowError
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
	javax.faces.component.UICommand.broadcast(UICommand.java:383)
	org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
	org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
	org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

javax.faces.el.EvaluationException: java.lang.StackOverflowError
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
	javax.faces.component.UICommand.broadcast(UICommand.java:383)
	org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
	org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
	org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.StackOverflowError
	br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
	br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
	br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
	br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
	br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
       [...continua mais de 180 linhas]

O erro cita DiariaBean.inicializarCadastroDiaria, pois é lá que o set está sendo chamado e o erro está sendo gerado, porém, como já disse, antigamente funcionava normalmente:

public String inicializarCadastroDiaria(){
        try {
                       
            setListRequisitanteString(new ArrayList<String>());  //<------------------ AQUI
            setListRequisitante((ArrayList<Funcionario>) fachada.getByExample(requisitante));
            setListRequisitadoString(new ArrayList<String>());
            setListRequisitado((ArrayList<Funcionario>) fachada.getByExample(requisitado));
            setListTransporteString(new ArrayList<String>());
            setListTransporte((ArrayList<Transporte>) fachada.getByExample(transporte));
            setListPagamentoString(new ArrayList<String>());
            setListPagamento((ArrayList<Pagamento>) fachada.getByExample(pagamento));
            setListViagemString(new ArrayList<String>());
            setListViagem((ArrayList<Viagem>) fachada.getByExample(viagem));
            setListCidadeString(new ArrayList<String>());
            setListCidade((ArrayList<Cidade>) fachada.getByExample(cidade));
            setListDiariaString(new ArrayList<String>());
            setListDiaria((ArrayList<Diaria>) fachada.getByExample(diaria));
            setListUfString(new ArrayList<String>());
            for(Funcionario r: listRequisitante){
                listRequisitanteString.add(r.getNome());
            }
[...Continua]

Desfiz a alteração que, repito, não tinha qualquer tipo de relacionamento com o List em questão (além disso, esse List é chamado uma página antes da página onde fizemos a nova alteração). Porém o erro continua acontecendo. Eu procurei o erro no Google, e pode ser um possível bug no Hibernate (que, aliás, foi citado neste próprio fórum). Mas eu utilizo uma versão do Hibernate que é mais nova do que a que estava com o bug (e que, de acordo com o próprio site oficial do Hibernate, já se encontrava corrigido).

Alguém poderia me dar alguma sugestão?

Desde já muito obrigado.

Magno

Quando o método vai parar?

public void setListRequisitanteString(List<String> listRequisitanteString) {        
    this.setListRequisitanteString(listRequisitanteString);  
}

Eu acho que só quando ocorrer a java.lang.StackOverflowError, porque o método está se chamando, sem nenhuma condição de parada.

[quote=rsakurai]Quando o método vai parar?

public void setListRequisitanteString(List<String> listRequisitanteString) {        
    this.setListRequisitanteString(listRequisitanteString);  
}

Eu acho que só quando ocorrer a java.lang.StackOverflowError, porque o método está se chamando, sem nenhuma condição de parada.[/quote]

os métodos de get e set foram gerados automaticamente pelo Netbeans, inclusive este aí. O engraçado é que isso sempre funcionou, sem dar estouro de pilha. Sim, é estranho, já conversei com a minha equipe de desenvolvimento dizendo que isso está esquisito faz tempo, mas nada foi feito porque a aplicação funcionava. Vou tentar alterar pra ver no que dá. Obrigado! Se der certo, volto a postar aqui.

O problema foi resolvido, era só isso mesmo, obrigado!!