[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