[ 
https://issues.apache.org/jira/browse/ARIES-2080?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17634129#comment-17634129
 ] 

Jan Bartel edited comment on ARIES-2080 at 11/15/22 3:31 AM:
-------------------------------------------------------------

It not only fails for records, it also fails for any {{{}enums{}}}, which more 
recent versions of the jvm are generating as `{{{}final{}}}` and therefore 
`{{{}sealed{}}}`.

 

We're using spifly 1.3.5 with asm 9.3, but the stacktrace we see for parsing an 
enum generated with jdk17 is as follows:
{quote}java.lang.UnsupportedOperationException: PermittedSubclasses requires 
ASM9
    at 
org.objectweb.asm.ClassVisitor.visitPermittedSubclass(ClassVisitor.java:265)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:706)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:424)
    at 
org.apache.aries.spifly.dynamic.ClientWeavingHook.weave(ClientWeavingHook.java:60)
    at 
org.eclipse.osgi.internal.weaving.WovenClassImpl.call(WovenClassImpl.java:187)
    at 
org.eclipse.osgi.internal.weaving.WovenClassImpl.call(WovenClassImpl.java:1)
    at 
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1357)
    at 
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1330)
    at 
org.eclipse.osgi.internal.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:249)
    at 
org.eclipse.osgi.internal.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:80)
    at 
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.processClass(ClasspathManager.java:735)
    at 
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:706)
    at 
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:639)
    at 
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:607)
    at 
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:587)
    at 
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:566)
    at 
org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    at 
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
    at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    at 
org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at org.eclipse.jetty.http.MimeTypes.lambda$static$0(MimeTypes.java:211)
    at org.eclipse.jetty.util.Index$Builder.withAll(Index.java:357)
    at org.eclipse.jetty.http.MimeTypes.<clinit>(MimeTypes.java:207)
    at 
org.eclipse.jetty.ee9.nested.ContextHandler.doStart(ContextHandler.java:629)
{quote}


was (Author: janbartel):
It not only fails for records, it also fails for any {{{}enums{}}}, which more 
recent versions of the jvm are generating as `{{{}final{}}}` and therefore 
`{{{}sealed{}}}`.

> TCCLSetterVisitor fails visitation of classes containing records
> ----------------------------------------------------------------
>
>                 Key: ARIES-2080
>                 URL: https://issues.apache.org/jira/browse/ARIES-2080
>             Project: Aries
>          Issue Type: Bug
>          Components: SPI Fly
>    Affects Versions: spifly-1.3.5
>            Reporter: Bjørn C Seime
>            Priority: Major
>         Attachments: stacktrace-aries-spifly-asm8.txt
>
>
> {{TCCLSetterVisitor}} class overrides {{ClassVisitor}} passing API version 
> {{Opcodes.ASM7}} as argument to its super class's constructor. The effect is 
> that {{TCCLSetterVisitor}} fails whenever it visits byte code requiring ASM 
> API version >7 - even on ASM 9.3. This results in the weaving hook failing 
> during class loading for classes using records from JDK16.
> {noformat}
> [2022-07-07 13:22:05.080] WARNING : container        stderr     Caused by: 
> java.lang.UnsupportedOperationException: Records requires ASM8
> [2022-07-07 13:22:05.080] WARNING : container        stderr             at 
> com.yahoo.vespa.spifly.repackaged.asm.ClassVisitor.visit(ClassVisitor.java:111)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to