The source file that's at the top of the Java stack is:
org/eclipse/swt/widgets/MenuItem.java
The offending method is
public void setText(String string)
After a bunch of Java code, the call that fails is:
int /*long*/ oldPtr = OS.GTK_ACCEL_LABEL_GET_ACCEL_STRING (label); //THIS ONE
OS.GTK_ACCEL_LABEL_SET_ACCEL_STRING (label, ptr); // We don't reach this line
From code a bit further up it looks like label is a label widget (clearly, heh).
This macro is defined in the C files that interface with GTK, under a section "Field accesors":
Looks like what it does is fetch the accel_string member of the struct passed as a parameter (a GtkWidget is essentially a struct). To someone who knows a bit more about Java->C interfacing and/or GTK, it might be clear under which circumstances the call GtkAccelLabel->accel_string might segfault. GtkAccelLabel comes from os.c where GTK_1ACCEL_1LABEL_1GET_1ACCEL_1STRING (familiar as it appears early in the stack trace file as the name of the Problematic Frame) is defined as follows:
So, determining the value for which an attempt to access the accel_string segfaults would yield more information.
I'll ask for some advice upstream on the Ubuntu package this stuff should be associated to, for further investigation by people more knowledgeable than me :)
Here's some analysis of source code for swt-gtk:
The source file that's at the top of the Java stack is:
org/eclipse/ swt/widgets/ MenuItem. java
The offending method is
public void setText(String string)
After a bunch of Java code, the call that fails is:
int /*long*/ oldPtr = OS.GTK_ ACCEL_LABEL_ GET_ACCEL_ STRING (label); //THIS ONE ACCEL_LABEL_ SET_ACCEL_ STRING (label, ptr); // We don't reach this line
OS.GTK_
From code a bit further up it looks like label is a label widget (clearly, heh).
This macro is defined in the C files that interface with GTK, under a section "Field accesors":
#define GTK_ACCEL_ LABEL_GET_ ACCEL_STRING( arg0) (arg0)- >accel_ string
Looks like what it does is fetch the accel_string member of the struct passed as a parameter (a GtkWidget is essentially a struct). To someone who knows a bit more about Java->C interfacing and/or GTK, it might be clear under which circumstances the call GtkAccelLabel- >accel_ string might segfault. GtkAccelLabel comes from os.c where GTK_1ACCEL_ 1LABEL_ 1GET_1ACCEL_ 1STRING (familiar as it appears early in the stack trace file as the name of the Problematic Frame) is defined as follows:
JNIEXPORT jintLong JNICALL OS_NATIVE( GTK_1ACCEL_ 1LABEL_ 1GET_1ACCEL_ 1STRING) NATIVE_ ENTER(env, that, GTK_1ACCEL_ 1LABEL_ 1GET_1ACCEL_ 1STRING_ FUNC); GTK_ACCEL_ LABEL_GET_ ACCEL_STRING( (GtkAccelLabel *)arg0); NATIVE_ EXIT(env, that, GTK_1ACCEL_ 1LABEL_ 1GET_1ACCEL_ 1STRING_ FUNC);
(JNIEnv *env, jclass that, jintLong arg0)
{
jintLong rc = 0;
OS_
rc = (jintLong)
OS_
return rc;
}
So, determining the value for which an attempt to access the accel_string segfaults would yield more information.
I'll ask for some advice upstream on the Ubuntu package this stuff should be associated to, for further investigation by people more knowledgeable than me :)
--- wiki.ubuntu. com/BugSquad
Ubuntu Bug Squad volunteer triager
http://