To provide some clarity, we can see from the stack from the JVM that we're in com.ni.vision.NIVision._Priv_ReadJPEGString in wpi's lib when the jvm crashes...
Code:
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 361 com.ni.vision.NIVision._Priv_ReadJPEGString_C(JJI)V (0 bytes) @ 0xb4815038 [0xb4814fe0+0x58]
J 357 C1 edu.wpi.first.wpilibj.vision.AxisCamera.getImage(Lcom/ni/vision/NIVision$Image;)Z (47 bytes) @ 0xb4813b88 [0xb48138f0+0x298]
J 326 C1 org.usfirst.frc3932.Robot.runCamera()V (42 bytes) @ 0xb480bac8 [0xb480ba90+0x38]
J 324 C1 org.usfirst.frc3932.Robot.teleopPeriodic()V (15 bytes) @ 0xb480b3b0 [0xb480b180+0x230]
j edu.wpi.first.wpilibj.IterativeRobot.startCompetition()V+240
j edu.wpi.first.wpilibj.RobotBase.main([Ljava/lang/String;)V+322
...and our runCamera method from that stack is...
Code:
public static AxisCamera currentCamera;
.
.
.
private void runCamera(){
try {
currentCamera.getImage(image);
CameraServer.getInstance().setImage(image);
} catch (Exception e) {
System.err.println("Failed to get image from camera");
System.err.println(e.getStackTrace());
}
}
.
.
.
...so from our Robot.java class the last touch point for us is currentCamera.getImage in this case.