[R] R and/or REngine kills Java

Martin Morgan mtmorgan at fhcrc.org
Wed Mar 24 14:31:49 CET 2010


Hi Ralf --

On 03/23/2010 11:53 PM, Ralf B wrote:
> Hi all,
> 
> I am using R and JRI under Windows XP Pro. I am posting this question
> here since the reason might be R related (since I am running an R
> script) but there is also a very good chance that it is JRI only
> (since I am using the JRI interface to activate the script) -- in
> which case I want to apologize for misplacing this message.
> 
> I have a method that instantiates an REngine object every time it is
> called. It runs a script provided by a file name and closes REngine
> afterward. The script works fine, the png file is successfully
> generated and the PNG file is released so that I can delete it if I
> want ( but I don't in that case). For some strange reason, when
> running this code twice I get the following error: upon which the Java
> Virtual machine dies on me.
> 
>  Any explanation would be greatly appreciated!

A bit of a shot in the dark, but it might be related to signal handling

  http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/signals.html

with the solution being use of -Xrs when starting the JVM.

Martin

> 
> Best,
> Ralf
> 
> Here the Java code, the R code, and the Java VM error:
> 
> ++++++++++++++++ START JAVA CODE ++++++++++++++++++
> 
> /** Helper method */
> private static void eval(Rengine r, String s) {
> 	r.eval(s, false);
> }
> 	
> /** Assigns the given java value to the given R variable name */
> private static void assign(Rengine r, String rVariableName, String javaValue) {
> 	r.assign(rVariableName, javaValue);
> }
> 
> public void run() throws Exception {
> 		String filepath = this.path;
> 		
> 		if (filepath != null) {
> 			File rFile = new File(filepath );
> 		    if (rFile.exists()) {	// run R script
> 		    	// start R engine
> 				if (!Rengine.versionCheck()) {
> 					System.err.println("** Version mismatch - Java files don't match
> library version.");
> 					System.exit(1);
> 				}
> 				// creating R engine
> 				Rengine rEngine = new Rengine(null, false, new EmptyCallbacks());
> 				// the engine creates R is a new thread, so we should wait until it's ready
> 				if (!rEngine.waitForR()) {
> 					System.out.println("Cannot load R for " + this.getClass().getName());
> 					return;
> 				}
> 
> 				// executing logic
> 				try {
> 					assign(rEngine, "filename", filepath);
> 					eval(rEngine, "source(filename)");
> 				} catch (Exception e) {
> 					System.out.println(this.getClass().getName() + ": Error in R code: " + e);
> 					e.printStackTrace();
> 					// stopping R engine
> 					System.out.println("Error when running script - rEngine stopped!");
> 					if (rEngine != null){
> 						rEngine.end();
> 					}
> 				}
> 
> 				// stopping R engine
> 				rEngine.end();
> 		    } else {
> 		    	throw new Exception(getClass().getName() + " not run - missing
> R file - location: " + rFile.getAbsolutePath());
> 		    }
> 		}
> 	}
> 
> +++++++++++++++++++++ END JAVA CODE +++++++++++++++++++++++++
> 
> 
> +++++ START  R Code ++++++++
> library(RJDBC)
> 
> # db connection
> driver <- JDBC("com.mysql.jdbc.Driver","lib/mysql-connector-java-5.0.6-bin.jar")
> con <- dbConnect(driver, "jdbc:mysql://localhost/mydb", "xxx", "yyy")
> 
> # list tables
> dbListTables(con)
> 
> # user, task and event information
> result = dbGetQuery(con, "SELECT x,y from mytable;")
> png(file="output.png")
> plot(result$x, result$y)
> dev.off()
> 
> +++++ START  R Code ++++++++
> 
> ERROR:
> 
> #
> # An unexpected error has been detected by Java Runtime Environment:
> #
> #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=...., pid=5400, tid=3204
> #
> # Java VM: Java HotSpot(TM) Client VM (11.2-b01 mixed mode, ....)
> # Problematic frame:
> # C  [R.dll+0x1136fe]
> #
> 
> # An error report file with more information is saved as:
> # ....
> [WARN] 404 - GET /output.png (127.0.0.1) 1402 bytes
>    Request headers
>       Host: localhost:8888
>       User-Agent: ....
>       Accept: image/png,image/*;q=0.8,*/*;q=0.5
>       Accept-Language: en-us,en;q=0.5
>       Accept-Encoding: gzip,deflate
>       Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>       Keep-Alive: 115
>       Connection: keep-alive
>       Referer: http://localhost....
>    Response headers
>       Content-Length: 1402
>       Content-Type: text/html; charset=iso-8859-1
> #
> # If you would like to submit a bug report, please visit:
> #   http://java.sun.com/webapps/bugreport/crash.jsp
> # The crash happened outside the Java Virtual Machine in native code.
> # See problematic frame for where to report the bug.
> #
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


-- 
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793



More information about the R-help mailing list