Darkyenus / glsl4idea

A GLSL language plugin for IntelliJ IDEA
GNU Lesser General Public License v3.0
100 stars 30 forks source link

Exception in Clion 2019.1 #143

Closed sergeyext closed 5 years ago

sergeyext commented 5 years ago

IDE started reporting exceptions immediately after update to 2019.1. Plugin version is 1.17.

Stacktrace:

com.intellij.diagnostic.PluginException: Different word scanner instances should be used for different threads, make sure that com.intellij.lang.cacheBuilder.DefaultWordsScanner@19dc6f4a with glslplugin.lang.scanner.GLSLFlexAdapter@72be79f3 is instantiated on every request and not shared [Plugin: GLSL]
    at com.intellij.ide.plugins.PluginManagerCore.createPluginException(PluginManagerCore.java:368)
    at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:12)
    at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:68)
    at com.intellij.lang.cacheBuilder.DefaultWordsScanner.processWords(DefaultWordsScanner.java:95)
    at com.intellij.psi.impl.cache.impl.id.ScanningIdIndexer.map(ScanningIdIndexer.java:29)
    at com.intellij.psi.impl.cache.impl.id.ScanningIdIndexer.map(ScanningIdIndexer.java:19)
    at com.intellij.psi.impl.cache.impl.id.IdIndex$3.map(IdIndex.java:82)
    at com.intellij.psi.impl.cache.impl.id.IdIndex$3.map(IdIndex.java:76)
    at com.intellij.util.indexing.SnapshotInputMappings.readPersistentDataOrMap(SnapshotInputMappings.java:147)
    at com.intellij.util.indexing.VfsAwareMapReduceIndex.calculateUpdateData(VfsAwareMapReduceIndex.java:78)
    at com.intellij.util.indexing.impl.MapReduceIndex.update(MapReduceIndex.java:212)
    at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1673)
    at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$27(FileBasedIndexImpl.java:1601)
    at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:522)
    at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1560)
    at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1547)
    at com.intellij.util.indexing.UnindexedFilesUpdater.lambda$indexFiles$0(UnindexedFilesUpdater.java:109)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable.lambda$run$0(CacheUpdateRunner.java:216)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1166)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable.lambda$run$1(CacheUpdateRunner.java:232)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:164)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:586)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:532)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:86)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:151)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable.run(CacheUpdateRunner.java:229)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:311)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Shader source:

#include <Version.glsl>
#include <Macros.glsl>
#include <FragColor.glsl>

DECLARE_FRAGCOLOR

varying vec2 texCoord;
varying float alpha;

uniform sampler2D particleTex = 0;
uniform float alphaThreshold;

void main()
{
    outFragColor = texture2D(particleTex, texCoord);
    if (outFragColor.a < alphaThreshold) discard;
    outFragColor.a *= alpha;
}

DECLARE_FRAGCOLOR is a macro definition from one of include files. #include directive is processed by custom preprocessor in project build time. Version.glsl content:

#version 100
precision mediump float;

Other include files contain 2 and 3 lines of code and are irrelevant to the problem.

Darkyenus commented 5 years ago

Thanks for the report, fixed in 7318118ee655693dcb3316ab1c0e3137d4c84a83.