IDE 1.6.3 Java crash on 64-bit Linux in both OpenJDK and Oracle Java

I'm seeing either a hang and/or a crash when just adding a syntax error to a minimal sketch and clicking the check button. When it hangs, it hangs inside the "Save sketch folder as ..." which is blank.

Was IDE 1.6.3 tested on Ubuntu 15.04 or is it too early?

Steps to reproduce:

Using latest stable Ubuntu release 15.04 on a 64-bit laptop:

wastenot@dell1:~/arduino-1.6.3$ cat /etc/issue
Ubuntu 15.04 \n \l

Install Java using instructions at How To Install Java on Ubuntu 12.04 with Apt-Get | DigitalOcean

Java version:

$ wastenot@dell1:~$ which java
/usr/bin/java
wastenot@dell1:~$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

Download arduino 1.6.3 and extract it. Then run it:

wastenot@dell1:~$ cd ./arduino-1.6.3/
wastenot@dell1:~/arduino-1.6.3$ ./arduino
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar

Insert an #error pragma to cause an error to occur:

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
#error an error here
}

Sometimes it crashes right away before the "Save your sketch" pops up. When it does crash it consistently crashes like this:

wastenot@dell1:~/arduino-1.6.3$ ./arduino
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f9d7bdfcfdd, pid=10530, tid=140314247022336
#
# JRE version: OpenJDK Runtime Environment (7.0_79-b14) (build 1.7.0_79-b14)
# Java VM: OpenJDK 64-Bit Server VM (24.79-b02 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea 2.5.5
# Distribution: Ubuntu Vivid Vervet (development branch), package 7u79-2.5.5-0ubuntu1
# Problematic frame:
# C  [libjavagtk.so+0x8fdd]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/wastenot/arduino-1.6.3/hs_err_pid10530.log
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
#   http://icedtea.classpath.org/bugzilla
#
./arduino: line 29: 10530 Aborted                 (core dumped) java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel $SPLASH processing.app.Base --curdir $CURDIR "$@"

Thinking this might be due to the OpenJDK, I downloaded jre-8u45-linux-x64.tar.gz from https://java.com/en/download/linux_manual.jsp?locale=en and extracted it.

Then I set the PATH to point to the extracted oracle jre bin directory:

wastenot@dell1:~/arduino-1.6.3$ export PATH=$HOME/Downloads/jre1.8.0_45/bin:$PATH
wastenot@dell1:~/arduino-1.6.3$ which java
/home/wastenot/Downloads/jre1.8.0_45/bin/java
wastenot@dell1:~/arduino-1.6.3$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

And retried the test. Again the crash looks similar:

wastenot@dell1:~/arduino-1.6.3$ ./arduino
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 











Sketch uses 450 bytes (1%) of program storage space. Maximum is 32,256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2,039 bytes for local variables. Maximum is 2,048 bytes.
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f43cd3b7c84, pid=13373, tid=139927563380480
#
# JRE version: Java(TM) SE Runtime Environment (8.0_45-b14) (build 1.8.0_45-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libpthread.so.0+0x9c84]  pthread_mutex_lock+0x4
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/wastenot/arduino-1.6.3/hs_err_pid13373.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
./arduino: line 29: 13373 Aborted                 (core dumped) java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel $SPLASH processing.app.Base --curdir $CURDIR "$@"
wastenot@dell1:~/arduino-1.6.3$

I found a solution by editing the arduino shell script.

If you want to test it, open a command terminal, navigate to the arduino folder where the arduno shell script is, then enter this.

export JAVA_TOOL_OPTIONS=""
./arduino

The IDE should work. When you exit the terminal, the JAVA_TOOL_OPTIONS environment variable returns to its former assignment, so the best option is to edit the shell script as in the link above.

edit: This applies to all IDE versions run on Ubuntu 15.04.

Hi,

Thanks you very much, I edited the arduino file to add export JAVA_TOOL_OPTIONS="" at the beginning and it works !

on ubuntu 15.04

You can put it anywhere in that file as long as it is before the IDE code starts.

Please let me know if there are any adverse reactions by any other applications running at the same time. I haven't found any. It appears that environment variable change only affects that one terminal. Other command terminals show the JAVA_TOOL_OPTIONS is still set to the default value. You can check by opening a terminal and entering this:

echo $JAVA_TOOL_OPTIONS