EmmyLua / IntelliJ-EmmyLua

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

[v1.4.1] Constant plugin failure #544

Closed USSX-Hares closed 1 year ago

USSX-Hares commented 1 year ago

Environment(环境)

name version
IDEA version PC-231.9011.38
EmmyLua version 1.4.1
OS Windows 10
Details ``` PyCharm 2023.1.2 (Community Edition) Build #PC-231.9011.38, built on May 17, 2023 Runtime version: 17.0.6+10-b829.9 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 2048M Cores: 20 Non-Bundled Plugins: com.jetbrains.plugins.ini4idea (231.9011.41) net.sjrx.intellij.plugins.systemdunitfiles (223.230322.126) Batch Scripts Support (1.0.13) org.jetbrains.plugins.hocon (2023.1.0) org.sylfra.idea.plugins.linessorter (1.0.1) com.intellij.plugin.adernov.powershell (2.0.10) com.intellij.plugins.visualstudiokeymap (231.8109.91) org.rust.lang (0.4.195.5408-231) com.github.b3er.idea.plugins.arc.browser (0.32) com.tang (1.4.1-IDEA231) Docker (231.9011.41) pro.bashsupport (3.2.3.231) ru.meanmail.plugin.requirements (2022.4.1) mobi.hsz.idea.gitignore (4.5.0) com.github.blarc.gitlab-template-lint-plugin (1.13.0) org.jetbrains.settingsRepository (231.8109.91) ```

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

Any of the following:

  1. Open the Lua file
  2. Try using refactor feature
  3. Start writing code

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

Plugin crashes with StackOverflow and restarts

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

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

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

StackTrace 1: StackOverflow ``` java.lang.StackOverflowError at com.intellij.util.io.EnumeratorStringDescriptor.getHashCode(EnumeratorStringDescriptor.java:25) at com.intellij.util.io.EnumeratorStringDescriptor$EnumeratorStringDescriptorImpl.getHashCode(EnumeratorStringDescriptor.java:16) at com.intellij.util.containers.hash.HashUtil.hash(HashUtil.java:20) at com.intellij.util.containers.hash.LinkedHashMap.get(LinkedHashMap.java:73) at com.intellij.util.containers.SLRUMap.get(SLRUMap.java:66) at com.intellij.util.containers.SLRUCache.getIfCached(SLRUCache.java:41) at com.intellij.util.containers.SLRUCache.get(SLRUCache.java:28) at com.intellij.util.indexing.impl.MapIndexStorageSlruCache.read(MapIndexStorageCache.kt:69) at com.intellij.util.indexing.impl.MapIndexStorage.read(MapIndexStorage.java:256) at com.intellij.util.indexing.impl.MapIndexStorage.read(MapIndexStorage.java:20) at com.intellij.util.indexing.impl.storage.TransientChangesIndexStorage.read(TransientChangesIndexStorage.java:191) at com.intellij.util.indexing.impl.MapReduceIndex.getData(MapReduceIndex.java:229) at com.intellij.indexing.composite.CompositeInvertedIndexBase.getData(CompositeInvertedIndexBase.java:113) at com.intellij.psi.stubs.StubIndexEx.lambda$getContainingIds$9(StubIndexEx.java:393) at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:248) at com.intellij.psi.stubs.StubIndexEx.lambda$getContainingIds$10(StubIndexEx.java:393) at com.intellij.util.indexing.IndexUpToDateCheckIn.disableUpToDateCheckIn(IndexUpToDateCheckIn.kt:15) at com.intellij.util.indexing.FileBasedIndexEx.disableUpToDateCheckIn(FileBasedIndexEx.java:830) at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:393) at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:166) at com.intellij.psi.stubs.StubIndex.processElements(StubIndex.java:53) at com.intellij.psi.stubs.StubIndex.get(StubIndex.java:43) at com.intellij.psi.stubs.AbstractStubIndex.get(AbstractStubIndex.java:22) at com.tang.intellij.lua.stubs.index.LuaAliasIndex$Companion.find(LuaAliasIndex.kt:31) at com.tang.intellij.lua.psi.search.LuaShortNamesManagerImpl.findAlias(LuaShortNamesManagerImpl.kt:57) at com.tang.intellij.lua.psi.search.CompositeLuaShortNamesManager.findAlias(CompositeLuaShortNamesManager.kt:82) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:270) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) ... and 196 more sets of repeated 5 lines ```
Stack Trace 2: RuntimeException ``` java.lang.RuntimeException: Cannot invoke (class=FrameStateManagerAppListener, method=applicationDeactivated, topic=ApplicationActivationListener) at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:657) at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:415) at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:394) at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1) at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:454) at jdk.proxy2/jdk.proxy2.$Proxy53.applicationDeactivated(Unknown Source) at com.intellij.ide.ApplicationActivationStateManager.updateState(ApplicationActivationStateManager.java:58) at com.intellij.ide.IdeEventQueueKt.processAppActivationEvent(IdeEventQueue.kt:1034) at com.intellij.ide.IdeEventQueueKt.access$processAppActivationEvent(IdeEventQueue.kt:1) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:555) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385) at java.desktop/java.awt.SentEvent.dispatch(SentEvent.java:75) at java.desktop/java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:262) at java.desktop/java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:289) at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:833) at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:18) at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25) at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995) at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:25) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4903) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854) at java.desktop/sun.awt.SunToolkit$1.run(SunToolkit.java:518) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:758) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667) at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:571) at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1446) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:571) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92) Caused by: java.lang.RuntimeException: Cannot invoke (class=, method=applicationDeactivated, topic=ApplicationActivationListener) at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:657) at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:415) at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:384) at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1) at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:454) at jdk.proxy2/jdk.proxy2.$Proxy54.onFrameDeactivated(Unknown Source) at com.intellij.ide.FrameStateManagerAppListener.applicationDeactivated(FrameStateManagerAppListener.java:56) at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:680) at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:640) ... 66 more Caused by: java.lang.StackOverflowError at com.intellij.openapi.progress.Cancellation.contextJob(Cancellation.java:29) at com.intellij.openapi.progress.Cancellation.currentJob(Cancellation.java:25) at com.intellij.openapi.progress.Cancellation.checkCancelled(Cancellation.java:38) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.checkCancelledEvenWithPCEDisabled(ProgressIndicatorUtils.java:384) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.awaitWithCheckCanceled(ProgressIndicatorUtils.java:330) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.awaitWithCheckCanceled(ProgressIndicatorUtils.java:325) at com.intellij.util.indexing.RegisteredIndexes.waitUntilIndicesAreInitialized(RegisteredIndexes.java:89) at com.intellij.util.indexing.FileBasedIndexImpl.waitUntilIndicesAreInitialized(FileBasedIndexImpl.java:435) at com.intellij.util.indexing.events.ChangedFilesCollector.ensureUpToDate(ChangedFilesCollector.java:187) at com.intellij.util.indexing.events.ChangedFilesCollector.getAllFilesToUpdate(ChangedFilesCollector.java:110) at com.intellij.util.indexing.FileBasedIndexImpl.forceUpdate(FileBasedIndexImpl.java:1823) at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:877) at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:365) at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:166) at com.intellij.psi.stubs.StubIndex.processElements(StubIndex.java:53) at com.intellij.psi.stubs.StubIndex.get(StubIndex.java:43) at com.intellij.psi.stubs.AbstractStubIndex.get(AbstractStubIndex.java:22) at com.tang.intellij.lua.stubs.index.LuaAliasIndex$Companion.find(LuaAliasIndex.kt:31) at com.tang.intellij.lua.psi.search.LuaShortNamesManagerImpl.findAlias(LuaShortNamesManagerImpl.kt:57) at com.tang.intellij.lua.psi.search.CompositeLuaShortNamesManager.findAlias(CompositeLuaShortNamesManager.kt:82) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:270) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) ... and 198 more sets of repeated 5 lines ```
Stack Trace 3: Error in coroutine ``` Unhandled exception in [CoroutineName(com.intellij.configurationStore.SaveAndSyncHandlerImpl), StandaloneCoroutine{Cancelling}@4f83ed03, Dispatchers.Default] java.lang.StackOverflowError at com.intellij.concurrency.ConcurrentIntKeyRefValueHashMap.get(ConcurrentIntKeyRefValueHashMap.java:92) at com.intellij.openapi.vfs.newvfs.persistent.VirtualDirectoryCache.getCachedDir(VirtualDirectoryCache.java:42) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.getCachedDir(PersistentFSImpl.java:180) at com.intellij.openapi.vfs.newvfs.impl.VfsData.getFileById(VfsData.java:130) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.doFindChildById(VirtualDirectoryImpl.java:522) at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$1ParentFinder.findChild(FSRecords.java:592) at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$1ParentFinder.findDescendantByIdPath(FSRecords.java:585) at com.intellij.openapi.vfs.newvfs.persistent.FSRecords.findFileById(FSRecords.java:609) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.findFileById(PersistentFSImpl.java:1434) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.findFileById(PersistentFSImpl.java:61) at com.intellij.util.indexing.FileBasedIndexImpl.findFileById(FileBasedIndexImpl.java:1233) at com.intellij.psi.stubs.StubIndexImplUtil$1.findNext(StubIndexImplUtil.java:36) at com.intellij.psi.stubs.StubIndexImplUtil$1.(StubIndexImplUtil.java:22) at com.intellij.psi.stubs.StubIndexImplUtil.mapIdIterator(StubIndexImplUtil.java:18) at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:178) at com.intellij.psi.stubs.StubIndex.processElements(StubIndex.java:53) at com.intellij.psi.stubs.StubIndex.get(StubIndex.java:43) at com.intellij.psi.stubs.AbstractStubIndex.get(AbstractStubIndex.java:22) at com.tang.intellij.lua.stubs.index.LuaAliasIndex$Companion.find(LuaAliasIndex.kt:31) at com.tang.intellij.lua.psi.search.LuaShortNamesManagerImpl.findAlias(LuaShortNamesManagerImpl.kt:57) at com.tang.intellij.lua.psi.search.CompositeLuaShortNamesManager.findAlias(CompositeLuaShortNamesManager.kt:82) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:270) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) at com.tang.intellij.lua.ty.TyUnion.substitute(TyUnion.kt:49) at com.tang.intellij.lua.ty.TySerializedClass.recoverAlias(TyClass.kt:271) at com.tang.intellij.lua.ty.TyAliasSubstitutor.substitute(TySubstitutor.kt:133) at com.tang.intellij.lua.ty.TyClass.substitute(TyClass.kt:180) at com.tang.intellij.lua.ty.TyArray.substitute(TyArray.kt:42) ... and 198 more sets of repeated 5 lines ``` ... and 15 more similar stack traces (usually, StackOverflow) Any other comments?(其它说明) ------------------------ … Unlike 1.3.x, this version actually handles functions from other files :tada:
tangzx commented 1 year ago

Hi @USSX-Hares , can you give me more information? Have you write code like this?

---@alias T T[]

---@type T
local foo

Notice that @alias T T[] will cause type expand StackOverflow.

tangzx commented 1 year ago

Hi @USSX-Hares , try this version please: https://github.com/EmmyLua/IntelliJ-EmmyLua/actions/runs/5179483885

USSX-Hares commented 1 year ago

@tangzx this looks better. I'll tell you if encounter any other major issues.

tangzx commented 1 year ago

@tangzx this looks better. I'll tell you if encounter any other major issues.

👌

USSX-Hares commented 1 year ago

Have you write code like this?

No. However, I use auto-generated LuaDocs and can't confirm that it isn't there.