Hello!
jme3test.helloworld.HelloPhysics
gives immediate crash:
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x169acbac, pid=3624, tid=0x000010f8
…
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j com.jme3.bullet.PhysicsSpace.addRigidBody(JJ)V+0
j com.jme3.bullet.PhysicsSpace.addRigidBody(Lcom/jme3/bullet/objects/PhysicsRigidBody;)V+75
j com.jme3.bullet.PhysicsSpace.addCollisionObject(Lcom/jme3/bullet/collision/PhysicsCollisionObject;)V+30
j com.jme3.bullet.control.RigidBodyControl.setPhysicsSpace(Lcom/jme3/bullet/PhysicsSpace;)V+38
j com.jme3.bullet.PhysicsSpace.add(Ljava/lang/Object;)V+12
j jme3test.helloworld.HelloPhysics.makeBrick(Lcom/jme3/math/Vector3f;)V+66
j jme3test.helloworld.HelloPhysics.initWall()V+50
j jme3test.helloworld.HelloPhysics.simpleInitApp()V+71
j com.jme3.app.SimpleApplication.initialize()V+282
j com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread()Z+90
j com.jme3.system.lwjgl.LwjglAbstractDisplay.run()V+36
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
JME was built from current master (which is JME v3.2). JRE version: 8.0_92-b14. Native bullet is used. Access violation bug happens only on x86 JRE (and of course x86 bulletjme.dll). Same JME build works fine on x64 JRE and x64 bulletjme.dll. Operation system is windows 7 x64. Maybe native bullet x86 should not work on x64 windows? I doubt this.
If to rebuild JME from May, 4th 2015 (it is previous version of native\windows\x86\bulletjme.dll
), then native bullet works fine on JRE x86. Last time bulletjme.dll
was changed on 22nd, April, 2016, and this version gives access violation. Looks like something broke the native bullet between those dates. There are many commits to cpp files without rebuilt dlls. If I manage to understand how to build those dll myslef, I could find the commit, which introduced the bug. It is also possible, that issue is because I use Java 8 instead of Java 7.
jBullet doesn’t work either for the current master It gives such exception:
java.lang.NoClassDefFoundError: com/bulletphysics/collision/dispatch/CollisionConfiguration
at com.jme3.bullet.BulletAppState.startPhysics(BulletAppState.java:164)
at com.jme3.bullet.BulletAppState.stateAttached(BulletAppState.java:211)
at com.jme3.app.state.AppStateManager.attach(AppStateManager.java:133)
at jme3test.helloworld.HelloPhysics.simpleInitApp(HelloPhysics.java:101)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:220)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:211)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.bulletphysics.collision.dispatch.CollisionConfiguration
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 8 more
So, currently I can’t launch physics with any bullet physics implementation on Windows JRE x86. I am more interested in the native bullet though, and any advice how to fix the issue is welcome.
Thank you!