pietrobraione / jbse

A symbolic Java virtual machine for program analysis, verification and test generation
http://pietrobraione.github.io/jbse/
GNU General Public License v3.0
101 stars 29 forks source link

load is native and has no overriding implementation #66

Open agilesw opened 8 months ago

agilesw commented 8 months ago

macbook m1 arm cpu RunGuidDemoHash1

This is the Java Bytecode Symbolic Executor's Run Tool (Assembles a jar archive containing the classes of the 'main' feature. v.0.11.0-SNAPSHOT). Connecting to Z3 at /opt/homebrew/bin/z3. Initializing guidance by driver method guid/hash_1/GuidDemoHash1:()V:guidanceStart. Failed guidance, cause: jbse.algo.exc.NotYetImplementedException: Method java/lang/ClassLoader$NativeLibrary:(Ljava/lang/String;ZZ)V:load is native and has no overriding implementation. Connection failed, cause: jbse.common.exc.UnexpectedInternalException: jbse.algo.exc.NotYetImplementedException: Method java/lang/ClassLoader$NativeLibrary:(Ljava/lang/String;ZZ)V:load is native and has no overriding implementation..

why “ java/lang/ClassLoader$NativeLibrary:(Ljava/lang/String;ZZ)V:load is native and has no overriding implementation”? how to resolve

pietrobraione commented 8 months ago

It is possible that in the latest version of Java some native methods were moved. Can you tell me which version of Java 8 are you running JBSE on?

agilesw commented 8 months ago

It is possible that in the latest version of Java some native methods were moved. Can you tell me which version of Java 8 are you running JBSE on?

java version "1.8.0_371" Java(TM) SE Runtime Environment (build 1.8.0_371-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode

agilesw commented 8 months ago

the same problem on: java version "1.8.0_391" Java(TM) SE Runtime Environment (build 1.8.0_391-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

pietrobraione commented 8 months ago

It's quite natural that, if JBSE doesn't work on a version of Java 8, it also won't on a later version. I have JDK 1.8.0_312 and even on my setup there are some examples (e.g., golo) that do not longer work. Unfortunately JBSE depends on the internals of the JDK, and these are easily subject to breaking changes from one version to the next one. In the future I will bump the JDK to the last version and update JBSE so it works with it. In the meantime I can only suggest to downgrade the JDK to Temurin 1.8.0_302 (the oldest available on the Adoptium website) and try again.

pietrobraione commented 8 months ago

I did a commit that fixed an issue with JDK 1.8.0_312 and I have checked the example on it, and it works. Until I find time to upgrade JBSE to work with 1.8.0_391 I kindly suggest to downgrade to that version of the JDK.

agilesw commented 8 months ago

I have tasted, can work in: openjdk version "1.8.0_312" OpenJDK Runtime Environment (Zulu 8.58.0.13-CA-macos-aarch64) (build 1.8.0_312-b07) OpenJDK 64-Bit Server VM (Zulu 8.58.0.13-CA-macos-aarch64) (build 25.312-b07, mixed mode)