After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 328609 - segfault in TreeSelection.forEachSelected()
segfault in TreeSelection.forEachSelected()
Status: RESOLVED FIXED
Product: java-gnome
Classification: Bindings
Component: GTK
mainline
Other All
: Normal critical
: ---
Assigned To: Remy Suen
java-gnome bindings maintainers
Depends on:
Blocks:
 
 
Reported: 2006-01-25 16:43 UTC by Lars Weber
Modified: 2006-03-19 12:57 UTC
See Also:
GNOME target: ---
GNOME version: 2.11/2.12


Attachments
Patch to prevent the segfault. (1.30 KB, patch)
2006-03-19 11:31 UTC, Remy Suen
none Details | Review

Description Lars Weber 2006-01-25 16:43:07 UTC
Steps to reproduce:
When I run forEachSelected() on a TreeSelection inside a TreeSelectionListener I
get a reproducable segfault as soon as I select (by Ctrl-Clicking) a second row.

Stack trace:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  SIGSEGV (0xb) at pc=0xb0e92177, pid=9996, tid=3084662464
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_05-b05 mixed mode, sharing)
# Problematic frame:
# C  [libglibjni-0.2.so+0x1177]  getHandleFromPointer+0x47
#

---------------  T H R E A D  ---------------

Current thread (0x0805c528):  JavaThread "main" [_thread_in_native, id=9996]

siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00000070

Registers:
EAX=0x00000000, EBX=0xb0e93104, ECX=0x084976e2, EDX=0x0853c140
ESP=0xbff2dbd4, EBP=0xbff2dbfc, ESI=0x08422e50, EDI=0x0853c000
EIP=0xb0e92177, CR2=0x00000070, EFLAGS=0x00210206

Top of Stack: (sp=0xbff2dbd4)
0xbff2dbd4:   0853c000 08422e50 084976e2 084976e2
0xbff2dbe4:   0853c008 0853c150 00000004 b1532968
0xbff2dbf4:   0853c048 0853c130 bff2dc2c b14f5b5c
0xbff2dc04:   0853c000 0853c130 bff2dc3c b14f5a5e
0xbff2dc14:   0848e958 0853c130 b7efd280 b1532968
0xbff2dc24:   0853c1a8 0853c000 bff2dc6c b1526960
0xbff2dc34:   0853c000 0853c140 084899d8 b13636c8
0xbff2dc44:   b1363497 0848e958 bff2dc6c b1364134

Instructions: (pc=0xb0e92177)
0xb0e92167:   85 c0 74 71 50 8b 07 8b 8b 90 00 00 00 51 56 57
0xb0e92177:   ff 50 70 89 c6 8b 07 8b 55 0c 52 8b 8b 88 00 00

Stack: [0xbfd32000,0xbff32000),  sp=0xbff2dbd4,  free space=2030k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libglibjni-0.2.so+0x1177]  getHandleFromPointer+0x47
C  [libgtkjni-2.8.so+0x72b5c]  getGBoxedHandle+0x10c
C  [libgtkjni-2.8.so+0xa3960]  forEachFunc+0x50
C  [libgtk-x11-2.0.so.0+0x1d55f5]  gtk_tree_selection_selected_foreach+0x205
C  [libgtkjni-2.8.so+0xa3a56]  Java_org_gnu_gtk_TreeSelection_startForEach+0x86
j 
org.gnu.gtk.TreeSelection.startForEach(Lorg/gnu/glib/Handle;Ljava/lang/Object;)V+0
j  org.gnu.gtk.TreeSelection.forEachSelected(Lorg/gnu/gtk/TreeSelectionForEach;)V+10
j 
net.digiterror.gtk.TreeSelectionForEachSegfault$2.selectionChangedEvent(Lorg/gnu/gtk/event/TreeSelectionEvent;)V+15
j 
org.gnu.gtk.TreeSelection.fireSelectionEvent(Lorg/gnu/gtk/event/TreeSelectionEvent;)V+39
j  org.gnu.gtk.TreeSelection.handleChanged()V+9
v  ~StubRoutines::call_stub
V  [libjvm.so+0x16cb6c]
V  [libjvm.so+0x25f688]
V  [libjvm.so+0x16c99f]
V  [libjvm.so+0x18ffc3]
V  [libjvm.so+0x17bcd3]
C  [libgtkjni-2.8.so+0x80585]
C  [libgobject-2.0.so.0+0x93a8]  g_closure_invoke+0x11e
C  [libgobject-2.0.so.0+0x17b13]
C  [libgobject-2.0.so.0+0x19150]  g_signal_emit_valist+0x6ab
C  [libgobject-2.0.so.0+0x194c3]  g_signal_emit+0x29
C  [libgtk-x11-2.0.so.0+0x1d6288] 
_gtk_tree_selection_internal_select_node+0x8cC  [libgtk-x11-2.0.so.0+0x1e9c31]
C  [libgtk-x11-2.0.so.0+0x1f0e28]
C  [libgtk-x11-2.0.so.0+0x12002c]  _gtk_marshal_BOOLEAN__BOXED+0x58
C  [libgobject-2.0.so.0+0x8d75]
C  [libgobject-2.0.so.0+0x93a8]  g_closure_invoke+0x11e
C  [libgobject-2.0.so.0+0x17c9f]
C  [libgobject-2.0.so.0+0x18ec3]  g_signal_emit_valist+0x41e
C  [libgobject-2.0.so.0+0x194c3]  g_signal_emit+0x29
C  [libgtk-x11-2.0.so.0+0x20216f]
C  [libgtk-x11-2.0.so.0+0x11e767]  gtk_propagate_event+0xc1
C  [libgtk-x11-2.0.so.0+0x11ebc8]  gtk_main_do_event+0x34d
C  [libgdk-x11-2.0.so.0+0x3fb2d]
C  [libglib-2.0.so.0+0x244ee]  g_main_context_dispatch+0x1dc
C  [libglib-2.0.so.0+0x274f6]
C  [libglib-2.0.so.0+0x277e3]  g_main_loop_run+0x1a1
C  [libgtk-x11-2.0.so.0+0x11de65]  gtk_main+0xb4
C  [libgtkjni-2.8.so+0x8f936]  Java_org_gnu_gtk_Gtk_gtk_1main+0x16
j  org.gnu.gtk.Gtk.gtk_main()V+0
j  org.gnu.gtk.Gtk.main()V+6
j  net.digiterror.gtk.Main.main([Ljava/lang/String;)V+10
v  ~StubRoutines::call_stub
V  [libjvm.so+0x16cb6c]
V  [libjvm.so+0x25f688]
V  [libjvm.so+0x16c99f]
V  [libjvm.so+0x18fd12]
V  [libjvm.so+0x1844a7]
C  [java+0x17fe]
C  [libc.so.6+0x14ea2]  __libc_start_main+0xd2

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j 
org.gnu.gtk.TreeSelection.startForEach(Lorg/gnu/glib/Handle;Ljava/lang/Object;)V+0
j  org.gnu.gtk.TreeSelection.forEachSelected(Lorg/gnu/gtk/TreeSelectionForEach;)V+10
j 
net.digiterror.gtk.TreeSelectionForEachSegfault$2.selectionChangedEvent(Lorg/gnu/gtk/event/TreeSelectionEvent;)V+15
j 
org.gnu.gtk.TreeSelection.fireSelectionEvent(Lorg/gnu/gtk/event/TreeSelectionEvent;)V+39
j  org.gnu.gtk.TreeSelection.handleChanged()V+9
v  ~StubRoutines::call_stub
j  org.gnu.gtk.Gtk.gtk_main()V+0
j  org.gnu.gtk.Gtk.main()V+6
j  net.digiterror.gtk.Main.main([Ljava/lang/String;)V+10
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x080a3bd0 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=10007]
 0x080a2680 JavaThread "CompilerThread0" daemon [_thread_blocked, id=10006]
  0x080a17d0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=10005]
  0x0809ab40 JavaThread "Finalizer" daemon [_thread_blocked, id=10004]
  0x08099e40 JavaThread "Reference Handler" daemon [_thread_blocked, id=10003]
=>0x0805c528 JavaThread "main" [_thread_in_native, id=9996]

Other Threads:
  0x08097348 VMThread [id=10002]
  0x080a5060 WatcherThread [id=10008]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 576K, used 477K [0x88a30000, 0x88ad0000, 0x88f10000)
 eden space 512K,  92% used [0x88a30000, 0x88aa5f70, 0x88ab0000)
  from space 64K,   9% used [0x88ac0000, 0x88ac1720, 0x88ad0000)
  to   space 64K,   0% used [0x88ab0000, 0x88ab0000, 0x88ac0000)
 tenured generation   total 1408K, used 198K [0x88f10000, 0x89070000, 0x8ca30000)
   the space 1408K,  14% used [0x88f10000, 0x88f41be0, 0x88f41c00, 0x89070000)
 compacting perm gen  total 8192K, used 565K [0x8ca30000, 0x8d230000, 0x90a30000)
   the space 8192K,   6% used [0x8ca30000, 0x8cabd418, 0x8cabd600, 0x8d230000)
    ro space 8192K,  68% used [0x90a30000, 0x90fab5e8, 0x90fab600, 0x91230000)
    rw space 12288K,  47% used [0x91230000, 0x917e9dc0, 0x917e9e00, 0x91e30000)

Dynamic libraries:
08048000-08056000 r-xp 00000000 03:01 244155     /usr/lib/j2sdk1.5-sun/bin/java
08056000-08058000 rwxp 0000e000 03:01 244155     /usr/lib/j2sdk1.5-sun/bin/java
08058000-08557000 rwxp 08058000 00:00 0          [heap]
88a30000-88ad0000 rwxp 88a30000 00:00 0
88ad0000-88f10000 rwxp 88ad0000 00:00 0
88f10000-89070000 rwxp 88f10000 00:00 0
89070000-8ca30000 rwxp 89070000 00:00 0
8ca30000-8d230000 rwxp 8ca30000 00:00 0
8d230000-90a30000 rwxp 8d230000 00:00 0
90a30000-90fac000 r-xs 00001000 03:01 227391    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/client/classes.jsa
90fac000-91230000 rwxp 90fac000 00:00 0
91230000-917ea000 rwxp 0057d000 03:01 227391    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/client/classes.jsa
917ea000-91e30000 rwxp 917ea000 00:00 0
91e30000-91eff000 rwxp 00b37000 03:01 227391    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/client/classes.jsa
91eff000-92230000 rwxp 91eff000 00:00 0
92230000-92234000 r-xs 00c06000 03:01 227391    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/client/classes.jsa
92234000-92630000 rwxp 92234000 00:00 0
b0d43000-b0d54000 r-xp 00000000 03:01 423910    
/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf
b0d54000-b0d56000 r-xp 00000000 03:01 422308    
/usr/lib/pango/1.4.0/modules/pango-basic-fc.so
b0d56000-b0d57000 rwxp 00001000 03:01 422308    
/usr/lib/pango/1.4.0/modules/pango-basic-fc.so
b0d57000-b0d58000 r-xp 00000000 03:01 569334    
/usr/share/locale-langpack/en_GB/LC_MESSAGES/libc.mo
b0d58000-b0d77000 r-xp 00000000 03:01 550978    
/usr/share/locale-langpack/de/LC_MESSAGES/libc.mo
b0d77000-b0d89000 r-xp 00000000 03:01 437598    
/usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so
b0d89000-b0d8a000 rwxp 00012000 03:01 437598    
/usr/lib/gtk-2.0/2.4.0/engines/libclearlooks.so
b0d8a000-b0da6000 r-xp 00000000 03:01 386483    
/usr/share/locale/de/LC_MESSAGES/gtk20-properties.mo
b0da6000-b0dc9000 r-xp 00000000 03:01 379440     /usr/lib/libpng12.so.0.1.2.8
b0dc9000-b0dca000 rwxp 00023000 03:01 379440     /usr/lib/libpng12.so.0.1.2.8
b0dca000-b0dcd000 r-xp 00000000 03:01 379399     /usr/lib/libXdmcp.so.6.0.0
b0dcd000-b0dce000 rwxp 00002000 03:01 379399     /usr/lib/libXdmcp.so.6.0.0
b0dce000-b0dd0000 r-xp 00000000 03:01 379397     /usr/lib/libXau.so.6.0.0
b0dd0000-b0dd1000 rwxp 00001000 03:01 379397     /usr/lib/libXau.so.6.0.0
b0dd1000-b0ded000 r-xp 00000000 03:01 378538     /usr/lib/libexpat.so.1.0.0
b0ded000-b0df0000 rwxp 0001c000 03:01 378538     /usr/lib/libexpat.so.1.0.0
b0df0000-b0e03000 r-xp 00000000 03:01 378503     /usr/lib/libz.so.1.2.3
b0e03000-b0e04000 rwxp 00012000 03:01 378503     /usr/lib/libz.so.1.2.3
b0e04000-b0e67000 r-xp 00000000 03:01 378546     /usr/lib/libfreetype.so.6.3.5
b0e67000-b0e6e000 rwxp 00063000 03:01 378546     /usr/lib/libfreetype.so.6.3.5
b0e6e000-b0e90000 r-xp 00000000 03:01 379474    
/usr/lib/libpangoft2-1.0.so.0.1001.0
b0e90000-b0e91000 rwxp 00022000 03:01 379474    
/usr/lib/libpangoft2-1.0.so.0.1001.0
b0e91000-b0e93000 r-xp 00000000 03:01 682091    
/usr/local/stow/glib-java/lib/libglibjni-0.2.so
b0e93000-b0e94000 rwxp 00002000 03:01 682091    
/usr/local/stow/glib-java/lib/libglibjni-0.2.so
b0e94000-b0ed8000 r-xp 00000000 03:01 379685     /usr/lib/libcairo.so.2.2.3
b0ed8000-b0eda000 rwxp 00044000 03:01 379685     /usr/lib/libcairo.so.2.2.3
b0eda000-b0f56000 r-xp 00000000 03:01 372625    
/usr/lib/libglib-2.0.so.0.800.3b0f56000-b0f5b000 rwxp 0007c000 03:01 372625    
/usr/lib/libglib-2.0.so.0.800.3b0f5b000-b0f5d000 r-xp 00000000 03:01 372629    
/usr/lib/libgmodule-2.0.so.0.800.3
b0f5d000-b0f5e000 rwxp 00002000 03:01 372629     /usr/lib/libgmodule-2.0.so.0.800.3
b0f5e000-b0f91000 r-xp 00000000 03:01 372627     /usr/lib/libgobject-2.0.so.0.800.3
b0f91000-b0f95000 rwxp 00033000 03:01 372627     /usr/lib/libgobject-2.0.so.0.800.3
b0f95000-b1052000 r-xp 00000000 03:01 379407     /usr/lib/libX11.so.6.2.0
b1052000-b1055000 rwxp 000bc000 03:01 379407     /usr/lib/libX11.so.6.2.0
b1055000-b105c000 r-xp 00000000 03:01 379432     /usr/lib/libXrender.so.1.3.0
b105c000-b105d000 rwxp 00006000 03:01 379432     /usr/lib/libXrender.so.1.3.0
b105d000-b108f000 r-xp 00000000 03:01 379469     /usr/lib/libpango-1.0.so.0.1001.0
b108f000-b1092000 rwxp 00032000 03:01 379469     /usr/lib/libpango-1.0.so.0.1001.0
b1092000-b1095000 r-xp 00000000 03:01 379479     /usr/lib/libXfixes.so.3.0.0
b1095000-b1096000 rwxp 00003000 03:01 379479     /usr/lib/libXfixes.so.3.0.0
b1096000-b109e000 r-xp 00000000 03:01 379483     /usr/lib/libXcursor.so.1.0.2
b109e000-b109f000 rwxp 00007000 03:01 379483     /usr/lib/libXcursor.so.1.0.2
b109f000-b10ab000 r-xp 00000000 03:01 379516     /usr/lib/libXext.so.6.4.1
b10ab000-b10ac000 rwxp 0000c000 03:01 379516     /usr/lib/libXext.so.6.4.1
b10ac000-b10ae000 r-xp 00000000 03:01 379520     /usr/lib/libXrandr.so.2.0.1
b10ae000-b10af000 rwxp 00002000 03:01 379520     /usr/lib/libXrandr.so.2.0.1
b10af000-b10b6000 r-xp 00000000 03:01 379496     /usr/lib/libXi.so.6.0.0
b10b6000-b10b7000 rwxp 00006000 03:01 379496     /usr/lib/libXi.so.6.0.0
b10b7000-b10df000 r-xp 00000000 03:01 376741    
/usr/lib/libfontconfig.so.1.0.4b10df000-b10e4000 rwxp 00027000 03:01 376741    
/usr/lib/libfontconfig.so.1.0.4b10e4000-b10e5000 rwxp b10e4000 00:00 0
b10e5000-b10ea000 r-xp 00000000 03:01 379477    
/usr/lib/libpangocairo-1.0.so.0.1001.0
b10ea000-b10eb000 rwxp 00005000 03:01 379477    
/usr/lib/libpangocairo-1.0.so.0.1001.0
b10eb000-b10ff000 r-xp 00000000 03:01 379522    
/usr/lib/libgdk_pixbuf-2.0.so.0.800.6
b10ff000-b1101000 rwxp 00013000 03:01 379522    
/usr/lib/libgdk_pixbuf-2.0.so.0.800.6
b1101000-b1119000 r-xp 00000000 03:01 372640    
/usr/lib/libatk-1.0.so.0.1010.3b1119000-b111c000 rwxp 00018000 03:01 372640    
/usr/lib/libatk-1.0.so.0.1010.3b111c000-b1192000 r-xp 00000000 03:01 379523    
/usr/lib/libgdk-x11-2.0.so.0.800.6
b1192000-b1199000 rwxp 00076000 03:01 379523     /usr/lib/libgdk-x11-2.0.so.0.800.6
b1199000-b1441000 r-xp 00000000 03:01 379524     /usr/lib/libgtk-x11-2.0.so.0.800.6
b1441000-b146a000 rwxp 002a7000 03:01 379524     /usr/lib/libgtk-x11-2.0.so.0.800.6
b146a000-b146d000 rwxp b146a000 00:00 0
b146d000-b1470000 r-xp 00000000 03:01 372631     /usr/lib/libgthread-2.0.so.0.800.3
b1470000-b1471000 rwxp 00002000 03:01 372631     /usr/lib/libgthread-2.0.so.0.800.3
b1474000-b1475000 r-xp 00000000 03:01 375419     /usr/lib/gconv/ISO8859-1.so
b1475000-b1476000 rwxp 00001000 03:01 375419     /usr/lib/gconv/ISO8859-1.so
b1476000-b1481000 r-xp 00000000 03:01 379541    
/usr/share/locale/de/LC_MESSAGES/gtk20.mo
b1481000-b1482000 r-xp 00000000 03:01 734386    
/usr/lib/X11/locale/common/xlcUTF8Load.so.2.0.0
b1482000-b1483000 rwxp 00000000 03:01 734386    
/usr/lib/X11/locale/common/xlcUTF8Load.so.2.0.0
b1483000-b1532000 r-xp 00000000 03:01 243665    
/usr/local/stow/libgtk-java/lib/libgtkjni-2.8.so
b1532000-b1536000 rwxp 000ae000 03:01 243665    
/usr/local/stow/libgtk-java/lib/libgtkjni-2.8.so
b1536000-b15da000 r-xs 00000000 fd:03 3254276   
/crypto/home/lars/workspace/libgtk-java/gtk2.8.jar
b15da000-b15e1000 r-xs 00000000 fd:03 2567527   
/crypto/home/lars/workspace/libglade-java/glade2.12.jar
b15e1000-b15e2000 r-xs 00000000 fd:03 3058040   
/crypto/home/lars/workspace/jg-common/glib0.2.jar
b15e2000-b15ea000 r-xs 00000000 fd:03 3384911   
/crypto/home/lars/workspace/cairo-java/cairo1.0.jar
b15ea000-b16a5000 r-xs 00000000 fd:03 409116    
/crypto/home/lars/workspace/jena2/lib/arq.jar
b16a5000-b174f000 r-xs 00000000 fd:03 3205308   
/crypto/home/lars/workspace/ng4j/ng4j.jar
b174f000-b177f000 r-xs 00000000 fd:03 409126    
/crypto/home/lars/workspace/jena2/lib/xml-apis.jar
b177f000-b18a5000 r-xs 00000000 fd:03 409125    
/crypto/home/lars/workspace/jena2/lib/xercesImpl.jar
b18a5000-b1904000 r-xs 00000000 fd:03 409124    
/crypto/home/lars/workspace/jena2/lib/wstx-asl-2.8.jar
b1904000-b190b000 r-xs 00000000 fd:03 409123    
/crypto/home/lars/workspace/jena2/lib/stax-api-1.0.jar
b190b000-b1963000 r-xs 00000000 fd:03 409122    
/crypto/home/lars/workspace/jena2/lib/log4j-1.2.12.jar
b1963000-b1981000 r-xs 00000000 fd:03 409121    
/crypto/home/lars/workspace/jena2/lib/junit.jar
b1981000-b1bbd000 r-xs 00000000 fd:03 409174    
/crypto/home/lars/workspace/jena2/lib/jena.jar
b1bbd000-b1bcd000 r-xs 00000000 fd:03 409120    
/crypto/home/lars/workspace/jena2/lib/jakarta-oro-2.0.8.jar
b1bcd000-b1ece000 r-xs 00000000 fd:03 409119    
/crypto/home/lars/workspace/jena2/lib/icu4j_3_4.jar
b1ece000-b1eed000 r-xs 00000000 fd:03 409118    
/crypto/home/lars/workspace/jena2/lib/concurrent.jar
b1eed000-b1ef7000 r-xs 00000000 fd:03 409117    
/crypto/home/lars/workspace/jena2/lib/commons-logging.jar
b1ef7000-b1f62000 r-xs 00000000 fd:03 409114    
/crypto/home/lars/workspace/jena2/lib/antlr-2.7.5.jar
b1f62000-b2026000 r-xs 00000000 03:01 503900    
/usr/lib/j2sdk1.5-sun/jre/lib/ext/localedata.jar
b2026000-b2028000 r-xs 00000000 03:01 503898    
/usr/lib/j2sdk1.5-sun/jre/lib/ext/dnsns.jar
b2028000-b2053000 r-xs 00000000 03:01 398541    
/usr/lib/j2sdk1.5-sun/jre/lib/ext/sunpkcs11.jar
b2053000-b2079000 r-xs 00000000 03:01 326551    
/usr/lib/j2sdk1.5-sun/jre/lib/ext/sunjce_provider.jar
b2079000-b207a000 ---p b2079000 00:00 0
b207a000-b20fa000 rwxp b207a000 00:00 0
b20fa000-b20fd000 ---p b20fa000 00:00 0
b20fd000-b217b000 rwxp b20fd000 00:00 0
b217b000-b217e000 ---p b217b000 00:00 0
b217e000-b21fc000 rwxp b217e000 00:00 0
b21fc000-b21ff000 ---p b21fc000 00:00 0
b21ff000-b227d000 rwxp b21ff000 00:00 0
b227d000-b2404000 r-xp 00000000 03:01 390803     /usr/lib/locale/locale-archive
b2404000-b2407000 ---p b2404000 00:00 0
b2407000-b2485000 rwxp b2407000 00:00 0
b2485000-b2488000 ---p b2485000 00:00 0
b2488000-b2506000 rwxp b2488000 00:00 0
b2506000-b2507000 ---p b2506000 00:00 0
b2507000-b2593000 rwxp b2507000 00:00 0
b2593000-b25af000 rwxp b2593000 00:00 0
b25af000-b25b0000 rwxp b25af000 00:00 0
b25b0000-b25cd000 rwxp b25b0000 00:00 0
b25cd000-b25ce000 rwxp b25cd000 00:00 0
b25ce000-b25cf000 rwxp b25ce000 00:00 0
b25cf000-b25d1000 rwxp b25cf000 00:00 0
b25d1000-b25ed000 rwxp b25d1000 00:00 0
b25ed000-b25f1000 rwxp b25ed000 00:00 0
b25f1000-b260d000 rwxp b25f1000 00:00 0
b260d000-b261b000 rwxp b260d000 00:00 0
b261b000-b2698000 rwxp b261b000 00:00 0
b2698000-b2750000 rwxp b2698000 00:00 0
b2750000-b4698000 rwxp b2750000 00:00 0
b4698000-b4ed3000 r-xs 00000000 03:01 147909    
/usr/lib/j2sdk1.5-sun/jre/lib/charsets.jar
b4ed3000-b4ee7000 r-xs 00000000 03:01 147852    
/usr/lib/j2sdk1.5-sun/jre/lib/jce.jar
b4ee7000-b4f6e000 r-xs 00000000 03:01 147905    
/usr/lib/j2sdk1.5-sun/jre/lib/jsse.jar
b4f6e000-b4fd7000 rwxp b4f6e000 00:00 0
b4fd7000-b75c1000 r-xs 00000000 03:01 147911    
/usr/lib/j2sdk1.5-sun/jre/lib/rt.jar
b75c1000-b75d4000 r-xp 00000000 03:01 179128    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/libzip.so
b75d4000-b75d6000 rwxp 00012000 03:01 179128    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/libzip.so
b75d6000-b75f7000 r-xp 00000000 03:01 179126    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/libjava.so
b75f7000-b75f9000 rwxp 00020000 03:01 179126    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/libjava.so
b75f9000-b7604000 r-xp 00000000 03:01 179125    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/libverify.so
b7604000-b7605000 rwxp 0000b000 03:01 179125    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/libverify.so
b7605000-b760e000 r-xp 00000000 03:01 55525     
/lib/tls/i686/cmov/libnss_files-2.3.5.so
b760e000-b760f000 rwxp 00008000 03:01 55525     
/lib/tls/i686/cmov/libnss_files-2.3.5.so
b760f000-b7617000 r-xp 00000000 03:01 55628     
/lib/tls/i686/cmov/libnss_nis-2.3.5.so
b7617000-b7618000 rwxp 00008000 03:01 55628     
/lib/tls/i686/cmov/libnss_nis-2.3.5.so
b7618000-b762a000 r-xp 00000000 03:01 55521      /lib/tls/i686/cmov/libnsl-2.3.5.so
b762a000-b762b000 rwxp 00012000 03:01 55521      /lib/tls/i686/cmov/libnsl-2.3.5.so
b762b000-b762d000 rwxp b762b000 00:00 0
b762f000-b7631000 r-xp 00000000 03:01 379518     /usr/lib/libXinerama.so.1.0.0
b7631000-b7632000 rwxp 00001000 03:01 379518     /usr/lib/libXinerama.so.1.0.0
b7632000-b7637000 rwxp b7632000 00:00 0
b7637000-b763f000 rwxs 00000000 fd:03 1128578    /crypto/tmp/hsperfdata_lars/9996
b763f000-b7660000 r-xp 00000000 03:01 55519      /lib/tls/i686/cmov/libm-2.3.5.so
b7660000-b7661000 rwxp 00020000 03:01 55519      /lib/tls/i686/cmov/libm-2.3.5.so
b7661000-b7990000 r-xp 00000000 03:01 227389    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/client/libjvm.so
b7990000-b79ad000 rwxp 0032f000 03:01 227389    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/client/libjvm.so
b79ad000-b7dc4000 rwxp b79ad000 00:00 0
b7dc4000-b7eec000 r-xp 00000000 03:01 55516      /lib/tls/i686/cmov/libc-2.3.5.so
b7eec000-b7ef0000 rwxp 00127000 03:01 55516      /lib/tls/i686/cmov/libc-2.3.5.so
b7ef0000-b7ef2000 rwxp b7ef0000 00:00 0
b7ef2000-b7ef4000 r-xp 00000000 03:01 55518      /lib/tls/i686/cmov/libdl-2.3.5.so
b7ef4000-b7ef5000 rwxp 00001000 03:01 55518      /lib/tls/i686/cmov/libdl-2.3.5.so
b7ef5000-b7ef6000 rwxp b7ef5000 00:00 0
b7ef6000-b7f05000 r-xp 00000000 03:01 55631     
/lib/tls/i686/cmov/libpthread-2.3.5.so
b7f05000-b7f06000 rwxp 0000e000 03:01 55631     
/lib/tls/i686/cmov/libpthread-2.3.5.so
b7f06000-b7f08000 rwxp b7f06000 00:00 0
b7f08000-b7f10000 r-xp 00000000 03:01 55523     
/lib/tls/i686/cmov/libnss_compat-2.3.5.so
b7f10000-b7f11000 rwxp 00007000 03:01 55523     
/lib/tls/i686/cmov/libnss_compat-2.3.5.so
b7f11000-b7f17000 r-xp 00000000 03:01 195626    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/native_threads/libhpi.so
b7f17000-b7f18000 rwxp 00006000 03:01 195626    
/usr/lib/j2sdk1.5-sun/jre/lib/i386/native_threads/libhpi.so
b7f18000-b7f19000 rwxp b7f18000 00:00 0
b7f19000-b7f1a000 r-xp b7f19000 00:00 0
b7f1a000-b7f1d000 rwxp b7f1a000 00:00 0
b7f1d000-b7f32000 r-xp 00000000 03:01 703034     /lib/ld-2.3.5.so
b7f32000-b7f33000 rwxp 00014000 03:01 703034     /lib/ld-2.3.5.so
bfd32000-bfd35000 ---p bfd32000 00:00 0
bfd35000-bff32000 rwxp bfd35000 00:00 0          [stack]
ffffe000-fffff000 ---p 00000000 00:00 0          [vdso]

VM Arguments:
jvm_args: -Djava.library.path=/usr/local/lib
java_command: net.digiterror.gtk.Main

Environment Variables:
JAVA_HOME=/usr/lib/jvm/java-gcj
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games
USERNAME=lars
LD_LIBRARY_PATH=/usr/lib/j2sdk1.5-sun/jre/lib/i386/client:/usr/lib/j2sdk1.5-sun/jre/lib/i386:/usr/lib/j2sdk1.5-sun/jre/../lib/i386:/usr/lib/mozilla
SHELL=/bin/bash
DISPLAY=:0.0

Signal Handlers:
SIGSEGV: [libjvm.so+0x2ebc30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGBUS: [libjvm.so+0x2ebc30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGFPE: [libjvm.so+0x25e6c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGPIPE: [libjvm.so+0x25e6c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGILL: [libjvm.so+0x25e6c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGUSR2: [libjvm.so+0x260a10], sa_mask[0]=0x00010000, sa_flags=0x10000004
SIGHUP: [libjvm.so+0x260440], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGINT: [libjvm.so+0x260440], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGQUIT: [libjvm.so+0x260440], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
SIGTERM: [libjvm.so+0x260440], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004


---------------  S Y S T E M  ---------------

OS:testing/unstable

uname:Linux 2.6.12-10-386 #1 Fri Nov 18 11:51:02 UTC 2005 i686
libc:glibc 2.3.5 NPTL 2.3.5
rlimit: STACK 8192k, CORE 0k, NPROC infinity, NOFILE 1024, AS infinity
load average:0,16 0,32 0,30

CPU:total 1 family 6, cmov, cx8, fxsr, mmx, sse, sse2

Memory: 4k page, physical 515792k(6228k free), swap 1477940k(1459716k free)

vm_info: Java HotSpot(TM) Client VM (1.5.0_05-b05) for linux-x86, built on Aug
26 2005 16:24:31 by java_re with gcc 3.2.1-7a (J2SE release)


Other information:
here's a simple test-case application (you'll have to add a simple main method
with Gtk.init(), new TreeSelectionForEach() and Gtk.main() yourself):

-------8<--------
import org.gnu.gtk.*;

public class TreeSelectionForEachSegfault {		
	public TreeSelectionForEachSegfault() {
		Window window = new Window();
		
		window.addListener(new LifeCycleListener() {
			public void lifeCycleEvent(LifeCycleEvent event) {
			}
			
			public boolean lifeCycleQuery(LifeCycleEvent event) {
				if (event.getType() == LifeCycleEvent.Type.DELETE) {
					Gtk.mainQuit();
				}
				
				return false;
			}
		});
		
		TreeView tree_view = new TreeView();
		
		setupTreeStore(tree_view);
		
		window.add(tree_view);

		window.showAll();
	}
	
	private void setupTreeStore(TreeView tree_view) {
		DataColumnString label_column = new DataColumnString();
		
		TreeStore tree_store = new TreeStore(new DataColumn[] {
				label_column
		});
		
		tree_view.setModel(tree_store);
		
		TreeViewColumn tree_view_column = new TreeViewColumn();
		
		CellRendererText text_renderer = new CellRendererText();
		
		tree_view_column.packStart(text_renderer, true);

		tree_view_column.addAttributeMapping(text_renderer,
CellRendererText.Attribute.TEXT, label_column);
		
		tree_view.appendColumn(tree_view_column);
		
		tree_view.getSelection().setMode(SelectionMode.MULTIPLE);
		
		tree_view.getSelection().addListener(new TreeSelectionListener() {
			public void selectionChangedEvent(TreeSelectionEvent event) {
				((TreeSelection) event.getSource()).forEachSelected(new TreeSelectionForEach() {
					public void forEach(TreeModel tree_model, TreePath tree_path, TreeIter
tree_iter) {
						// ...
					}
				});
			}
		});
				
		TreeIter parent_iter = tree_store.appendRow(null);

		tree_store.setValue(parent_iter, label_column, "Foo");
		
		parent_iter = tree_store.appendRow(null);

		tree_store.setValue(parent_iter, label_column, "Bar");
	}
}
Comment 1 Remy Suen 2006-03-19 11:31:39 UTC
Created attachment 61535 [details] [review]
Patch to prevent the segfault.

This patch should also fix bug 172645.

The cause of this bug is that our fedata struct was freed and then when the two column comes around to try to use it, it is completely null, so all our attempts to extract Handles fails (and crashes as a result since the JNIEnv is null and nothing can be done).

Since the flow of execution goes like:
jni startForEach
calls - gtk+ gtk_tree_selection_selected_foreach
which then calls - static jni forEachFunc (iterating over each treesel)
then execution returns back to startForEach

So the proposed solution of freeing everything _after_ the gtk+ function completes should be correct.
Comment 2 Ismael Juma 2006-03-19 11:38:50 UTC
The patch looks good. 2 comments (both very minor):

1) I am of the opinion that incorrect code should not be commented out, but removed instead.

2) "*env)->DeleteGlobalRef(fedata->env, fedata->obj);" -> Instead of "fedata->env", we can use "env", since they're the same.
Comment 3 Remy Suen 2006-03-19 12:57:46 UTC
Modified patch per comment #2 and applied to CVS head, closing.