TypeFox / yang-lsp

A Language Server for YANG
http://www.yang-central.org
Apache License 2.0
52 stars 13 forks source link

Grouping reference itself will cause Stackoverflow #158

Closed huyuwen closed 4 years ago

huyuwen commented 5 years ago

According to RFC 7950 Section 7.12, A grouping MUST NOT reference itself. But in current implementation, if a module has such kind of grouping, it will cause Stackoverflow.

module yt6 {
    namespace "urn:ietf:params:xml:ns:yang:yt6";
    prefix "yt6";
    grouping AA {
       leaf a {
          type string;
       }
       list b {
          uses AA;
       }
    }
}

Caused by: java.lang.StackOverflowError at org.eclipse.xtext.linking.lazy.LazyURIEncoder.getIndex(LazyURIEncoder.java:157) at org.eclipse.xtext.linking.lazy.LazyURIEncoder.getLazyProxyInformation(LazyURIEncoder.java:146) at org.eclipse.xtext.linking.lazy.LazyURIEncoder.decode(LazyURIEncoder.java:127) at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:235) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:223) at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:199) at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:259) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1477) at io.typefox.yang.yang.impl.GroupingRefImpl.getNode(GroupingRefImpl.java:74) at io.typefox.yang.scoping.ScopeContextProvider._inlineGrouping(ScopeContextProvider.java:482) at io.typefox.yang.scoping.ScopeContextProvider.inlineGrouping(ScopeContextProvider.java:1035) at io.typefox.yang.scoping.ScopeContextProvider._inlineGrouping(ScopeContextProvider.java:484) at io.typefox.yang.scoping.ScopeContextProvider.inlineGrouping(ScopeContextProvider.java:1035) at io.typefox.yang.scoping.ScopeContextProvider._inlineGrouping(ScopeContextProvider.java:497) at io.typefox.yang.scoping.ScopeContextProvider.inlineGrouping(ScopeContextProvider.java:1038)

This fatal error will totally interrupt YangLanguageServer startup.

spoenemann commented 4 years ago

Fixed with #159.