EmmyLua / IntelliJ-EmmyLua

Lua IDE/Debugger Plugin for IntelliJ IDEA
https://emmylua.github.io
Apache License 2.0
1.73k stars 290 forks source link

StackOverflowPreventedException: Endless recursion prevented #439

Closed lezon1995 closed 1 year ago

lezon1995 commented 2 years ago

Environment(环境)

name version
IDEA version [e.g. Rider 2021.2.1]
EmmyLua version [e.g. v1.3.6.219-IDEA212]
OS [e.g. Windows 10]

What are the steps to reproduce this issue?(重现步骤?)

  1. 打开一个某个代码比较多的lua.txt文件就会大概率出现(没有什么特定的步骤)

What happens?(出现什么问题?)

1.只有出现IDE报错的代码页面才会卡死,无法输入,无法删除,无法复制粘贴,别的代码页面可以正常使用 2.光标无法选中代码区域 3.只有重启IDE才能短暂修复,但是过了没一会又会出现

What were you expecting to happen?(期望?)

1.期望修复这个问题

Any logs, error output, etc?(有没有什么log, error输出?)

(If it’s long, please paste to https://ghostbin.com/ and insert the link here.) image

已下是全部报错日志

Following exceptions happened soon after this one, most probably they are induced.

2021-10-08T11:02:35.210 com.intellij.openapi.util.StackOverflowPreventedException: Endless recursion prevented at com.intellij.psi.impl.source.tree.FileElement.getStubbedSpine(FileElement.java:110) at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:168) at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:141) at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:212) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:731) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:934) at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:751) at com.tang.intellij.lua.psi.LuaRecursiveVisitor.visitElement(LuaRecursiveVisitor.kt:23) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.visitElementExt(LuaDeclarationTree.kt:349) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.visitElement(LuaDeclarationTree.kt:355) at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35) at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:60) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.buildTree(LuaDeclarationTree.kt:277) at com.tang.intellij.lua.psi.LuaDeclarationTree$Companion.get(LuaDeclarationTree.kt:47) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveInFile(LuaPsiResolveUtil.kt:37) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveLocal(LuaPsiResolveUtil.kt:31) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveLocal$default(LuaPsiResolveUtil.kt:30) at com.tang.intellij.lua.psi.PsiExtensionKt$forwardDeclaration$1.compute(PsiExtension.kt:453) at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:158) at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:39) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:227) at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:42) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:227) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:43) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:228) at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:28) at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:72) at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:155) at com.tang.intellij.lua.psi.PsiExtensionKt.getForwardDeclaration(PsiExtension.kt:451) at com.tang.intellij.lua.stubs.LuaFuncType.shouldCreateStub(LuaFuncStub.kt:68) at com.intellij.psi.impl.source.tree.FileElement$1.visitComposite(FileElement.java:130) at com.intellij.psi.impl.source.tree.CompositeElement.acceptTree(CompositeElement.java:117) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$1.visit(RecursiveTreeElementWalkingVisitor.java:67) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$1.visit(RecursiveTreeElementWalkingVisitor.java:59) at com.intellij.util.WalkingState.walkChildren(WalkingState.java:62) at com.intellij.util.WalkingState.elementStarted(WalkingState.java:49) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor.visitNode(RecursiveTreeElementWalkingVisitor.java:86) at com.intellij.psi.impl.source.tree.FileElement$1.visitComposite(FileElement.java:134) at com.intellij.psi.impl.source.tree.CompositeElement.acceptTree(CompositeElement.java:117) at com.intellij.psi.impl.source.tree.FileElement.calcStubbedDescendants(FileElement.java:121) at com.intellij.psi.impl.source.tree.FileElement.lambda$getStubbedSpine$0(FileElement.java:108) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:43) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68) at com.intellij.psi.impl.source.tree.FileElement.getStubbedSpine(FileElement.java:108) at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:168) at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:141) at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:212) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:731) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:934) at com.intellij.psi.impl.source.PsiFileImpl.getFirstChild(PsiFileImpl.java:741) at com.intellij.psi.SyntaxTraverser$PsiApi.first(SyntaxTraverser.java:296) at com.intellij.psi.SyntaxTraverser$PsiApi.first(SyntaxTraverser.java:264) at com.intellij.psi.SyntaxTraverser$ApiEx.children(SyntaxTraverser.java:241) at com.intellij.psi.SyntaxTraverser$Api.fun(SyntaxTraverser.java:179) at com.intellij.psi.SyntaxTraverser$Api.fun(SyntaxTraverser.java:161) at com.intellij.util.containers.FilteredTraverserBase$Meta.childrenImpl(FilteredTraverserBase.java:436) at com.intellij.util.containers.FilteredTraverserBase$Meta.children(FilteredTraverserBase.java:422) at com.intellij.util.containers.FilteredTraverserBase.children(FilteredTraverserBase.java:303) at com.intellij.util.containers.TreeTraversal$P.iterable(TreeTraversal.java:805) at com.intellij.util.containers.TreeTraversal$P.iterator(TreeTraversal.java:799) at com.intellij.util.containers.TreeTraversal$BiOrderIt.nextImpl(TreeTraversal.java:540) at com.intellij.util.containers.JBIterator.peekNext(JBIterator.java:150) at com.intellij.util.containers.JBIterator.hasNext(JBIterator.java:110) at com.intellij.codeInsight.daemon.impl.ChameleonSyntaxHighlightingPass.collectInformationWithProgress(ChameleonSyntaxHighlightingPass.java:85) at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:84) at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:56) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:414) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1078) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:407) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:406) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:382) at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174) at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:183) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:380) at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:188) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

2021-10-08T11:02:35.870 com.intellij.openapi.util.StackOverflowPreventedException: Endless recursion prevented at com.intellij.psi.impl.source.tree.FileElement.getStubbedSpine(FileElement.java:110) at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:168) at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:141) at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:212) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:731) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:934) at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:751) at com.tang.intellij.lua.psi.LuaRecursiveVisitor.visitElement(LuaRecursiveVisitor.kt:23) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.visitElementExt(LuaDeclarationTree.kt:349) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.visitElement(LuaDeclarationTree.kt:355) at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35) at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:60) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.buildTree(LuaDeclarationTree.kt:277) at com.tang.intellij.lua.psi.LuaDeclarationTree$Companion.get(LuaDeclarationTree.kt:47) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveInFile(LuaPsiResolveUtil.kt:37) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveLocal(LuaPsiResolveUtil.kt:31) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveLocal$default(LuaPsiResolveUtil.kt:30) at com.tang.intellij.lua.psi.PsiExtensionKt$forwardDeclaration$1.compute(PsiExtension.kt:453) at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:158) at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:39) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:227) at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:42) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:227) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:43) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:228) at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:28) at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:72) at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:155) at com.tang.intellij.lua.psi.PsiExtensionKt.getForwardDeclaration(PsiExtension.kt:451) at com.tang.intellij.lua.stubs.LuaFuncType.shouldCreateStub(LuaFuncStub.kt:68) at com.intellij.psi.impl.source.tree.FileElement$1.visitComposite(FileElement.java:130) at com.intellij.psi.impl.source.tree.CompositeElement.acceptTree(CompositeElement.java:117) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$1.visit(RecursiveTreeElementWalkingVisitor.java:67) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$1.visit(RecursiveTreeElementWalkingVisitor.java:59) at com.intellij.util.WalkingState.walkChildren(WalkingState.java:62) at com.intellij.util.WalkingState.elementStarted(WalkingState.java:49) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor.visitNode(RecursiveTreeElementWalkingVisitor.java:86) at com.intellij.psi.impl.source.tree.FileElement$1.visitComposite(FileElement.java:134) at com.intellij.psi.impl.source.tree.CompositeElement.acceptTree(CompositeElement.java:117) at com.intellij.psi.impl.source.tree.FileElement.calcStubbedDescendants(FileElement.java:121) at com.intellij.psi.impl.source.tree.FileElement.lambda$getStubbedSpine$0(FileElement.java:108) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:43) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68) at com.intellij.psi.impl.source.tree.FileElement.getStubbedSpine(FileElement.java:108) at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:168) at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:141) at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:212) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:731) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:934) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:50) at com.intellij.psi.AbstractFileViewProvider.findElementAt(AbstractFileViewProvider.java:245) at com.intellij.psi.AbstractFileViewProvider.findElementAt(AbstractFileViewProvider.java:216) at com.intellij.xml.breadcrumbs.PsiFileBreadcrumbsCollector.findFirstBreadcrumbedElement(PsiFileBreadcrumbsCollector.java:205) at com.intellij.xml.breadcrumbs.PsiFileBreadcrumbsCollector.findStartElement(PsiFileBreadcrumbsCollector.java:163) at com.intellij.xml.breadcrumbs.PsiFileBreadcrumbsCollector.getLineElements(PsiFileBreadcrumbsCollector.java:127) at com.intellij.xml.breadcrumbs.PsiFileBreadcrumbsCollector.computeCrumbs(PsiFileBreadcrumbsCollector.java:92) at com.intellij.xml.breadcrumbs.BreadcrumbsXmlWrapper.computeCrumbs(BreadcrumbsXmlWrapper.java:33) at com.intellij.xml.breadcrumbs.BreadcrumbsPanel.lambda$updateCrumbsAsync$3(BreadcrumbsPanel.java:186) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:486) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1078) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:78) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:161) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:118) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:183) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:170) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:115) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:78) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:407) at com.intellij.codeWithMe.ClientId$Companion$decorateRunnable$1.run(ClientId.kt:194) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27) at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:187) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665) at java.base/java.lang.Thread.run(Thread.java:829)

Any other comments?(其它说明)

CppCXY commented 2 years ago

不如加群找阿唐

wdyWang commented 2 years ago

+1

leaveye commented 2 years ago

problem still exists in 1.3.6.224 and prevents lua source edition when occurs