Redhawk crashing with Java error - Killed by signal 6, SIGABRT

2.5k Views Asked by At

Centos 6.6

Redhawk 1.10

I can do a series of operations (program the IP of a USRP) in Redhawk that repeatedly cause the program to crash with the following error:

Source: java-1.7.0-openjdk

Problem: Process /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre/bin/java was killed by signal 6 (SIGABRT)

Any idea on how to prevent this?

Also, I'm very new to Redhawk and Linux in general so please ELI5.

2

There are 2 best solutions below

0
On

Per someone way smarter than me on the subject:

This is an issue that has just come up with the release of CentOS6.6 as it uses a newer version of gtk2 than CentOS6.5. Eclipse detects this and erroneously assumes it can use the cairo graphics API which is either not available or not at the expected version. It's actually a bug within the Eclipse Version used by the v1.10 and v1.9 series REDHAWK IDE. Information about the issue can be found on this eclipse forum. Eclipse has since fixed the issue within it's latest code base.

The easiest fix for 1.10 and 1.9 users is to apply the fix mentioned within the forum post. Navigate to the directory which contains your eclipse executable (REDHAWK IDE executable) and there should be a configuration file called "eclipse.ini". Add the following parameter to the list of declared options:

-Dorg.eclipse.swt.internal.gtk.cairoGraphics=false

This will disable the use of cairo graphics, which were not being used in the first place.

0
On

I found that this error happened because I was doing a remote debug on a process that wanted to spawn two separate JVM instances. One that executed a test runner and one that executed an actual test. If you ran the program with with:

export _JAVA_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7002"

The instances both try to use port 7002 and the signal abort appears because 7002 is in use for the second instance.

Instead, you can use:

export _JAVA_OPTIONS="agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7002"

By setting suspend to yes, you prevent the instances from running simultaneously. Though you have to remember to connect the remote debugger twice to get the separate instances to execute.