tomblachut / svelte-intellij

Svelte components in WebStorm and friends
MIT License
482 stars 38 forks source link

Svelte editor crash #175

Closed Treverix closed 3 years ago

Treverix commented 3 years ago

The svelte editor occasionally crashes after entering {#if} statements. I happens when I mistype the closing element like so (< instead of {):

{#if}</

After that, the editor crashed, we can't type in that line anymore. Re-opening the editor does not help, we have to restart Webstorm (all open instances!!). There is an error log:

2020-11-10 10:53:48,147 [72585216]  ERROR - llij.ide.plugins.PluginManager - WebStorm 2020.2.3  Build #WS-202.7660.23 
2020-11-10 10:53:48,147 [72585216]  ERROR - llij.ide.plugins.PluginManager - JDK: 11.0.8; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o. 
2020-11-10 10:53:48,147 [72585216]  ERROR - llij.ide.plugins.PluginManager - OS: Windows 10 
2020-11-10 10:53:48,147 [72585216]  ERROR - llij.ide.plugins.PluginManager - Last Action: EditorLineEnd 
2020-11-10 10:53:53,299 [72590368]  ERROR - llij.ide.plugins.PluginManager - Unexpected reentrancy of DefaultRawTypedHandler 
java.lang.IllegalStateException: Unexpected reentrancy of DefaultRawTypedHandler
    at com.intellij.openapi.editor.impl.DefaultRawTypedHandler.execute(DefaultRawTypedHandler.java:41)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl$MyRawTypedHandler.execute(EditorFactoryImpl.java:275)
    at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$2(TypedAction.java:183)
    at com.intellij.reporting.FreezeLoggerImpl.runUnderPerformanceMonitor(FreezeLoggerImpl.java:28)
    at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:183)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedNormally(EditorImpl.java:1322)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1305)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3408)
    at com.intellij.openapi.editor.impl.EditorImpl$8.keyTyped(EditorImpl.java:1146)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
    at java.desktop/java.awt.Component.processKeyEvent(Component.java:6609)
    at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2852)
    at java.desktop/java.awt.Component.processEvent(Component.java:6431)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1950)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:878)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1148)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1017)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:843)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.java:41)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4910)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:971)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:894)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:835)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:452)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:744)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:451)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:802)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:505)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
tomblachut commented 3 years ago

thx for reporting.

BTW you can type ifTAB (if Emmet abbreviations are enabled) to insert {#if <caret>}{/if}, that way it's harder to run into this case

Treverix commented 3 years ago

Perfect! I somehow missed the emmet abbreviation and will use that from now on :)

sourcegr commented 3 years ago

it happens to me several times per day... :( But the problem is that I cannot reproduce it, otherwise I would have reported it too..

tomblachut commented 3 years ago

I managed to fix this, will be included in next release.

Analysis: Unexpected reentrancy of DefaultRawTypedHandler is something in the platform that actually happens after undoing after following error:

    at com.intellij.util.containers.Stack.pop(Stack.java:46)
    at dev.blachut.svelte.lang.parsing.html.ExtendableHtmlParsing.closeTag(ExtendableHtmlParsing.java:326)
    at dev.blachut.svelte.lang.parsing.html.SvelteHtmlParsing.flushOpenTags(SvelteHtmlParsing.kt:86)
    at dev.blachut.svelte.lang.parsing.html.ExtendableHtmlParsing.parseDocument(ExtendableHtmlParsing.java:97)
    at com.intellij.lang.html.HTMLParser.parseWithoutBuildingTree(HTMLParser.java:28)
    at com.intellij.lang.html.HTMLParser.parse(HTMLParser.java:16)
    at com.intellij.psi.tree.ILazyParseableElementType.doParseContents(ILazyParseableElementType.java:81)
    at com.intellij.psi.tree.IFileElementType.parseContents(IFileElementType.java:53)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.lambda$ensureParsed$0(LazyParseableElement.java:192)
    at com.intellij.psi.impl.DebugUtil.performPsiModification(DebugUtil.java:567)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.ensureParsed(LazyParseableElement.java:191)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.getFirstChildNode(LazyParseableElement.java:242)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.getFirstChildNode(LazyParseableElement.java:42)
    at com.intellij.psi.impl.BlockSupportImpl.isReplaceWholeNode(BlockSupportImpl.java:419)
    at com.intellij.psi.impl.BlockSupportImpl.mergeTrees(BlockSupportImpl.java:366)
    at com.intellij.psi.impl.BlockSupportImpl.makeFullParse(BlockSupportImpl.java:298)
    at com.intellij.psi.impl.BlockSupportImpl.reparse(BlockSupportImpl.java:92)
    at com.intellij.psi.impl.DocumentCommitThread.doCommit(DocumentCommitThread.java:294)
    at com.intellij.psi.impl.DocumentCommitThread.commitUnderProgress(DocumentCommitThread.java:135)
    at com.intellij.psi.impl.DocumentCommitThread.commitSynchronously(DocumentCommitThread.java:111)
    at com.intellij.psi.impl.PsiDocumentManagerBase.lambda$doCommit$7(PsiDocumentManagerBase.java:474)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1000)
    at com.intellij.psi.impl.PsiDocumentManagerBase.doCommit(PsiDocumentManagerBase.java:483)
    at com.intellij.psi.impl.PsiDocumentManagerBase.commitAllDocuments(PsiDocumentManagerBase.java:208)
    at com.intellij.codeInsight.editorActions.XmlSlashTypedHandler.charTyped(XmlSlashTypedHandler.java:67)
    at com.intellij.codeInsight.editorActions.TypedHandler.lambda$execute$3(TypedHandler.java:216)
    at com.intellij.codeInsight.editorActions.TypedHandler.callDelegates(TypedHandler.java:232)
    at com.intellij.codeInsight.editorActions.TypedHandler.lambda$execute$4(TypedHandler.java:216)
    at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$runForEachCaret$3(CaretModelImpl.java:312)
    at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:421)
    at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:321)
    at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:296)
    at com.intellij.codeInsight.editorActions.TypedHandler.execute(TypedHandler.java:154)
    at com.intellij.codeInsight.lookup.impl.LookupTypedHandler.execute(LookupTypedHandler.java:75)
    at com.intellij.codeInsight.template.emmet.EmmetPreviewTypedHandler.execute(EmmetPreviewTypedHandler.java:39)
    at com.intellij.execution.impl.ConsoleViewImpl$MyTypedHandler.execute(ConsoleViewImpl.java:1236)
    at com.intellij.openapi.editor.impl.DefaultRawTypedHandler$1.run(DefaultRawTypedHandler.java:55)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1000)
    at com.intellij.openapi.editor.impl.DefaultRawTypedHandler.execute(DefaultRawTypedHandler.java:49)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl$MyRawTypedHandler.execute(EditorFactoryImpl.java:275)
    at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$2(TypedAction.java:183)
    at com.intellij.reporting.FreezeLoggerImpl.runUnderPerformanceMonitor(FreezeLoggerImpl.java:28)
    at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:183)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedNormally(EditorImpl.java:1320)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1302)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3410)
    at com.intellij.openapi.editor.impl.EditorImpl$8.keyTyped(EditorImpl.java:1143)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
    at java.desktop/java.awt.Component.processKeyEvent(Component.java:6607)
    at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2852)
    at java.desktop/java.awt.Component.processEvent(Component.java:6429)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1961)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:878)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1148)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1017)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:843)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.java:41)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4908)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:976)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:896)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:837)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:454)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:773)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:453)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:507)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
tomblachut commented 3 years ago

Related to #152 & #156.

Will be fixed in next release.