mbeddr / mbeddr.core

The mbeddr core. An extensible C
Eclipse Public License 2.0
225 stars 77 forks source link

StackOverflowError in isStaticallyEvaluatable #1194

Open slisson opened 9 years ago

slisson commented 9 years ago

I created a "#macro" that references itself: #macro M1() = M1();. This doesn't make sense, but MPS becomes unresponsive because of all the StackOverflowErrors that are thrown.

java.lang.StackOverflowError
    at jetbrains.mps.smodel.SNodePointer.equals(SNodePointer.java:95)
    at java.util.HashMap.put(HashMap.java:376)
    at java.util.HashSet.add(HashSet.java:200)
    at jetbrains.mps.smodel.NodeReadAccessInEditorListener.addRefTargetToDependOn(NodeReadAccessInEditorListener.java:100)
    at jetbrains.mps.smodel.NodeReadAccessCasterInEditor$ListenersContainer.fireReferenceTargetReadAccessed(NodeReadAccessCasterInEditor.java:202)
    at jetbrains.mps.smodel.NodeReadAccessCasterInEditor.fireReferenceTargetReadAccessed(NodeReadAccessCasterInEditor.java:59)
    at jetbrains.mps.smodel.StaticReference.getTargetNode_internal(StaticReference.java:90)
    at jetbrains.mps.smodel.SReference.getTargetNode(SReference.java:149)
    at jetbrains.mps.util.SNodeOperations.getTargetNodeSilently(SNodeOperations.java:366)
    at jetbrains.mps.smodel.CopyUtil.addReferences(CopyUtil.java:132)
    at jetbrains.mps.smodel.CopyUtil.copy(CopyUtil.java:94)
    at jetbrains.mps.smodel.CopyUtil.copy(CopyUtil.java:71)
    at jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations.copyNode(SNodeOperations.java:73)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionDeclaration_Behavior.call_isStaticallyEvaluatable_7533755140567126172(GlobalConstantFunctionDeclaration_Behavior.java:39)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_Behavior.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_Behavior.java:23)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_BehaviorDescriptor.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_BehaviorDescriptor.java:19)
    at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.genericInvoke(CompiledBehaviorDescriptor.java:82)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.invoke(CompiledBehaviorDescriptor.java:63)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:61)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:90)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionDeclaration_Behavior.call_isStaticallyEvaluatable_7533755140567126172(GlobalConstantFunctionDeclaration_Behavior.java:46)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_Behavior.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_Behavior.java:23)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_BehaviorDescriptor.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_BehaviorDescriptor.java:19)
    at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.genericInvoke(CompiledBehaviorDescriptor.java:82)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.invoke(CompiledBehaviorDescriptor.java:63)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:61)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:90)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionDeclaration_Behavior.call_isStaticallyEvaluatable_7533755140567126172(GlobalConstantFunctionDeclaration_Behavior.java:46)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_Behavior.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_Behavior.java:23)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_BehaviorDescriptor.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_BehaviorDescriptor.java:19)
    at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.genericInvoke(CompiledBehaviorDescriptor.java:82)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.invoke(CompiledBehaviorDescriptor.java:63)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:61)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:90)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionDeclaration_Behavior.call_isStaticallyEvaluatable_7533755140567126172(GlobalConstantFunctionDeclaration_Behavior.java:46)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_Behavior.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_Behavior.java:23)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_BehaviorDescriptor.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_BehaviorDescriptor.java:19)
    at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.genericInvoke(CompiledBehaviorDescriptor.java:82)
    at jetbrains.mps.smodel.runtime.impl.CompiledBehaviorDescriptor.invoke(CompiledBehaviorDescriptor.java:63)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:61)
    at jetbrains.mps.smodel.behaviour.BehaviorReflection.invokeVirtual(BehaviorReflection.java:90)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionDeclaration_Behavior.call_isStaticallyEvaluatable_7533755140567126172(GlobalConstantFunctionDeclaration_Behavior.java:46)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_Behavior.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_Behavior.java:23)
    at com.mbeddr.core.modules.behavior.GlobalConstantFunctionRef_BehaviorDescriptor.virtual_isStaticallyEvaluatable_3788988821852141811(GlobalConstantFunctionRef_BehaviorDescriptor.java:19)
    at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
alexanderpann commented 4 months ago

The issue still exists. At least only an internal error is thrown.