Richard Harker created GROOVY-11580: ---------------------------------------
Summary: Intermittent stack overflow exceptions and hangs Key: GROOVY-11580 URL: https://issues.apache.org/jira/browse/GROOVY-11580 Project: Groovy Issue Type: Bug Components: parser, Templating Affects Versions: 4.0.26, 3.0.23 Environment: Java: Just J OpenJDK JRE 21.0.5 (We use both Windows and Linux and see the issue on both platforms) Exact windows version of the JRE is: org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.5.v20241023-1957 OSGI libraries in use are: org.osgi.service.cm_1.6.1.202109301733.jar org.osgi.service.component_1.5.1.202212101352.jar org.osgi.service.device_1.1.1.202109301733.jar org.osgi.service.event_1.4.1.202109301733.jar org.osgi.service.http.whiteboard_1.1.1.202109301733.jar org.osgi.service.metatype_1.4.1.202109301733.jar org.osgi.service.prefs_1.1.2.202109301733.jar org.osgi.service.provisioning_1.2.0.201505202024.jar org.osgi.service.upnp_1.2.1.202109301733.jar org.osgi.service.useradmin_1.1.1.202109301733.jar org.osgi.service.wireadmin_1.0.2.202109301733.jar org.osgi.util.function_1.2.0.202109301733.jar org.osgi.util.measurement_1.0.2.201802012109.jar org.osgi.util.position_1.0.1.201505202026.jar org.osgi.util.promise_1.3.0.202212101352.jar org.osgi.util.xml_1.0.2.202109301733.jar Eclipse OSGI libraries in use are: org.eclipse.osgi.compatibility.state_1.2.1000.v20240213-1057.jar org.eclipse.osgi.services_3.12.100.v20240327-0645.jar org.eclipse.osgi.util_3.7.300.v20231104-1118.jar org.eclipse.osgi_3.21.0.v20240717-2103.jar Reporter: Richard Harker We develop an OSGI Eclipse E4 based application which is written in a combination of Java and Groovy. The application makes use of Groovy templates dynamically loaded at runtime (to facilitate providing HTML reports) and provides provision for the user to provide Groovy scripts which are parsed and run by a GroovyShell at runtime. For some time now we’ve been seeing issues with intermittent stack overflow exceptions and intermittent hangs - both when the application loads the Groovy templates and when the application compiles the Groovy scripts. The stack overflow exceptions appear to be originating from Groovy and given the hangs appear to occur interchangeably for the stack overflow exceptions, our suspicion is that the hangs are potentially a different manifestation of the same underlying issue. We’ve been using Groovy for some years, and when we were on Groovy 2.5.x did not see these issues at all. We see them on both Groovy 3.x and on 4.x, with them seemingly being more frequent on Groovy 4.x. In the "affected versions above" I've listed 4.0.26 and 3.0.23 - it is not isolated to these versions only, but these are the most recent versions of 4.x and 3.x that we've tried - indeed we see the issue with all versions of 3.x and 4.x that we've tried. Note in the issue header, for the "components", I've listed "templating" and "parser". I'm not 100% sure if that second one should be "parser" or "compiler", but guesstimated "parser" based on the stack trace. +Example stack trace 1 – from when we saw the Stack Overflow Exception with latest Groovy (4.0.26), when the Groovy Shell parses a Groovy script.+ _This example is from Windows._ !ENTRY com.protocrawler.jstdlib.core 4 0 2025-03-04 09:17:15.877 !MESSAGE FrameworkEvent ERROR !STACK 0 java.lang.StackOverflowError at java.base/java.lang.String.startsWith(String.java:2327) at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:97) at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77) at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92) at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:231) at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1445) at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:251) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:180) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:194) at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:353) at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.doOpen(ZipBundleFile.java:51) at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.internalOpen(CloseableBundleFile.java:146) at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.lockOpen(CloseableBundleFile.java:83) at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.getEntry(CloseableBundleFile.java:285) at org.eclipse.osgi.storage.bundlefile.BundleFile.getResourceURL(BundleFile.java:147) at org.eclipse.osgi.internal.loader.classpath.ClasspathEntry.findResource(ClasspathEntry.java:228) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalResourceImpl(ClasspathManager.java:462) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalResourceImpl(ClasspathManager.java:441) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalResource(ClasspathManager.java:412) at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalResource(ModuleClassLoader.java:340) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalResource(BundleLoader.java:952) at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.getResource(SingleSourcePackage.java:46) at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:710) at org.eclipse.osgi.internal.loader.ModuleClassLoader.getResource(ModuleClassLoader.java:212) at java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1413) at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:252) at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:193) at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:175) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:129) at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClassNullable(AsmReferenceResolver.java:57) at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass(AsmReferenceResolver.java:44) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:113) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:111) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:35) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:189) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:148) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:125) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:111) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:35) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:189) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:148) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:125) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:111) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:35) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:189) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:148) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:125) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) <<removed ~900 lines to make the post shorter>> at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:111) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:35) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:189) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:148) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:125) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:111) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:35) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:189) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:148) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:125) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:111) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:35) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:189) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:148) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:125) +Example 2 – The stack overflow seen with Groovy 3.0.23 when parsing one of our TPL template files:+ _This example is from Linux._ OpenJDK 64-Bit Server VM warning: Potentially dangerous stack overflow in ReservedStackAccess annotated method java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryAcquireShared(I)I [1] [ERROR] Unhandled HTML reporter exception java.lang.IllegalStateException: Unexpected error loading template PacketTrace at com.protocrawler.jtf.reporting.testexecution.html.TemplateManagementService.<init>(TemplateManagementService.java:115) at com.protocrawler.jtf.reporting.testexecution.html.TemplateManagementService.getTemplateManagementService(TemplateManagementService.java:51) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318) at com.protocrawler.jtf.reporting.testexecution.html.MultiFileTestExecutionHTMLReporter.initialSetup(MultiFileTestExecutionHTMLReporter.groovy:173) at com.protocrawler.pts.core.jtf.analysis.reporting.html.HTMLAnalysisReporter.super$2$initialSetup(HTMLAnalysisReporter.groovy) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1254) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:144) at com.protocrawler.pts.core.jtf.analysis.reporting.html.HTMLAnalysisReporter.initialSetup(HTMLAnalysisReporter.groovy:94) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318) at com.protocrawler.jtf.reporting.testexecution.html.MultiFileTestExecutionHTMLReporter.generateReport(MultiFileTestExecutionHTMLReporter.groovy:98) at com.protocrawler.jtf.reporting.testexecution.html.cmdln.HTMTestExecutionReport.performCommand(HTMTestExecutionReport.java:219) at com.protocrawler.jtf.reporting.testexecution.html.cmdln.HTMTestExecutionReport.performCommand(HTMTestExecutionReport.java:36) at com.protocrawler.jstdlib.emfcore.cmdline.EMFSettingsCommandLineCommand.performCommand(EMFSettingsCommandLineCommand.java:111) at com.protocrawler.jstdlib.applications.cmdln.DefaultEclipseRCPCommandLineApplication.start(DefaultEclipseRCPCommandLineApplication.java:126) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) at org.eclipse.equinox.launcher.Main.run(Main.java:1481) at org.eclipse.equinox.launcher.Main.main(Main.java:1454) Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during canonicalization: Requesting upgrade to write lock. java.lang.IllegalMonitorStateException: Requesting upgrade to write lock. at org.eclipse.osgi.container.ModuleDatabase.writeLock(ModuleDatabase.java:840) at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:984) at org.eclipse.osgi.container.ModuleContainer.resolveDynamic(ModuleContainer.java:835) at org.eclipse.osgi.internal.loader.BundleLoader.findDynamicSource(BundleLoader.java:1269) at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:729) at org.eclipse.osgi.internal.loader.ModuleClassLoader.getResource(ModuleClassLoader.java:212) at java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1413) at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:248) at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189) at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125) at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClassNullable(AsmReferenceResolver.java:57) at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass(AsmReferenceResolver.java:44) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:102) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) <<removed ~900 lines to make the post shorter>> at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSignature(ClassSignatureParser.java:74) at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:32) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:163) at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTypes(DecompiledClassNode.java:128) at org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(TypeSignatureParser.java:114) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:206) at groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureReader.java:240) at groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader.java:124) 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292) at org.codehaus.groovy.control.ErrorCollector.addException(ErrorCollector.java:140) at org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:977) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:672) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:636) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:392) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:335) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:333) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:317) at groovy.text.markup.MarkupTemplateEngine$TemplateGroovyClassLoader.parseClass(MarkupTemplateEngine.java:256) at groovy.text.markup.MarkupTemplateEngine$MarkupTemplateMaker.<init>(MarkupTemplateEngine.java:229) at groovy.text.markup.MarkupTemplateEngine.createTemplate(MarkupTemplateEngine.java:174) at com.protocrawler.jtf.reporting.testexecution.html.TemplateManagementService.loadTemplate(TemplateManagementService.java:142) at com.protocrawler.jtf.reporting.testexecution.html.TemplateManagementService.getTemplateFromInfo(TemplateManagementService.java:175) at com.protocrawler.jtf.reporting.testexecution.html.TemplateManagementService.<init>(TemplateManagementService.java:111) ... 28 common frames omitted Error occurred during execution: Unexpected error loading template PacketTrace -- This message was sent by Atlassian Jira (v8.20.10#820010)