# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x614e7fe9, pid=1548, tid=0x000050d4
#
# JRE version: Java(TM) SE Runtime Environment (8.0_351-b10) (build 1.8.0_351-b10)
# Java VM: Java HotSpot(TM) Client VM (25.351-b10 mixed mode windows-x86 )
# Problematic frame:
# C [ig9icd32.dll+0x4b7fe9]
This is repeatable. It happens every time I run my app.
From what I can gather from this forum and the Internet, this seems to be something in the Intel graphics driver.
I checked Windows Update and my laptop is up to date. I am running Windows 11.
Is it useful for me to pare down my code to a minimal test case to report somewhere? Or, is this one of those things which will take a bunch of time and reach no resolution?
This is not something jme related, however you could send the full stack, one may know the issue from the stack that calls the problematic frame, it may be just a matter of broken or corrupted drivers in the first place, in which case uninstalling and reinstalling may work.
Does Java Minecraft work on your system? Any other lwjgl apps?
…with intel drivers you kind of have to try a bunch of things. First confirm that your GPU supports OpenGL2 or better… then you might have to go to older drivers, chant weird ancient languages, swing a dead cat over your head 13 times at the stroke of midnight under a full moon, etc…
For a successful chip company, they write really bad drivers.
So, if Minecraft Java works, but JME does not, what does that mean?
Do I need to try a different 3D modeling framework or am I going to have problems even if I switch to something else?
Do I need to buy a different laptop?
Without knowing how you made it, it doesn’t seem particularly large. Is each block a different object or something or do you batch things into a single mesh? Or?
public class CubePuzzleGenerator extends SimpleApplication {
private ArrayList<PuzzleInfo> puzzlesToWrite = new ArrayList<PuzzleInfo>();
public void createSolvableGrid(Vector3f puzzleSize)
throws Exception {
// Create a puzzle in a POI workbook
...
// Create a puzzle info object
PuzzleInfo puzzleInfo = new PuzzleInfo(puzzleSize,
workbook);
puzzlesToWrite.add(puzzleInfo);
}
@Override
public void simpleInitApp() {
// Set the viewport to have a white background
// Create an app state object to take screenshots
ssAppState = new ScreenshotAppStateWithCallbacks(
"C:"+File.separator+"Tmp"+File.separator,
"test");
ssAppState.setIsNumbered(false);
stateManager.attach(ssAppState);
}
@Override
public void simpleUpdate(float tpf) {
if( puzzlesToWrite.isEmpty() ) {
stop(true);
return;
}
PuzzleInfo puzzle = puzzlesToWrite.remove(0);
try {
// Add the numbered boxes
for( int x=0; x<puzzle.getPuzzleSize().getX(); x++ ) {
for( int y=0; y<puzzle.getPuzzleSize().getY(); y++ ) {
for( int z=0; z<puzzle.getPuzzleSize().getZ(); z++ ) {
Cell cell = get the cell for x,y,z;
Node box = createNumberedBox(puzzle.getWorkbook(),x,y,z,LABEL_FONT,cell);
box.setLocalTranslation(x*20, -y*20, -z*20);
rootNode.attachChild(box);
}
}
}
// Add a floor
// Add the axes
// Set the camera location and rotation
// Take a screenshot
ssAppState.setFileName(puzzle.getFileName());
ssAppState.setWriteImageFileCallback(new CallbackToWritePuzzlePdf(this,puzzle));
ssAppState.takeScreenshot();
}
/** Create a numbered box at a given position */
private Node createNumberedBox(Workbook workbook, int x, int y, int z, BitmapFont font, Cell cell) {
// Create a node to hold the box
Node node = new Node("Box");
// Add the background
Mesh m = new Box(10, 10, 10);
Geometry geom = new Geometry("Box", m);
Material mat = new Material(assetManager,"Common/MatDefs/Misc/Unshaded.j3md");
ColorRGBA color = ColorRGBA.White;
mat.setColor("Color", color);
geom.setMaterial(mat);
node.attachChild(geom);
// Add the outline
m = new WireBox(10, 10, 10);
geom = new Geometry("WireBox", m);
mat = new Material(assetManager,"Common/MatDefs/Misc/Unshaded.j3md");
mat.getAdditionalRenderState().setLineWidth(2);
color = ColorRGBA.Black;
mat.setColor("Color", color);
geom.setMaterial(mat);
node.attachChild(geom);
// Add the labels
// Return the node
return node;
}
public void reset() {
ssAppState.setWriteImageFileCallback(null);
rootNode.detachAllChildren();
}
public static void main(String[] args)
throws Exception {
// Create a generator
// Create some puzzles
for( int i=0; i<50; i++)
// Create a solvable grid
generator.createSolvableGrid(new Vector3f(5,5,5));
// Run the JME app to create the puzzle images
AppSettings appSettings = new AppSettings(true);
appSettings.setHeight(CUBE_IMAGE_SIZE);
appSettings.setWidth(CUBE_IMAGE_SIZE);
generator.setSettings(appSettings);
generator.start(JmeContext.Type.OffscreenSurface);
}
}
public class CallbackToWritePuzzlePdf implements Runnable {
CubePuzzleGenerator generator;
PuzzleInfo puzzle;
// Constructor
@Override
public void run() {
// Right now, my code only prints a line to the log, nothing else
// Clear the generator
generator.reset();
}
}
The PuzzleInfo is just a container object to hold information on the puzzle, like size and the workbook of its contents.
I am not doing anything which cares about FPS. The render is using an Offscreen Surface and there is no UI. As a test, I added a one second delay at the start of my simpleUpdate() method and that did not change the behavior. Based on that, I don’t think frame rate is a factor.