gama-platform / gama

Main repository for developing the 2024+ versions of GAMA
https://gama-platform.org
GNU General Public License v3.0
12 stars 5 forks source link

Very recurrent ConcurrentModificationException while browsing big models code #129

Closed lesquoyb closed 2 months ago

lesquoyb commented 4 months ago

Describe the bug When I'm working on big models I very very often have an exception raising in during "Documentation" image Here is what the eclipse stack would look like:

Error in documenting agriculteur.gaml
java.lang.NullPointerException: Cannot invoke "String.isBlank()" because "result" is null
    at gaml.compiler.gaml.EGaml.getNameOfRef(EGaml.java:499)
    at gaml.compiler.gaml.EGaml.getKeyOfTypeRef(EGaml.java:396)
    at gaml.compiler.gaml.EGaml.getKeyOf(EGaml.java:351)
    at gaml.compiler.gaml.EGaml.getKeyOf(EGaml.java:327)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.fromTypeRef(GamlExpressionCompiler.java:346)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.caseTypeRef(GamlExpressionCompiler.java:860)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.caseTypeRef(GamlExpressionCompiler.java:1)
    at gaml.compiler.gaml.util.GamlSwitch.doSwitch(GamlSwitch.java:619)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.compile(GamlExpressionCompiler.java:227)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.compile(GamlExpressionCompiler.java:189)
    at gama.gaml.expressions.GamlExpressionFactory.createExpr(GamlExpressionFactory.java:163)
    at gama.gaml.descriptions.BasicExpressionDescription.compile(BasicExpressionDescription.java:103)
    at gama.gaml.descriptions.BasicExpressionDescription.getDenotedType(BasicExpressionDescription.java:161)
    at gama.gaml.statements.Facets.getTypeDenotedBy(Facets.java:321)
    at gama.gaml.descriptions.SymbolDescription.getTypeDenotedByFacet(SymbolDescription.java:291)
    at gama.gaml.descriptions.SymbolDescription.getTypeDenotedByFacet(SymbolDescription.java:271)
    at gama.gaml.descriptions.SymbolDescription.computeType(SymbolDescription.java:636)
    at gama.gaml.descriptions.SymbolDescription.getGamlType(SymbolDescription.java:618)
    at gama.gaml.descriptions.ActionDescription.getShortDocumentation(ActionDescription.java:239)
    at gama.gaml.descriptions.TypeDescription.documentActions(TypeDescription.java:127)
    at gama.gaml.descriptions.SpeciesDescription.documentThis(SpeciesDescription.java:678)
    at gama.gaml.expressions.types.SpeciesConstantExpression.getDocumentation(SpeciesConstantExpression.java:96)
    at gama.core.common.interfaces.IDocManager$DocumentationNode.<init>(IDocManager.java:46)
    at gaml.compiler.gaml.documentation.GamlResourceDocumenter.internalSetGamlDocumentation(GamlResourceDocumenter.java:148)
    at gaml.compiler.gaml.documentation.GamlResourceDocumenter.lambda$0(GamlResourceDocumenter.java:124)
    at gaml.compiler.gaml.documentation.GamlResourceDocumenter$1.run(GamlResourceDocumenter.java:84)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Also the issue happens in agriculteur.gaml according to the stack but I'm browsing a different file at the moment of the exception and actually never opened that file.

To Reproduce Steps to reproduce the behavior:

  1. Open a big model with many files and complex dependencies
  2. browse the code, maybe modify it a bit
  3. See error