Skip to content

java.lang.VerifyError: Inconsistent stackmap frames at branch target 475 with Btrace 2.0 #401

@ViniciusArnhold

Description

@ViniciusArnhold

Hello, I was investigating the usage of btrace to identify some JVM crashes in our native libs but run into the following issue, if you could help me identify the cause I would appreciate it.

To note:
This class is the main class which is the first to participate in retransformation.
This issue seems similar to #394 whose fix is already merged in 2.0, so I think the problem is different.

Environment:

BTrace 2.0
Java 1.8 

Btrace agent flags

-javaagent:pwxobtjm_btrace_agent.jar=noServer=true,debug,script=/soft/pwx/btraceConfigs/bergs/pwx/mmd/carga/trace/Pwxp00jm_BtraceConfig.class,scriptOutputFile=/soft/bmt/log/bmtvlgjm_pwx_trace.log

BTrace Debug Log

btrace WARNING: BTrace bootstrap classpath resource [ /soft/pwx/lib/pwxobtjm_btrace_agent.jar!/org/openjdk/btrace/agent/Main.class] does not exist
btrace DEBUG: debugMode is true
btrace DEBUG: scriptOutputFile is /soft/bmt/log/bmtvlgjm_pwx_trace.log
btrace DEBUG: Adding class transformer
btrace DEBUG: stdout is false
btrace DEBUG: initial script is /soft/pwx/btraceConfigs/bergs/pwx/mmd/carga/trace/Pwxp00jm_BtraceConfig.class
btrace INFO: Redirecting output to /soft/bmt/log/bmtvlgjm_pwx_trace.log
btrace DEBUG: loading BTrace class
btrace DEBUG: verifying BTrace class ...
btrace INFO: "org.openjdk.btrace.core.cmdQueueLimit" not provided. Using the default cmd queue limit of 100
btrace INFO: Can not load runtime factory: org.openjdk.btrace.runtime.BTraceRuntimeImpl_9$Factory
btrace INFO: Can not load runtime factory: org.openjdk.btrace.runtime.BTraceRuntimeImpl_11$Factory
btrace DEBUG: BTrace class org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig verified
btrace DEBUG: preprocessing BTrace class org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig ...
btrace DEBUG: ... preprocessed
btrace DEBUG: loaded 'org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig' successfully
btrace DEBUG: class renamed to org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig
btrace DEBUG: client org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig: got org.openjdk.btrace.core.comm.RenameCommand@a8f0b4
btrace DEBUG: creating BTraceRuntime instance for org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig
btrace DEBUG: created BTraceRuntime instance for org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig
btrace DEBUG: sending Okay command
btrace DEBUG: client org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig: got org.openjdk.btrace.core.comm.OkayCommand@6b6478
btrace DEBUG: about to defineClass org/openjdk/btrace/runtime/aux/Pwxp00jm_BtraceConfig
btrace WARNING: Unable to initialize Unsafe. BTrace will not function properly
btrace DEBUG: defineClass succeeded for org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig
btrace WARNING: Unable to load BTrace script /soft/pwx/btraceConfigs/bergs/pwx/mmd/carga/trace/Pwxp00jm_BtraceConfig.class
btrace DEBUG: noServer is true, server not started
btrace DEBUG: Agent init took: 521351517ns
btrace DEBUG: skipping transform for BTrace class org/openjdk/btrace/org/jctools/queues/MessagePassingQueueUtil
btrace DEBUG: skipping transform for BTrace class org/openjdk/btrace/org/jctools/queues/LinkedArrayQueueUtil
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$1
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$2
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$3
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$4
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MemberName$Factory
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleStatics
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleStatics$1
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/parser/SignatureParser
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/TypeArgument
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/TypeTree
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/Tree
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/SimpleClassTypeSignature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/FieldTypeSignature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/BaseType
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/TypeSignature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/ReturnType
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/ClassTypeSignature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/scope/ClassScope
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/scope/Scope
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/scope/AbstractScope
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/factory/CoreReflectionFactory
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/factory/GenericsFactory
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/visitor/Reifier
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/visitor/TypeTreeVisitor
btrace DEBUG: skipping transform for BTrace class sun/reflect/annotation/AnnotationType$1
btrace DEBUG: skipping transform for BTrace class sun/reflect/annotation/ExceptionProxy
btrace DEBUG: skipping transform for BTrace class sun/reflect/annotation/AnnotationTypeMismatchExceptionProxy
btrace DEBUG: skipping transform for BTrace class sun/reflect/annotation/AnnotationParser$1
btrace DEBUG: skipping transform for BTrace class sun/reflect/annotation/AnnotationInvocationHandler
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/scope/MethodScope
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/repository/MethodRepository
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/repository/ConstructorRepository
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/FormalTypeParameter
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/MethodTypeSignature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/Signature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/ClassSignature
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/reflectiveObjects/TypeVariableImpl
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator
btrace DEBUG: skipping transform for BTrace class sun/reflect/generics/tree/TypeVariableSignature
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaMetafactory
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandles$Lookup
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodType$ConcurrentWeakInternSet
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodTypeForm
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/Invokers
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandles
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaForm$BasicType
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaForm$Name
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaForm$NamedFunction
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/SimpleMethodHandle
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$SpeciesData
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$Factory
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$Species_L
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/DirectMethodHandle$Lazy
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/DirectMethodHandle$Interface
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InvokerBytecodeGenerator
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$Intrinsic
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InvokerBytecodeGenerator$2
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InvokerBytecodeGenerator$CpPatch
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/DirectMethodHandle$Accessor
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$AsVarargsCollector
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/DelegatingMethodHandle
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/WrongMethodTypeException
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$Lazy
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaFormEditor
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaFormEditor$Transform$Kind
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaFormEditor$Transform
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/LambdaFormBuffer
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$SpeciesData$1
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$Factory$1
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$Species_LL
btrace DEBUG: skipping transform for BTrace class sun/reflect/UnsafeStaticObjectFieldAccessorImpl
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$Species_L3
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/BoundMethodHandle$Species_L4
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InnerClassLambdaMetafactory
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/AbstractValidatingLambdaMetafactory
btrace DEBUG: skipping transform for BTrace class sun/security/util/SecurityConstants
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InfoFromMemberName
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/MethodHandleInfo
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InnerClassLambdaMetafactory$ForwardingMethodGenerator
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/TypeConvertingMethodAdapter
btrace DEBUG: skipping transform for BTrace class java/lang/invoke/InnerClassLambdaMetafactory$1
btrace DEBUG: skipping transform for BTrace class sun/security/jca/Providers
btrace DEBUG: skipping transform for BTrace class sun/security/jca/ProviderList
btrace DEBUG: skipping transform for BTrace class sun/security/jca/ProviderConfig
btrace DEBUG: skipping transform for BTrace class sun/security/jca/ProviderList$3
btrace DEBUG: skipping transform for BTrace class sun/security/jca/ProviderList$1
btrace DEBUG: skipping transform for BTrace class sun/security/jca/ProviderList$2
btrace DEBUG: skipping transform for BTrace class sun/security/jca/ProviderConfig$2
btrace DEBUG: skipping transform for BTrace class sun/security/provider/Sun
btrace DEBUG: skipping transform for BTrace class sun/security/provider/SunEntries
btrace DEBUG: skipping transform for BTrace class sun/security/provider/SunEntries$1
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG$Variant
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG$1
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG$2
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG$RandomIO
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG$Blocking
btrace DEBUG: skipping transform for BTrace class sun/security/provider/NativePRNG$NonBlocking
btrace DEBUG: skipping transform for BTrace class sun/security/jca/GetInstance
btrace DEBUG: skipping transform for BTrace class sun/security/jca/GetInstance$Instance
btrace DEBUG: skipping transform for BTrace class sun/security/provider/SecureRandom
btrace DEBUG: skipping transform for BTrace class sun/security/provider/SHA
btrace DEBUG: skipping transform for BTrace class sun/security/provider/DigestBase
btrace DEBUG: skipping transform for BTrace class sun/security/provider/ByteArrayAccess
btrace DEBUG: skipping transform for BTrace class sun/security/action/GetIntegerAction
btrace DEBUG: skipping transform for BTrace class sun/security/action/GetLongAction
btrace DEBUG: skipping transform for BTrace class sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
btrace DEBUG: skipping transform for BTrace class sun/reflect/MethodAccessorGenerator
btrace DEBUG: skipping transform for BTrace class sun/reflect/AccessorGenerator
btrace DEBUG: skipping transform for BTrace class sun/reflect/ClassFileConstants
btrace DEBUG: skipping transform for BTrace class sun/reflect/ByteVectorFactory
btrace DEBUG: skipping transform for BTrace class sun/reflect/ByteVectorImpl
btrace DEBUG: skipping transform for BTrace class sun/reflect/ByteVector
btrace DEBUG: skipping transform for BTrace class sun/reflect/ClassFileAssembler
btrace DEBUG: skipping transform for BTrace class sun/reflect/UTF8
btrace DEBUG: skipping transform for BTrace class sun/reflect/Label
btrace DEBUG: skipping transform for BTrace class sun/reflect/Label$PatchInfo
btrace DEBUG: skipping transform for BTrace class sun/reflect/MethodAccessorGenerator$1
btrace DEBUG: skipping transform for BTrace class sun/reflect/ClassDefiner
btrace DEBUG: skipping transform for BTrace class sun/reflect/ClassDefiner$1
btrace DEBUG: skipping transform for BTrace class sun/reflect/SerializationConstructorAccessorImpl
btrace DEBUG: skipping transform for BTrace class sun/reflect/BootstrapConstructorAccessorImpl
btrace DEBUG: transformed class bergs.pwx.mmd.carga.Pwxp00jm
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.VerifyError: Inconsistent stackmap frames at branch target 475
Exception Details:
  Location:
    bergs/pwx/mmd/carga/Pwxp00jm.iniciarPluginsCss([Ljava/lang/String;)V @475: return
  Reason:
    Type top (current frame, locals[0]) is not assignable to 'bergs/pwx/mmd/carga/Pwxp00jm' (stack map, locals[0])
  Current Frame:
    bci: @29
    flags: { }
    locals: { top, '[Ljava/lang/String;', '[Ljava/lang/String;', integer, integer }
    stack: { integer, integer }
  Stackmap Frame:
    bci: @475
    flags: { }
    locals: { 'bergs/pwx/mmd/carga/Pwxp00jm', '[Ljava/lang/String;', top, top, top, top, top, top, top, top }
    stack: { }
  Bytecode:
    0x0000000: 1304 3813 0440 b804 3c2b c601 d12b be9e
    0x0000010: 01cc 2b4d 2cbe 3e03 3604 1504 1da2 01be
    0x0000020: 2c15 0432 3a05 1905 1267 1266 b600 683a
    0x0000030: 0619 062a b400 15b6 005f 9900 b1bb 0196
    0x0000040: 59bb 01d0 59b7 0049 b200 4cb6 004b 1269
    0x0000050: b600 4b2a b400 15b6 004b 126a b600 4b19
    0x0000060: 06b6 004b b600 52b7 0027 3a07 2a19 05b7
    0x0000070: 006b 9900 0e19 07b6 006c 9a00 06a7 0158
    0x0000080: 2ab4 0035 bb01 d059 b700 4912 6db6 004b
    0x0000090: 1907 b600 6eb6 004b b600 52b9 006f 0200
    0x00000a0: 3a08 2ab4 0022 bb01 d059 b700 4912 70b6
    0x00000b0: 004b 1907 b600 6eb6 004b 1906 b600 4b12
    0x00000c0: 71b6 004b 1908 b900 7201 00b6 0073 b600
    0x00000d0: 52b6 0074 2ab4 0010 1908 b900 7201 00b8
    0x00000e0: 0075 b900 7602 0057 a700 c5bb 0196 59bb
    0x00000f0: 01d0 59b7 0049 b200 4cb6 004b 1906 b600
    0x0000100: 4bb6 0052 b700 273a 0719 07b6 006c 9900
    0x0000110: 0b19 07b6 0077 9a00 2f2a 1905 b700 6b9a
    0x0000120: 0023 2ab4 0022 bb01 d059 b700 4912 78b6
    0x0000130: 004b 1907 b600 7912 7ab6 004b b600 52b6
    0x0000140: 007b a700 932a b400 35bb 01d0 59b7 0049
    0x0000150: 126d b600 4b19 07b6 006e b600 4bb6 0052
    0x0000160: b900 6f02 003a 082a b400 22bb 01d0 59b7
    0x0000170: 0049 1270 b600 4b19 07b6 006e b600 4b19
    0x0000180: 06b6 004b 1271 b600 4b19 08b9 0072 0100
    0x0000190: b600 73b6 0052 b600 742a b400 1019 08b9
    0x00001a0: 0072 0100 b800 75b9 0076 0200 57a7 0028
    0x00001b0: 3a09 2ab4 0022 bb01 d059 b700 4912 7cb6
    0x00001c0: 004b 1909 b600 7db6 004b b600 52b6 007b
    0x00001d0: 1909 b600 7e84 0401 a7fe 42b1          
  Exception Handler Table:
    bci [49, 125] => handler: 432
    bci [128, 322] => handler: 432
    bci [325, 429] => handler: 432
  Stackmap Table:
    full_frame(@26,{Top,Object[#424],Object[#424],Integer,Integer},{})
    append_frame(@128,Object[#423],Object[#423],Object[#406])
    full_frame(@235,{Object[#407],Object[#424],Object[#424],Integer,Integer,Object[#423],Object[#423],Top,Top},{})
    full_frame(@281,{Object[#407],Object[#424],Object[#424],Integer,Integer,Object[#423],Object[#423],Object[#406],Top},{})
    same_frame(@322)
    same_frame(@325)
    full_frame(@429,{Object[#407],Object[#424],Object[#424],Integer,Integer,Object[#423],Object[#423],Object[#406],Object[#443]},{})
    full_frame(@432,{Object[#407],Object[#424],Object[#424],Integer,Integer,Object[#423],Object[#423],Top,Top},{Object[#425]})
    full_frame(@469,{Object[#407],Object[#424],Object[#424],Integer,Integer,Top,Top,Top,Top,Top},{})
    full_frame(@475,{Object[#407],Object[#424],Top,Top,Top,Top,Top,Top,Top,Top},{})

	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
	at java.lang.Class.getMethod0(Class.java:3018)
	at java.lang.Class.getMethod(Class.java:1784)
	at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
btrace DEBUG: client org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig: got org.openjdk.btrace.core.comm.ExitCommand@144699d
btrace DEBUG: onExit:
btrace DEBUG: cleaning up transformers
btrace DEBUG: onExit: removing transformer for org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig
btrace DEBUG: removing instrumentation
btrace DEBUG: retransforming loaded classes
btrace DEBUG: filtering loaded classes
btrace DEBUG: candidate class bergs.pwx.mmd.carga.Pwxp00jm added
btrace DEBUG: client org.openjdk.btrace.runtime.aux.Pwxp00jm_BtraceConfig: got org.openjdk.btrace.core.comm.RetransformationStartNotification@10c40e3
btrace DEBUG: calling retransformClasses (1 classes to be retransformed)
btrace DEBUG: Attempting to retransform class: bergs.pwx.mmd.carga.Pwxp00jm
btrace DEBUG: java.lang.InternalError
java.lang.InternalError
	at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
	at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:144)
	at org.openjdk.btrace.agent.Client.retransformLoaded(Client.java:476)
	at org.openjdk.btrace.agent.Client.onExit(Client.java:263)
	at org.openjdk.btrace.agent.FileClient.onCommand(FileClient.java:101)
	at org.openjdk.btrace.runtime.BTraceRuntimeImplBase$ConsumerWrapper.accept(BTraceRuntimeImplBase.java:224)
	at org.openjdk.btrace.runtime.BTraceRuntimeImplBase$ConsumerWrapper.accept(BTraceRuntimeImplBase.java:212)
	at org.openjdk.btrace.org.jctools.queues.MessagePassingQueueUtil.drain(MessagePassingQueueUtil.java:83)
	at org.openjdk.btrace.org.jctools.queues.BaseMpscLinkedArrayQueue.drain(BaseMpscLinkedArrayQueue.java:602)
	at org.openjdk.btrace.org.jctools.queues.MpscChunkedArrayQueue.drain(MpscChunkedArrayQueue.java:43)
	at org.openjdk.btrace.runtime.BTraceRuntimeImplBase$3.run(BTraceRuntimeImplBase.java:448)
	at java.lang.Thread.run(Thread.java:748)

Please let me know if the btrace is needed.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions