On Thu, 2006-02-02 at 00:11 -0500, Dan Williams wrote:
On Wed, 2006-02-01 at 23:11 -0500, Andrew Overholt wrote:
> CCing Andrew Haley
>
> * Erwin Rol <mailinglists(a)erwinrol.com> [2006-02-01 22:55]:
> >
> > For a while i have the the problem that /usr/bin/gcj-dbtool hangs until
> > i kill it. This is a problem because most java packages use it in their
> > %pre and %post script, and so all installs (and updates) of java
> > programs like eclipse and openoffice hang.
>
> I believe Andrew Haley was tracking this down. I don't think it has
> anything to do with the CDT.
I was having a problem with this once with mock and the Extras
buildsystem, and we thought the cause might have been python <= 2.3,
which masks _all_ signals for new threads. Somebody said that gcj uses
signals for thread control, which may have lead to a deadlock waiting
for a thread to exit when the signal was simply ignored due to python
stupidity. Not sure if signal masks have anything to do with rpm, but
it seemed to be the issue with python <= 2.3.
I don't know if it helps, but here is a back trace
of /usr/bin/gcj-dbtool. Also keep in mind this is on x86_64, which i
forgot to mention earlier.
(gdb) info threads
2 Thread 1084229984 (LWP 16734) 0x0000003e1d009436 in ?? () from
/lib64/libpthread.so.0
1 Thread 47043201282672 (LWP 16733) 0x0000003e1d00b01d in ?? () from
/lib64/libpthread.so.0
(gdb) thread 1
[Switching to thread 1 (Thread 47043201282672 (LWP 16733))]#0 0x0000003e1d00b01d in ?? ()
from /lib64/libpthread.so.0
(gdb) bt
#0 0x0000003e1d00b01d in ?? () from /lib64/libpthread.so.0
#1 0x00002ac9189c3dc3 in GC_stop_world () from /usr/lib/../lib64/libgcj.so.7
#2 0x00002ac9189b63bb in GC_stopped_mark () from /usr/lib/../lib64/libgcj.so.7
#3 0x00002ac9189b66fb in GC_try_to_collect_inner () from /usr/lib/../lib64/libgcj.so.7
#4 0x00002ac9189b6960 in GC_collect_or_expand () from /usr/lib/../lib64/libgcj.so.7
#5 0x00002ac9189b6e5b in GC_allocobj () from /usr/lib/../lib64/libgcj.so.7
#6 0x00002ac9189badb0 in GC_generic_malloc_inner () from /usr/lib/../lib64/libgcj.so.7
#7 0x00002ac9189bb7f7 in GC_generic_malloc_many () from /usr/lib/../lib64/libgcj.so.7
#8 0x00002ac9189c31a4 in GC_local_malloc_atomic () from /usr/lib/../lib64/libgcj.so.7
#9 0x00002ac918509ec7 in _Jv_NewPrimArray () from /usr/lib/../lib64/libgcj.so.7
#10 0x00002ac918559074 in gnu::gcj::runtime::PersistentByteMap::getBytes () from
/usr/lib/../lib64/libgcj.so.7
#11 0x00002ac9185591a2 in gnu::gcj::runtime::PersistentByteMap$HashIterator::next () from
/usr/lib/../lib64/libgcj.so.7
#12 0x00002ac918558e86 in gnu::gcj::runtime::PersistentByteMap::putAll () from
/usr/lib/../lib64/libgcj.so.7
#13 0x0000000000404592 in ?? ()
#14 0x00002ac918532483 in gnu::java::lang::MainThread::call_main () from
/usr/lib/../lib64/libgcj.so.7
#15 0x00002ac91853f5ca in _Jv_ThreadRun () from /usr/lib/../lib64/libgcj.so.7
#16 0x00002ac91850ad4b in _Jv_RunMain () from /usr/lib/../lib64/libgcj.so.7
#17 0x0000003e1be1cde4 in __libc_start_main (main=0x402cc0, argc=168,
ubp_av=0x7fffff98f658, init=Variable "init" is not available.
) at libc-start.c:231
#18 0x0000000000402c49 in ?? ()
#19 0x00007fffff98f648 in ?? ()
#20 0x0000000000000000 in ?? ()
(gdb) thread 2
[Switching to thread 2 (Thread 1084229984 (LWP 16734))]#0 0x0000003e1d009436 in ?? ()
from /lib64/libpthread.so.0
(gdb) bt
#0 0x0000003e1d009436 in ?? () from /lib64/libpthread.so.0
#1 0x00002ac918545992 in _Jv_CondWait () from /usr/lib/../lib64/libgcj.so.7
#2 0x00002ac918531da4 in gnu::gcj::runtime::FinalizerThread::run () from
/usr/lib/../lib64/libgcj.so.7
#3 0x00002ac91853f5ca in _Jv_ThreadRun () from /usr/lib/../lib64/libgcj.so.7
#4 0x00002ac918545521 in _Jv_ThreadRegister () from /usr/lib/../lib64/libgcj.so.7
#5 0x00002ac9189c339e in GC_start_routine () from /usr/lib/../lib64/libgcj.so.7
#6 0x0000003e1d00615a in start_thread (arg=Variable "arg" is not available.
) at pthread_create.c:261
#7 0x0000003e1bec92bd in ?? () from /lib64/libc.so.6
#8 0x0000000000000000 in ?? ()