You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Jan Bartel (Jira)" <ji...@apache.org> on 2022/11/15 03:32:00 UTC
[jira] [Comment Edited] (ARIES-2080) TCCLSetterVisitor fails visitation of classes containing records
[ 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)