Hi All. Apologies, for some reason these mailing list emails aren't all coming through to my email address - so I can't reply directly to the response from Jochen Theodorou, but the workaround suggestion provided there, of setting a compiler configuration that sets 'asmResolving' to false seems to have entirely solved the problems we were having. We're now using a compiler configuration with this flag set to false for both our Groovy Script execution and the templating engine - and so far have not seen any of the stack overflow or hang issues in either instance, both in our groovy 3.0.23 or 4.0.26 setups. (Just to be clear on why we're running both 3.x and 4.x setups - we were intending to just use 4.x but had previously temporarily tried downgrading to 3.x branch in a failed attempt to see if that avoided the issue. Now we have this workaround, we'll now be moving out application fully to latest 4.0.26).
Also, apologies, I'm not too sure what the etiquette is here in terms of whether this should continue to be discussed in the mailing list or via the Jira issue I raised (GROOVY-11580), so I'll add a further response to the issue too. Also to clarify, our Java library code does include some recursive use of generics, so this could be what is causing the problem. For example, we have a number of classes which implement this interface: public interface Field<I extends FieldInstance<? extends Field<I>>> extends NamedItemTree<Field<?>, FieldContainer<?>>, AnnotatedItem Anyway, thanks again to Jochen for the incredibly useful suggestion. I will update the Jira Ticket, and if the issue is acknowledged as a genuine bug, we're very happy to continue assisting in providing more info and/or testing any potential fixes. Best Regards, Richard. -----Original Message----- From: Paul King <pa...@asert.com.au> Sent: 10 March 2025 20:18 To: users@groovy.apache.org Subject: Re: Intermittent Groovy stack overflow exceptions and hangs Account created. I understand that creating a reproducible example may be hard. Just give as much description as you can about what the application seems to be doing when those errors occur. I know you have some of that already, but the more the better. Also, you mentioned Groovy and JDK versions. The OSGi related dependencies (and versions) you use would also be very useful. Cheers, Paul. On Tue, Mar 11, 2025 at 3:12 AM Richard Harker <richard.har...@cytal.co.uk> wrote: > > Hi Paul > > Ok thank you. I've put in a request for an Apache Groovy Jira account, and > will raise a ticket when my account is active. > > Unfortunately, due to the nature of the issue and size of our application, I > don't see any way we can create a simple isolated sharable example that > demonstrates the issue ☹. Though, I've just caught an instance of the stack > overflow error exception in the debugger and can see an example class > signature that it appears to be struggling with, so perhaps that may be > useful. Will add it to the jira ticket. Example class signature from when I > saw the exception just now: > > <F::Lcom/protocrawler/pts/core/datamodel/fields/Field<+Lcom/protocrawl > er/pts/core/datamodel/instances/FieldInstance<TF;>;>;>Ljava/lang/Objec > t;Lcom/protocrawler/jstdlib/core/datastructures/nameditemtree/NamedIte > mTree<Lcom/protocrawler/pts/core/datamodel/instances/FieldInstance<*>; > Lcom/protocrawler/pts/core/datamodel/instances/ContainerInstance<*>;>; > Lcom/protocrawler/pts/core/datamodel/fields/HasFieldDefinition;Lcom/pr > otocrawler/jstdlib/emfcore/annotations/AnnotatedItem; > > Best Regards, > > Rich. > > > -----Original Message----- > From: Paul King <pa...@asert.com.au> > Sent: 10 March 2025 09:42 > To: users@groovy.apache.org > Subject: Re: Intermittent Groovy stack overflow exceptions and hangs > > Hi Rich, > > I suggest you create an issue in our Jira. It is hard to tell from that > stacktrace whether it is a Groovy or OSGi issue, but we'd like to understand > in either case. > > The tricky aspect will be for us to reproduce your issue locally. Do you > think creating a simple hello world application to replicate what you have is > feasible? > > Cheers, > Paul. > > On Mon, Mar 10, 2025 at 6:00 PM Richard Harker <richard.har...@cytal.co.uk> > wrote: > > > > Hi All. > > > > > > > > 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. > > > > > > > > Has anyone else seen these types of issues? I’ve included two example stack > > traces below. I’ve truncated each stack trace in the middle of the > > repeating lines, so the email is not huge. > > > > > > > > > > > > > > > > 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. > > > > > > > > !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 > > .j > > ava:353) > > > > at > > org.eclipse.osgi.storage.bundlefile.ZipBundleFile.doOpen(ZipBundleFi > > le > > .java:51) > > > > at > > org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.internalOpen > > (C > > loseableBundleFile.java:146) > > > > at > > org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.lockOpen(Clo > > se > > ableBundleFile.java:83) > > > > at > > org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.getEntry(Clo > > se > > ableBundleFile.java:285) > > > > at > > org.eclipse.osgi.storage.bundlefile.BundleFile.getResourceURL(Bundle > > Fi > > le.java:147) > > > > at > > org.eclipse.osgi.internal.loader.classpath.ClasspathEntry.findResour > > ce > > (ClasspathEntry.java:228) > > > > at > > org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLoca > > lR > > esourceImpl(ClasspathManager.java:462) > > > > at > > org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLoca > > lR > > esourceImpl(ClasspathManager.java:441) > > > > at > > org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLoca > > lR > > esource(ClasspathManager.java:412) > > > > at > > org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalResource > > (M > > oduleClassLoader.java:340) > > > > at > > org.eclipse.osgi.internal.loader.BundleLoader.findLocalResource(Bund > > le > > Loader.java:952) > > > > at > > org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.getReso > > ur > > ce(SingleSourcePackage.java:46) > > > > at > > org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoa > > de > > r.java:710) > > > > at > > org.eclipse.osgi.internal.loader.ModuleClassLoader.getResource(Modul > > eC > > lassLoader.java:212) > > > > at > > java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1413) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNo > > de > > Resolver.java:252) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScri > > pt > > (ClassNodeResolver.java:193) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNod > > eR > > esolver.java:175) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeR > > es > > olver.java:129) > > > > at > > org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass > > Nu > > llable(AsmReferenceResolver.java:57) > > > > at > > org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass > > (A > > smReferenceResolver.java:44) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:113) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:111) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:35) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:189) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:148) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:125) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:111) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:35) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:189) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:148) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:125) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:111) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:35) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:189) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:148) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:125) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > > > > > <<removed ~900 lines to make the email shorter>> > > > > > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:111) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:35) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:189) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:148) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:125) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:111) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:35) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:189) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:148) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:125) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:111) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:35) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:189) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:148) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:125) > > > > > > > > > > > > > > > > > > > > Example 2 – The stack overflow seen with Groovy 3.0.23 when parsing one of > > our TPL template files: > > > > > > > > OpenJDK 64-Bit Server VM warning: Potentially dangerous stack > > overflow in ReservedStackAccess annotated method > > java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryAcquireSha > > re > > d(I)I [1] > > > > [ERROR] Unhandled HTML reporter exception > > > > java.lang.IllegalStateException: Unexpected error loading template > > PacketTrace > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.TemplateManagement > > Se > > rvice.<init>(TemplateManagementService.java:115) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.TemplateManagement > > Se > > rvice.getTemplateManagementService(TemplateManagementService.java:51 > > ) > > > > at > > org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface. > > java:318) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.MultiFileTestExecu > > ti > > onHTMLReporter.initialSetup(MultiFileTestExecutionHTMLReporter.groovy: > > 173) > > > > at > > com.protocrawler.pts.core.jtf.analysis.reporting.html.HTMLAnalysisRe > > po > > rter.super$2$initialSetup(HTMLAnalysisReporter.groovy) > > > > at > > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Dir > > ec > > tMethodHandleAccessor.java:103) > > > > at java.base/java.lang.reflect.Method.invoke(Method.java:580) > > > > at > > org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java > > :1 > > 07) > > > > at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) > > > > at > > groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1254) > > > > at > > org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSupe > > rN > > (ScriptBytecodeAdapter.java:144) > > > > at > > com.protocrawler.pts.core.jtf.analysis.reporting.html.HTMLAnalysisRe > > po > > rter.initialSetup(HTMLAnalysisReporter.groovy:94) > > > > at > > org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface. > > java:318) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.MultiFileTestExecu > > ti > > onHTMLReporter.generateReport(MultiFileTestExecutionHTMLReporter.gro > > ov > > y:98) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.cmdln.HTMTestExecu > > ti > > onReport.performCommand(HTMTestExecutionReport.java:219) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.cmdln.HTMTestExecu > > ti > > onReport.performCommand(HTMTestExecutionReport.java:36) > > > > at > > com.protocrawler.jstdlib.emfcore.cmdline.EMFSettingsCommandLineComma > > nd > > .performCommand(EMFSettingsCommandLineCommand.java:111) > > > > at > > com.protocrawler.jstdlib.applications.cmdln.DefaultEclipseRCPCommand > > Li > > neApplication.start(DefaultEclipseRCPCommandLineApplication.java:126 > > ) > > > > at > > org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHand > > le > > .java:208) > > > > at > > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runAppl > > ic > > ation(EclipseAppLauncher.java:143) > > > > at > > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(E > > cl > > ipseAppLauncher.java:109) > > > > at > > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.j > > av > > a:439) > > > > at > > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.j > > av > > a:271) > > > > at > > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Dir > > ec > > tMethodHandleAccessor.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.j > > av > > a:840) > > > > at > > org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer. > > java:984) > > > > at > > org.eclipse.osgi.container.ModuleContainer.resolveDynamic(ModuleCont > > ai > > ner.java:835) > > > > at > > org.eclipse.osgi.internal.loader.BundleLoader.findDynamicSource(Bund > > le > > Loader.java:1269) > > > > at > > org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoa > > de > > r.java:729) > > > > at > > org.eclipse.osgi.internal.loader.ModuleClassLoader.getResource(Modul > > eC > > lassLoader.java:212) > > > > at > > java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1413) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNo > > de > > Resolver.java:248) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScri > > pt > > (ClassNodeResolver.java:189) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNod > > eR > > esolver.java:169) > > > > at > > org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeR > > es > > olver.java:125) > > > > at > > org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass > > Nu > > llable(AsmReferenceResolver.java:57) > > > > at > > org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass > > (A > > smReferenceResolver.java:44) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:102) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > > > > > <<removed ~900 lines to make the email shorter>> > > > > > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.parseClassSi > > gn > > ature(ClassSignatureParser.java:74) > > > > at > > org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureCla > > ss > > (ClassSignatureParser.java:32) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSuper > > s( > > DecompiledClassNode.java:163) > > > > at > > org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getGenericsTy > > pe > > s(DecompiledClassNode.java:128) > > > > at > > org.codehaus.groovy.ast.decompiled.TypeSignatureParser.visitEnd(Type > > Si > > gnatureParser.java:114) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:206) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.parseType(SignatureRea > > de > > r.java:240) > > > > at > > groovyjarjarasm.asm.signature.SignatureReader.accept(SignatureReader > > .j > > ava:124) > > > > > > > > 1 error > > > > > > > > at > > org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollect > > or > > .java:292) > > > > at > > org.codehaus.groovy.control.ErrorCollector.addException(ErrorCollect > > or > > .java:140) > > > > at > > org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperati > > on > > .doPhaseOperation(CompilationUnit.java:977) > > > > at > > org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(C > > om > > pilationUnit.java:672) > > > > at > > org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit. > > ja > > va:636) > > > > at > > groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:39 > > 2) > > > > at > > groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader. > > ja > > va:335) > > > > at > > org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(Stamp > > ed > > CommonCache.java:163) > > > > at > > org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(Sta > > mp > > edCommonCache.java:154) > > > > at > > groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:333) > > > > at > > groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:317) > > > > at > > groovy.text.markup.MarkupTemplateEngine$TemplateGroovyClassLoader.pa > > rs > > eClass(MarkupTemplateEngine.java:256) > > > > at > > groovy.text.markup.MarkupTemplateEngine$MarkupTemplateMaker.<init>(M > > ar > > kupTemplateEngine.java:229) > > > > at > > groovy.text.markup.MarkupTemplateEngine.createTemplate(MarkupTemplat > > eE > > ngine.java:174) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.TemplateManagement > > Se > > rvice.loadTemplate(TemplateManagementService.java:142) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.TemplateManagement > > Se > > rvice.getTemplateFromInfo(TemplateManagementService.java:175) > > > > at > > com.protocrawler.jtf.reporting.testexecution.html.TemplateManagement > > Se > > rvice.<init>(TemplateManagementService.java:111) > > > > ... 28 common frames omitted > > > > Error occurred during execution: Unexpected error loading template > > PacketTrace > > > > > > > > Does anyone have any suggestions of what the cause of these issues may be, > > or steps we could take to avoid the issues please? > > > > > > > > > > > > If it’s relevant here, the JRE we’re currently using is Just J OpenJDK JRE > > 21.0.5, though we’ve tried other versions of OpenJDK including 17.x and > > still see the same issues. > > > > > > > > Best Regards, > > > > > > > > Rich. > > > >