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 331052 - SIGSEGV, unmark_for_gc (obj=0x1142a80, ref_table=Variable "ref_table" is not available.) at ../../../libjava/jni.cc:197
SIGSEGV, unmark_for_gc (obj=0x1142a80, ref_table=Variable "ref_table" is not ...
Status: RESOLVED FIXED
Product: java-gnome
Classification: Bindings
Component: GTK
mainline
Other All
: Normal critical
: ---
Assigned To: java-gnome bindings maintainers
java-gnome bindings maintainers
: 334039 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-02-13 20:56 UTC by Andrew Cagney
Modified: 2006-03-10 16:26 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Andrew Cagney 2006-02-13 20:56:46 UTC
Steps to reproduce:
1. run frysk
2. wait


Stack trace:
Leaving frysk doing absolutly nothing:

Program received signal SIGSEGV, Segmentation fault.
unmark_for_gc (obj=0x1142a80, ref_table=Variable "ref_table" is not available.
) at ../../../libjava/jni.cc:197
197       jint val = refcount->intValue () - 1;
Current language:  auto; currently c++
(gdb) list
192       JvSynchronize sync (ref_table);
193
194       using namespace java::lang;
195       Integer *refcount = (Integer *) ref_table->get (obj);
196       JvAssert (refcount);
197       jint val = refcount->intValue () - 1;
198       JvAssert (val >= 0);
199       if (val == 0)
200         ref_table->remove (obj);
201       else
(gdb) bt
  • #0 unmark_for_gc
    at ../../../libjava/jni.cc line 197
  • #1 cleanup
    from /usr/lib/frysk/libgtkjni-2.8.so
  • #2 Java_org_gnu_glib_Timer_stop_1timer
    from /usr/lib/frysk/libgtkjni-2.8.so
  • #3 org::gnu::glib::Timer::stop_timer
    from /usr/lib/frysk/libgtkjava-2.8.so
  • #4 org::gnu::glib::Timer::stop
    from /usr/lib/frysk/libgtkjava-2.8.so
  • #5 org::gnu::glib::Timer::finalize
    from /usr/lib/frysk/libgtkjava-2.8.so
  • #6 _Jv_FinalizeObject
    at ../../../libjava/java/lang/natObject.cc line 121
  • #7 call_finalizer
    at ../../../libjava/boehm.cc line 518
  • #8 GC_invoke_finalizers
    at ../../../boehm-gc/finalize.c line 787
  • #9 _Jv_RunFinalizers
    at ../../../libjava/boehm.cc line 531
  • #10 gnu::gcj::runtime::FinalizerThread::run
    at ../../../libjava/gnu/gcj/runtime/natFinalizerThread.cc line 60
  • #11 _Jv_ThreadRun
    at ../../../libjava/java/lang/natThread.cc line 296
  • #12 really_start
    at ../../../libjava/posix-threads.cc line 430
  • #13 GC_start_routine
    at ../../../boehm-gc/pthread_support.c line 1185
  • #14 start_thread
    at pthread_create.c line 261
  • #15 ??
    from /lib/libc.so.6
  • #0 __kernel_vsyscall
  • #1 *__GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 67
  • #2 *__GI_abort
    at ../sysdeps/generic/abort.c line 88
  • #3 _Jv_Throw
    at ../../../libjava/exception.cc line 113
  • #4 catch_segv
    at ../../../libjava/prims.cc line 152
  • #5 <signal handler called>
  • #6 unmark_for_gc
    at ../../../libjava/jni.cc line 197
  • #7 cleanup
    from /usr/lib/frysk/libgtkjni-2.8.so
  • #8 Java_org_gnu_glib_Timer_stop_1timer
    from /usr/lib/frysk/libgtkjni-2.8.so
  • #9 org::gnu::glib::Timer::stop_timer
    from /usr/lib/frysk/libgtkjava-2.8.so
  • #10 org::gnu::glib::Timer::stop
    from /usr/lib/frysk/libgtkjava-2.8.so
  • #11 org::gnu::glib::Timer::finalize
    from /usr/lib/frysk/libgtkjava-2.8.so
  • #12 _Jv_FinalizeObject
    at ../../../libjava/java/lang/natObject.cc line 121
  • #13 call_finalizer
    at ../../../libjava/boehm.cc line 518
  • #14 GC_invoke_finalizers
    at ../../../boehm-gc/finalize.c line 787
  • #15 _Jv_RunFinalizers
    at ../../../libjava/boehm.cc line 531
  • #16 gnu::gcj::runtime::FinalizerThread::run
    at ../../../libjava/gnu/gcj/runtime/natFinalizerThread.cc line 60
  • #17 _Jv_ThreadRun
    at ../../../libjava/java/lang/natThread.cc line 296
  • #18 really_start
    at ../../../libjava/posix-threads.cc line 430
  • #19 GC_start_routine
    at ../../../boehm-gc/pthread_support.c line 1185
  • #20 start_thread
    at pthread_create.c line 261
  • #21 ??
    from /lib/libc.so.6

Other information:
downstream tracker: http://sourceware.org/bugzilla/show_bug.cgi?id=2333
Comment 1 Andrew Cowie 2006-02-27 02:43:33 UTC
Based on downstream comment it sounds like you have a workaround; what do you want to do about this bug? Assume it's a java-gnome/libgtk-java issue, or assume it was a "we were using it wrong" issue? (Lord knows I wish we could systematically trap those, as there are many to stumble into)

AfC
Comment 2 Andrew Cagney 2006-02-27 04:54:36 UTC
(In reply to comment #1)
> Based on downstream comment it sounds like you have a workaround; what do you
> want to do about this bug? Assume it's a java-gnome/libgtk-java issue, or
> assume it was a "we were using it wrong" issue? (Lord knows I wish we could
> systematically trap those, as there are many to stumble into)

The bug is either in GCJ, or Java-GNOME - the garbage collector panicked.  While frysk managed to work around it by avoiding that code path (don't use gtk timer?), we[frysk at least :-)] still need to figure out what went wrong and how to stop the problem.

Fun eh :-)
Comment 3 Andrew Cowie 2006-02-27 05:28:01 UTC
I've only used Timer a few times but I've also used CustomEvents extensively (and was around when it was debugged somewhat). Both work alright for me though in general I'm not using GCJ. My only current test case with Timer is somewhat simplistic:

http://research.operationaldynamics.com/source/darcsweb/?r=drivestate;a=headblob;f=/src/drivestate/DriveState.java#l55

but for what it's worth it does work.

AfC
Comment 4 Sami Wagiaalla 2006-03-10 16:25:43 UTC
*** Bug 334039 has been marked as a duplicate of this bug. ***
Comment 5 Sami Wagiaalla 2006-03-10 16:26:50 UTC
fixed by patch from 334039