Freeze in PhpStorm
Freeze for 187 seconds IDE KILLED! Sampled time: 141600ms, sampling rate: 100ms, GC time: 1287ms (0%), Class loading: 0%, cpu load: 0%
The stack is from the thread that was blocking EDT
com.intellij.diagnostic.Freeze at [email protected]/jdk.internal.misc.Unsafe.park(Native Method) at [email protected]/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211) at [email protected]/java.util.concurrent.Phaser$QNode.block(Phaser.java:1133) at [email protected]/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3463) at [email protected]/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3434) at [email protected]/java.util.concurrent.Phaser.internalAwaitAdvance(Phaser.java:1063) at [email protected]/java.util.concurrent.Phaser.awaitAdvance(Phaser.java:725) at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesInReadAction(ChangedFilesCollector.java:293) at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesToUpdateInReadAction(ChangedFilesCollector.java:224) at com.intellij.util.indexing.FileBasedIndexScanUtil.ensureUpToDate(FileBasedIndexScanUtil.java:51) at com.intellij.util.indexing.FileBasedIndexScanUtil.processFilesContainingAnyKey(FileBasedIndexScanUtil.java:237) at com.intellij.util.indexing.FileBasedIndexImpl.processFilesContainingAnyKey(FileBasedIndexImpl.java:1178) at com.intellij.psi.search.FilenameIndex.getVirtualFilesByNames(FilenameIndex.java:225) at com.intellij.psi.search.FilenameIndex.processFilesByNames(FilenameIndex.java:155) at com.intellij.psi.search.FilenameIndex.processFilesByName(FilenameIndex.java:131) at com.intellij.psi.search.FilenameIndex.processFilesByName(FilenameIndex.java:95) at com.intellij.psi.search.FilenameIndex.getFilesByName(FilenameIndex.java:183) at com.intellij.psi.search.FilenameIndex.getFilesByName(FilenameIndex.java:85) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil.lambda$getJsonConfigs$6(ExtensionProviderUtil.java:223) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil$$Lambda$8689/0x000000008258c958.compute(Unknown Source) at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:39) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:243) at com.intellij.util.CachedValueBase$$Lambda$2170/0x0000000081431198.compute(Unknown Source) at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:42) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:243) at com.intellij.util.CachedValueBase$$Lambda$2169/0x0000000081430f28.compute(Unknown Source) at com.intellij.openapi.util.RecursionGuard$$Lambda$2050/0x00000000813a3b28.compute(Unknown Source) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:112) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:66) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:244) at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:28) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil.getJsonConfigs(ExtensionProviderUtil.java:240) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil.getTypesInner(ExtensionProviderUtil.java:177) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil.lambda$getTypes$3(ExtensionProviderUtil.java:161) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil$$Lambda$6473/0x00000000820e8240.compute(Unknown Source) at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:39) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:243) at com.intellij.util.CachedValueBase$$Lambda$2170/0x0000000081431198.compute(Unknown Source) at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:42) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:243) at com.intellij.util.CachedValueBase$$Lambda$2169/0x0000000081430f28.compute(Unknown Source) at com.intellij.openapi.util.RecursionGuard$$Lambda$2050/0x00000000813a3b28.compute(Unknown Source) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:112) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:66) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:244) at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:28) at de.espend.idea.php.toolbox.utils.ExtensionProviderUtil.getTypes(ExtensionProviderUtil.java:166) at de.espend.idea.php.toolbox.type.PhpToolboxTypeProvider.getType(PhpToolboxTypeProvider.java:49) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.lambda$getTypeFromAST$1(PhpTypeInfo.java:102) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$$Lambda$5625/0x0000000081f7a210.compute(Unknown Source) at com.intellij.openapi.util.RecursionGuard$$Lambda$2050/0x00000000813a3b28.compute(Unknown Source) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:112) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getTypeFromAST(PhpTypeInfo.java:78) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getTypeCached(PhpTypeInfo.java:61) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:43) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:29) at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl.getType(PhpReferenceImpl.java:251) at com.jetbrains.php.lang.psi.resolve.types.PhpType.add(PhpType.java:550) at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.getType(FunctionImpl.java:501) at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl$1.processReturnInstruction(FunctionImpl.java:333) at com.jetbrains.php.codeInsight.controlFlow.instructions.impl.PhpReturnInstructionImpl.process(PhpReturnInstructionImpl.java:21) at com.jetbrains.php.codeInsight.controlFlow.PhpControlFlowUtil.processSuccessors(PhpControlFlowUtil.java:239) at com.jetbrains.php.codeInsight.controlFlow.PhpControlFlowUtil.processSuccessors(PhpControlFlowUtil.java:219) at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.getInferredType(FunctionImpl.java:365) at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.getLocalType(FunctionImpl.java:231) at com.jetbrains.php.lang.psi.elements.impl.MethodImpl.getLocalType(MethodImpl.java:265) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpMethod(PhpTypeAnalyserVisitor.java:806) at com.jetbrains.php.lang.psi.elements.impl.MethodImpl.accept(MethodImpl.java:94) at com.jetbrains.php.lang.psi.elements.impl.PhpPsiElementImpl.accept(PhpPsiElementImpl.java:73) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.getTypeFromAST(PhpTypeAnalyserVisitor.java:195) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.lambda$getTypeFromAST$1(PhpTypeInfo.java:80) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$$Lambda$5625/0x0000000081f7a210.compute(Unknown Source) at com.intellij.openapi.util.RecursionGuard$$Lambda$2050/0x00000000813a3b28.compute(Unknown Source) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:112) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getTypeFromAST(PhpTypeInfo.java:78) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getTypeCached(PhpTypeInfo.java:61) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:43) at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:29) at com.jetbrains.php.lang.psi.stubs.PhpMethodElementType.createStub(PhpMethodElementType.java:41) at com.jetbrains.php.lang.psi.stubs.PhpMethodElementType.createStub(PhpMethodElementType.java:26) at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.createStub(DefaultStubBuilder.java:85) at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.visitNode(DefaultStubBuilder.java:60) at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.buildStubTree(DefaultStubBuilder.java:55) at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:33) at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:22) at com.intellij.psi.stubs.StubTreeBuilder.lambda$buildStubTree$1(StubTreeBuilder.java:144) at com.intellij.psi.stubs.StubTreeBuilder$$Lambda$3079/0x00000000818d0000.compute(Unknown Source) at com.intellij.psi.stubs.StubTreeBuilder.handleStubBuilderException(StubTreeBuilder.java:99) at com.intellij.psi.stubs.StubTreeBuilder.lambda$buildStubTree$3(StubTreeBuilder.java:144) at com.intellij.psi.stubs.StubTreeBuilder$$Lambda$3076/0x00000000818ca560.compute(Unknown Source) at com.intellij.psi.impl.PsiManagerImpl.runInBatchFilesMode(PsiManagerImpl.java:457) at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:134) at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:92) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.preciseCheck(PerFileElementTypeStubModificationTracker.java:148) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.lambda$endUpdatesBatch$2(PerFileElementTypeStubModificationTracker.java:81) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker$$Lambda$3058/0x00000000818c0530.run(Unknown Source) at com.intellij.openapi.application.ReadAction.lambda$run$1(ReadAction.java:60) at com.intellij.openapi.application.ReadAction$$Lambda$1864/0x0000000081202d78.compute(Unknown Source) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:891) at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:69) at com.intellij.openapi.application.ReadAction.run(ReadAction.java:59) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.endUpdatesBatch(PerFileElementTypeStubModificationTracker.java:76) at com.intellij.util.indexing.events.ChangedFilesCollector$4.endBatch(ChangedFilesCollector.java:246) at com.intellij.util.indexing.events.ChangedFilesCollector$5.lambda$endBatch$2(ChangedFilesCollector.java:283) at com.intellij.util.indexing.events.ChangedFilesCollector$5$$Lambda$3057/0x00000000818c02e8.run(Unknown Source) at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:243) at com.intellij.util.indexing.events.ChangedFilesCollector$5.endBatch(ChangedFilesCollector.java:282) at com.intellij.util.indexing.events.VfsEventsMerger.processChanges(VfsEventsMerger.java:109) at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesInReadAction(ChangedFilesCollector.java:265) at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesToUpdateInReadAction(ChangedFilesCollector.java:224) at com.intellij.util.indexing.events.ChangedFilesCollector.ensureUpToDate(ChangedFilesCollector.java:190) at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:799) at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:392) at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:166) at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:103) at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:91) at com.jetbrains.php.PhpIndexImpl.getElements(PhpIndexImpl.java:639) at com.jetbrains.php.PhpIndexImpl.getByName(PhpIndexImpl.java:1076) at com.jetbrains.php.PhpIndexImpl.getByFQN(PhpIndexImpl.java:1053) at com.jetbrains.php.PhpIndexImpl.getByFqnCacheAware(PhpIndexImpl.java:1134) at com.jetbrains.php.PhpIndexImpl.getClassesByFQNInternal(PhpIndexImpl.java:1129) at com.jetbrains.php.PhpIndexImpl.getClassesByFQN(PhpIndexImpl.java:1118) at com.jetbrains.php.robo.run.RoboTasksToolWindowUpdateService.isRoboTaskClassExists(RoboTasksToolWindowUpdateService.java:90) at com.jetbrains.php.robo.run.RoboTasksToolWindowUpdateService$$Lambda$1933/0x00000000810adf18.call(Unknown Source) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:746) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:778) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:573) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:537) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission$$Lambda$1859/0x00000000812053f0.run(Unknown Source) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1089) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:71) at com.intellij.openapi.progress.util.ProgressIndicatorUtils$$Lambda$1491/0x0000000080db9688.run(Unknown Source) at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:128) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:109) at com.intellij.openapi.progress.util.ProgressIndicatorUtils$$Lambda$1493/0x0000000080db9d40.compute(Unknown Source) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$1(ProgressManager.java:70) at com.intellij.openapi.progress.ProgressManager$$Lambda$1494/0x0000000080db9fb0.run(Unknown Source) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186) at com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$1495/0x0000000080dba1f8.run(Unknown Source) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604) at com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$1496/0x0000000080dba440.compute(Unknown Source) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:70) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:106) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:71) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:537) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:444) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission$$Lambda$1855/0x0000000081204498.run(Unknown Source) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:248) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:28) at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:221) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:213) at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at [email protected]/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at [email protected]/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at [email protected]/java.security.AccessController.executePrivileged(AccessController.java:776) at [email protected]/java.security.AccessController.doPrivileged(AccessController.java:399) at [email protected]/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at [email protected]/java.lang.Thread.run(Thread.java:833)
@Haehnchen Hey, this freeze is happening pretty regularly on the upcoming PhpStorm 2023.1 EAP and there's no way of recovering from it, so it may be a serious issue in the IDE.
Main problem is that FilenameIndex#getFilesByName is invoked inside com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3#getType, which is invoked during indexing. This is a violation of "no index access during indexing" contract, even DumbService.isDumb() check is not guaranteed to avoid the freeze.
Generally this index access call should be moved out of indexing phase to avoid freezes (namely out of PhpTypeProvider3#getType call). If .ide-toolbox.metadata.json is used only in child plugins, then one solution can be to hardcode it's content in plugin source code.
Is it possible to consider fixing this freeze for PhpStorm 2023.1 release? Should you need any help - please reach out!
One more user reported this issue to JetBrains support.
@Haehnchen Hello! I represent the PhpStorm team. We have received many reports of freezing related to this issue from our users. Since the problem still persists and often causes IDE completely hang, we are going to disable PhpToolboxTypeProvider in the next release (2023.1 RC2). It will be possible to enable the provider again by setting the registry key php.enable.php.toolbox.type.provider to true. Please, let us know as soon as the issue will be fixed in the plugin - then we’ll revert the fix on PhpStorm side. Do not hesitate to reach out to us if you require any assistance.
i just pushed a new release to disable PhpToolboxTypeProvider for now, as 2023.1 coming soon. It needs to be migrated away from the deprecated typeprovider3 to typeprovider4