Skip to content

4.x: JPA integration test fail with Java 26 - Duplicated stack frame bytecode index: 54 #10688

@romain-grecourt

Description

@romain-grecourt

Environment Details

  • Helidon Version: 4.3.0-M3
  • Helidon MP
  • JDK version: 26 EA

Problem Description

Caused by: org.hibernate.MappingException: Could not instantiate persister org.hibernate.persister.entity.SingleTableEntityPersister
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:103)
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:75)
	at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.processBootEntities(MappingMetamodelImpl.java:243)
	at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization(MappingMetamodelImpl.java:181)
	at org.hibernate.internal.SessionFactoryImpl.initializeMappingModel(SessionFactoryImpl.java:323)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:273)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:450)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1507)
	... 114 more
Caused by: java.lang.IllegalArgumentException: Duplicated stack frame bytecode index: 54
	at java.base/jdk.internal.classfile.impl.StackMapDecoder.writeFrames(StackMapDecoder.java:122)
	at java.base/jdk.internal.classfile.impl.AbstractAttributeMapper$StackMapTableMapper.writeBody(AbstractAttributeMapper.java:807)
	at java.base/jdk.internal.classfile.impl.AbstractAttributeMapper$StackMapTableMapper.writeBody(AbstractAttributeMapper.java:793)
	at java.base/jdk.internal.classfile.impl.AbstractAttributeMapper.writeAttribute(AbstractAttributeMapper.java:69)
	at java.base/jdk.internal.classfile.impl.UnboundAttribute.writeTo(UnboundAttribute.java:60)
	at java.base/jdk.internal.classfile.impl.Util.writeAttribute(Util.java:282)
	at java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:72)
	at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.writeBody(DirectCodeBuilder.java:397)
	at java.base/jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute.writeTo(UnboundAttribute.java:1104)
	at java.base/jdk.internal.classfile.impl.Util.writeAttribute(Util.java:282)
	at java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:72)
	at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.writeTo(DirectMethodBuilder.java:146)
	at java.base/jdk.internal.classfile.impl.Util.writeList(Util.java:301)
	at java.base/jdk.internal.classfile.impl.DirectClassBuilder.build(DirectClassBuilder.java:198)
	at java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:145)
	at java.base/java.lang.classfile.ClassFile.build(ClassFile.java:558)
	at net.bytebuddy.jar.asmjdkbridge.JdkClassWriter.visitEnd(JdkClassWriter.java:1211)
	at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation.create(TypeWriter.java:6077)
	at net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:2246)
	at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$UsingTypeWriter.make(DynamicType.java:4085)
	at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3769)
	at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Delegator.make(DynamicType.java:4021)
	at org.hibernate.bytecode.internal.bytebuddy.ByteBuddyState.make(ByteBuddyState.java:240)
	at org.hibernate.bytecode.internal.bytebuddy.ByteBuddyState.make(ByteBuddyState.java:229)
	at org.hibernate.bytecode.internal.bytebuddy.ByteBuddyState.load(ByteBuddyState.java:137)
	at org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.getReflectionOptimizer(BytecodeProviderImpl.java:242)
	at org.hibernate.metamodel.internal.EntityRepresentationStrategyPojoStandard.resolveReflectionOptimizer(EntityRepresentationStrategyPojoStandard.java:289)
	at org.hibernate.metamodel.internal.EntityRepresentationStrategyPojoStandard.<init>(EntityRepresentationStrategyPojoStandard.java:160)
	at org.hibernate.metamodel.internal.ManagedTypeRepresentationResolverStandard.resolveStrategy(ManagedTypeRepresentationResolverStandard.java:62)
	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)
	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:135)
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:92)
	... 121 more

See a pipeline run here: https://github.com/helidon-io/helidon/actions/runs/17794075297/job/50577930067

According to HHH-19577 this is fixed in 6.6.19.

Steps to reproduce

Use Java 26

mvn -f tests/integration/jpa/h2/pom.xml verify

Workaround

We can force bytebuddy to use ASM to workaround the issue, see this comment.

-Dnet.bytebuddy.processor=ASM_ONLY

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Sprint Scope

Relationships

None yet

Development

No branches or pull requests

Issue actions