jsglr GC overhead limit exceeded on Windows
This issue only happens on Windows, not on OSX, exactly same Spoofax version.
Upping the memory limit to 2G doesn’t fix it, only makes it appear later.Side note: Spoofax Core is single threaded, but the Java GC is not, so CPU use goes up to 100% before GC overhead limit exceeded exception is thrown.
13:01 | INFO | s.e.m.b.GenerateSourcesBuilder - Generating sources for language project eclipse:///relations 13:01 | INFO | o.m.c.build.Builder - Building eclipse:///relations 13:01 | INFO | o.m.c.build.Builder - Building 1 sources, 0 includes of language impl. org.metaborg:org.metaborg.meta.lang.esv:1.5.0-SNAPSHOT 13:01 | INFO | o.m.s.e.m.b.PreJavaBuilder - Building language project eclipse:///relations 13:01 | INFO | Build log - > Generate sources 13:01 | INFO | Build log - > Compile grammar to parse table 13:01 | INFO | Build log - > Make grammar permissive for error-recovery parsing. 13:01 | INFO | Build log - > Pack SDF modules 13:01 | INFO | Build log - Execute pack-sdf 13:01 | INFO | Build log - Execute make-permissive 13:01 | INFO | Build log - > Prepare native executables 13:01 | INFO | Build log - Execute sdf2table 13:01 | INFO | Build log - > Generate pretty-print table from grammar 13:01 | INFO | Build log - > Parse SDF definition 13:01 | INFO | Build log - Execute pp-gen 13:01 | INFO | Build log - Execute pp-table 13:01 | INFO | Build log - > Compress pretty-print table 13:01 | INFO | Build log - > Copy external Jar 13:01 | INFO | Build log - > Compile Stratego code 13:01 | INFO | Build log - > Extract parenthesis structure from grammar 13:01 | INFO | Build log - > Parse SDF definition 13:01 | INFO | Build log - Execute sdf2parenthesize 13:01 | INFO | Build log - Execute sdf2table 13:01 | INFO | Build log - > Generate Stratego signatures for grammar constructors 13:01 | INFO | Build log - > Extract constructor signatures from grammar 13:01 | INFO | Build log - > Parse SDF definition 13:01 | INFO | Build log - Execute sdf2rtg 13:01 | INFO | Build log - Execute sdf2table 13:01 | INFO | Build log - Execute implodePT 13:01 | INFO | Build log - Execute rtg2sig 13:01 | INFO | Build log - Execute strj 13:03 | ERROR | Build log - Builder failed unexpectedly java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded at org.strategoxt.lang.StackSaver.invokeStackFriendly(StackSaver.java:79) ~[org.strategoxt.strj_1.5.0.20160115-163802-new-spoofax-plugin/:na] at org.strategoxt.lang.Context.invokeStrategyCLI(Context.java:178) ~[org.strategoxt.strj_1.5.0.20160115-163802-new-spoofax-plugin/:na] at org.metaborg.spoofax.meta.core.pluto.StrategoExecutor.executeCLI(StrategoExecutor.java:135) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.Strj.build(Strj.java:137) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.Strj.build(Strj.java:1) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at build.pluto.builder.Builder.triggerBuild(Builder.java:133) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.executeBuilder(BuildManager.java:90) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.require(BuildManager.java:323) [pluto-1.7.1.jar:na] at build.pluto.builder.Builder.requireBuild(Builder.java:214) [pluto-1.7.1.jar:na] at build.pluto.builder.Builder.requireBuild(Builder.java:166) [pluto-1.7.1.jar:na] at build.pluto.builder.Builder.requireBuild(Builder.java:191) [pluto-1.7.1.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.main.GenerateSourcesBuilder.strj(GenerateSourcesBuilder.java:325) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.main.GenerateSourcesBuilder.build(GenerateSourcesBuilder.java:219) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.main.GenerateSourcesBuilder.build(GenerateSourcesBuilder.java:1) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at build.pluto.builder.Builder.triggerBuild(Builder.java:133) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.executeBuilder(BuildManager.java:90) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.require(BuildManager.java:323) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.requireInitially(BuildManager.java:250) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManagers.build(BuildManagers.java:62) [pluto-1.7.1.jar:na] at org.metaborg.spoofax.meta.core.SpoofaxMetaBuilder.plutoBuild(SpoofaxMetaBuilder.java:213) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.SpoofaxMetaBuilder.compilePreJava(SpoofaxMetaBuilder.java:115) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.eclipse.meta.build.PreJavaBuilder$1.run(PreJavaBuilder.java:51) [org.metaborg.spoofax.eclipse.meta_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.metaborg.spoofax.eclipse.meta.build.PreJavaBuilder.build(PreJavaBuilder.java:71) [org.metaborg.spoofax.eclipse.meta_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.eclipse.meta.build.Builder.build(Builder.java:46) [org.metaborg.spoofax.eclipse.meta_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.7.0.v20150402-1709.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:205) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:245) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:300) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.7.0.v20150402-1709.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:359) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:382) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:486) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:405) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:287) [org.eclipse.ui.ide_3.11.0.v20150825-2158.jar:na] at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) [org.eclipse.core.jobs_3.7.0.v20150330-2103.jar:na] Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:509) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] 13:03 | ERROR | Build log - Required builder failed java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded at org.strategoxt.lang.StackSaver.invokeStackFriendly(StackSaver.java:79) ~[org.strategoxt.strj_1.5.0.20160115-163802-new-spoofax-plugin/:na] at org.strategoxt.lang.Context.invokeStrategyCLI(Context.java:178) ~[org.strategoxt.strj_1.5.0.20160115-163802-new-spoofax-plugin/:na] at org.metaborg.spoofax.meta.core.pluto.StrategoExecutor.executeCLI(StrategoExecutor.java:135) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.Strj.build(Strj.java:137) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.Strj.build(Strj.java:1) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at build.pluto.builder.Builder.triggerBuild(Builder.java:133) ~[pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.executeBuilder(BuildManager.java:90) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.require(BuildManager.java:323) [pluto-1.7.1.jar:na] at build.pluto.builder.Builder.requireBuild(Builder.java:214) ~[pluto-1.7.1.jar:na] at build.pluto.builder.Builder.requireBuild(Builder.java:166) ~[pluto-1.7.1.jar:na] at build.pluto.builder.Builder.requireBuild(Builder.java:191) ~[pluto-1.7.1.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.main.GenerateSourcesBuilder.strj(GenerateSourcesBuilder.java:325) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.main.GenerateSourcesBuilder.build(GenerateSourcesBuilder.java:219) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.pluto.build.main.GenerateSourcesBuilder.build(GenerateSourcesBuilder.java:1) ~[org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at build.pluto.builder.Builder.triggerBuild(Builder.java:133) ~[pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.executeBuilder(BuildManager.java:90) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.require(BuildManager.java:323) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManager.requireInitially(BuildManager.java:250) [pluto-1.7.1.jar:na] at build.pluto.builder.BuildManagers.build(BuildManagers.java:62) [pluto-1.7.1.jar:na] at org.metaborg.spoofax.meta.core.SpoofaxMetaBuilder.plutoBuild(SpoofaxMetaBuilder.java:213) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.meta.core.SpoofaxMetaBuilder.compilePreJava(SpoofaxMetaBuilder.java:115) [org.metaborg.spoofax.meta.core_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.eclipse.meta.build.PreJavaBuilder$1.run(PreJavaBuilder.java:51) [org.metaborg.spoofax.eclipse.meta_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.metaborg.spoofax.eclipse.meta.build.PreJavaBuilder.build(PreJavaBuilder.java:71) [org.metaborg.spoofax.eclipse.meta_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.eclipse.meta.build.Builder.build(Builder.java:46) [org.metaborg.spoofax.eclipse.meta_1.5.0.20160115-163802-new-spoofax-plugin.jar:na] at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.7.0.v20150402-1709.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:205) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:245) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:300) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.7.0.v20150402-1709.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:359) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:382) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:486) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:405) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:287) [org.eclipse.ui.ide_3.11.0.v20150825-2158.jar:na] at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39) [org.eclipse.core.resources_3.10.1.v20150725-1910.jar:na] at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) [org.eclipse.core.jobs_3.7.0.v20150330-2103.jar:na] Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:509) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:902) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:888) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterTree(Disambiguator.java:547) ~[na:na] at org.spoofax.jsglr.client.Disambiguator.filterAmbiguities(Disambiguator.java:901) ~[na:na] 13:03 | ERROR | o.m.s.e.m.b.PreJavaBuilder - BUILD FAILED
Submitted by Daco Harkes on 29 January 2016 at 13:05Eclipse: epp.package.java 4.5.1.20150917-1200 Spoofax: org.metaborg.spoofax.eclipse 1.5.0.20160115-163802-new-spoofax-plugin System: Windows 10 amd64 10.0
Issue Log
Oh another note: I probably introduced this by using concrete object syntax (Java/WebDSL target languages). I did not have this issue last week and I did not change the Spoofax version on Windows, but I did a lot of changes to Stratego files.
Issue is with multiple single line comments. Workaround is to use multi line comments.
See: https://github.com/metaborg/relations/commit/279b4b3a2a8191214d280cc1cc873484bac054d3
At east add a wont-fix tag when closing an issue that is not fixed. (I’m fine with not fixing btw.)
Log in to post comments