[ https://issues.apache.org/jira/browse/GROOVY-11580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18007230#comment-18007230 ]
Eric Milles commented on GROOVY-11580: -------------------------------------- These sorts of recursive generics have been a problem in the past. GROOVY-10234 is one example. It would help to have the class header for {{NamedTreeItem}}, {{FieldContainer}} and one example usage of {{Field}}. Do you have the mailing list thread link? > 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: 3.0.23, 4.0.26 > 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 > Priority: Major > > 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)