Java 1.6.0_29 causes KNIME to crash?

Hi there,

since last Thursday, I have Java 1.6.0_29 on my Mac (came with a normal Java update, before I was running 1.6.0_26 as far as I remember).

Since this Java upate my KNIME (2.4.0 as well as 2.4.2) crashes very frequently (about every 3 minutes) when I try to open the configuration dialog of a node (no matter which node, which workflow, which workspace, which KNIME installation). I just get a spinning wheel and nothing happens anymore.

Does anybody know whether this really has something to do with the Java version and what to do in this case?

Antje

Yes it does.

We tested this on 3 macs, 2x Snowleopard and one Lion, after the update of java some dialogs crash Knime.
Unfortunately there is no way to undo this java update. Sounds like this other operating system i know...

The Knime techs have been informed and are pooring over a solution.

 

Yepp, we are trying to reproduce it and see if we can diagnoze it further. Our designated Mac user is currently out of office - so you'll need to wait until next week.

I was told by Ellert that the process just dies (so KNIME disappears) and that there is no log file (hs_err_xyz.log); though according to Antjes comment you get a spinning wheel and nothing happens. Does KNIME stay open (but freezes)? If so, can you extract a call stack from the process ($JDK_HOME/bin/jstack <PID>) and post it? Maybe that helps us to find more information on the net?

Thanks,
  Bernd
 

First, thanks for the confirmation! At least everybody else in my group is now warned to not update the java version :-)

I've saved the call stack as Bernd proposed. I hope it helps to find a solution.

Ciao,

Antje
 

Sorry for not getting this right in the first report: yes i can confirm the beachball. It hangs, it doesnt disapear.
An additional jstack attached.
 

btw, i get errors when attaching a file in this forum.

I can confirm that our shop is also getting this hang when configuring nodes. We are looking at using an alternate JDK because of security holes in the previous OS X JDK.

The same problem occurs in the Column Filter node.

Also the SDK version running under Eclipse Helios has the same problems.

A quick update on the KNIME problems with Java 1.6.0_29:

The last couple of days we've been working on investigating the problem and to fix it or to find a workaround. Updating to the latest preview of openjdk 1.7.0 (http://openjdk.java.net/projects/macosx-port/) led to similar problems and didn't help.

The only possible workaround we know so far is to use the previous JRE (1.6.0_26). As there seems to be no way of reverting a Mac OS Software Update and Apple has removed the download of the previous Java version as well, we are currently working on a KNIME startup script that allows to specify which JRE to use and point it to the JRE 1.6.0_26 folder.

I'll keep you posted and offer the script and a manual on how to obtain the JRE 1.6.0_26 here shortly.

At first: If you did not install "Java for Mac OS X 10.7 Update 1" , you are fine. If you did install it already, this manual shows you how to start KNIME with Java 1.6.0_26.

  1. In your (hopefully existing) backup of your system there is a folder "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk". This folder contains the necessary jdk. Copy it to anywhere  on your hard disk (e.g. into the KNIME installation directory).
  2. Download the attached knime.sh script and extract it into your KNIME installation directory (e.g. /Applications/knime).
  3. Create a soft link named "jre" in your KNIME installation directory linking to the subdirectory "Contents/Home" of your copied JDK by invoking
    ln -s <1.6.0.jdk-DIR>/Contents/Home jre
    in the Terminal and launch KNIME by invoking
    ./knime.sh

Comments to this fix:

First off, it works!

second, pay attention to the following: this problem is also applicable on OSX10.6, so not only the "Java for Mac OS X 10.7 Update 1" was affected, also the "Java for Mac OS X 10.6 Update <something>"

you can execute the shellscript from the terminal, but first it needs to be made executable: chmod +x knime.sh

If you want to execute the shellscript directly, make sure it doesnt open in another application by default. With me xcode was the default application for a .sh file.
You can change this by opening the fileinfo window (command-i)
Then select "Open With" -> "Other" -> in Applications go to "Utilities"
Now change the Enable dropdown from "Recommended Applications" to "All Applications" and check "Always Open With" to on. Then select "Termial.app" and press "Add".

 

Then, to change the icon, do the following:

select the knime executable and open the info window (command-i)
In that window select the icon in the left top corner (it will get a blue edge indicating it is selected) and press command-c
Go to the info window of the shellscript, select the icon and press command-v.

 

The only problem with this i found sofar is that it opens an extra terminal window. A small price to pay for a working Knime.

Thanks for your comments.

One additional remark for node developers using the KNIME SDK: For the development environment you can add an additional JRE in the Eclipse settings (Java -> Installed JRE). Choose Standard VM and point to the path of the copied JDK (<1.6.0.jdk-DIR>/Contents/Home). Afterwards you can choose the newly added JRE in the run configuration for KNIME and KNIME will start with java 1.6.0_26.

Thanks for the script, but I have the problem that I don't have anymore the old Java jdk. I'm trying to get the Java 1.6.0_26 for Mac OSX but without success. How it's possible to get the older jdk?

Has anyone tried using Macports OpenJDK?  It dates back to 2010...

Doesn't seem to work, however, I am not sure if it is OpenJDK's fault, or your script:

$ ln -s /opt/local/share/java/openjdk6 /Applications/knime/jre

$ ls /Applications/knime/jre/bin/java
/Applications/knime/jre/bin/java

$ /Applications/knime/knime.sh
-bash: /Applications/knime/knime.sh: Permission denied
$ sudo /Applications/knime/knime.sh
Password:
sudo: /Applications/knime/knime.sh: command not found

Version info:

$ /Applications/knime/jre/bin/java -version
openjdk version "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b20)
$ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)

Thanks,

-Zach Lym

I didn't try the macports openjdk so far, but to me it looks more like a permission problem on the knime.sh script. Could you please try to do a "ls -l /Applications/knime" and post the result?

I tried

	sudo chown -R -H zachlym:staff /Applications/knime/
sudo chmod -R -H 777 /Applications/knime/

And the script runs, but it only produces one line of output...

	$ sh /Applications/knime/knime.sh
$ /Users/zachlym

ls -l /Applications/knime
rwxrwxrwx@ 1 zachlym staff 0 Oct 21 2009 Icon?
drwxrwxrwx 3 zachlym staff 102 Sep 29 2010 KNIME.app
drwxrwxrwx@ 16 zachlym staff 544 Jan 15 15:16 configuration
lrwxrwxrwx 1 zachlym staff 30 Jan 15 15:06 jre -> /opt/local/share/java/openjdk6
-rwxrwxrwx@ 1 zachlym staff 1063 Dec 28 22:09 knime.command
-rwxrwxrwx@ 1 zachlym staff 1063 Dec 28 22:09 knime.sh
drwxrwxrwx 3 zachlym staff 102 Nov 5 2010 p2
drwxrwxrwx@ 186 zachlym staff 6324 Sep 29 2010 plugins



 

Can you try to invoke

'/Applications/knime/knime.sh'

directly? I don't know which shell 'sh' is invoking on your system.

Could you supply me with a script adapted for the Eclipse_Knime_2.5.1 version (64-Bit Mac Cocoa)?

Cheers

Chris

I of course mean the SDK version

Hi,

for the SDK there is no startup script necessary. A comment below contains instructions on how to configure the SDK to start KNIME with another SDK.

Let me know if you need any additional help with this.

Dominik