harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Hindess <mark.hind...@googlemail.com>
Subject Re: [porting] FreeBSD
Date Tue, 30 Oct 2007 14:20:04 GMT

On 29 October 2007 at 4:43, "Ilya Berezhniuk" <ilya.berezhniuk@gmail.com>
wrote:
>
> I think this infinite loop appears because the crash handler needs
> some adjustment to work on FreeBSD. It occasionally goes into infinite
> loop even on Linux.
> 
> To avoid this and simply crash with a core dump, you can comment out
> the call to st_print_stack in null_java_reference_handler
> (signals_ia32.cpp).

It doesn't actually get that far.  If I comment out the contents of
the initialize_signals function then I can get a core dump for the
first SEGV - details appended below.

> But probably the best way is using '-XX:vm.crash_handler=true' option.
> VM will start GDB automatically for unprocessed signals. I see you
> have corrected related code in crash_handler.cpp, so this option
> should work.

That would be great but it's received another SIGSEGV before it gets to GDB.

I've a couple of ideas to explore - one is removing the -lrt from the
linking since I don't think this is valid on FreeBSD.  The more drastic
thing would be to try running with libc_r instead of libpthread.

Regards,
-Mark.

#0  0x28108537 in pthread_testcancel () from /lib/libpthread.so.2
[New Thread 0x8057600 (runnable)]
[New Thread 0x8057400 (LWP 100079)]
[New Thread 0x8057000 (runnable)]
[New LWP 100109]
(gdb) info threads
* 4 LWP 100109  0x28108537 in pthread_testcancel () from /lib/libpthread.so.2
  3 Thread 0x8057000 (runnable)  0x2858e2a8 in ?? ()
  2 Thread 0x8057400 (LWP 100079)  0x281084f7 in pthread_testcancel ()
   from /lib/libpthread.so.2
  1 Thread 0x8057600 (runnable)  0x28100f9b in pthread_mutexattr_init ()
   from /lib/libpthread.so.2
(gdb) where
#0  0x281084f7 in pthread_testcancel () from /lib/libpthread.so.2
#1  0x28100ec8 in pthread_mutexattr_init () from /lib/libpthread.so.2
#2  0x2807d450 in ?? ()
(gdb) thread 3
[Switching to thread 3 (Thread 0x8057000 (runnable))]#0  0x2858e2a8 in ?? ()
(gdb) where
#0  0x2858e2a8 in ?? ()
#1  0x281e22f2 in __cxa_finalize () from /lib/libc.so.6
#2  0x281e1f66 in exit () from /lib/libc.so.6
#3  0x080488bf in _start ()
#4  0x00000005 in ?? ()
(gdb) thread 2
[Switching to thread 2 (Thread 0x8057400 (LWP 100079))]#0  0x281084f7 in pthread_testcancel
() from /lib/libpthread.so.2
(gdb) iwhere
Undefined command: "iwhere".  Try "help".
(gdb) where
#0  0x281084f7 in pthread_testcancel () from /lib/libpthread.so.2
#1  0x28100ec8 in pthread_mutexattr_init () from /lib/libpthread.so.2
#2  0x2807d450 in ?? ()
(gdb) thread 1
[Switching to thread 1 (Thread 0x8057600 (runnable))]#0  0x28100f9b in pthread_mutexattr_init
() from /lib/libpthread.so.2
(gdb) where
#0  0x28100f9b in pthread_mutexattr_init () from /lib/libpthread.so.2
#1  0x2810112f in pthread_mutexattr_init () from /lib/libpthread.so.2
#2  0x280ff0a4 in pthread_mutex_lock () from /lib/libpthread.so.2
#3  0x280857dd in hymutex_unlock (mutex=0x8074300)
    at working_vm/vm/thread/src/linux/os_mutex.c:94
#4  0x28087ea3 in hythread_monitor_exit (mon_ptr=0x8074300)
    at working_vm/vm/thread/src/thread_native_fat_monitor.c:152
#5  0x280876f7 in hythread_exit (monitor=0x8074300)
    at working_vm/vm/thread/src/thread_native_basic.c:755
#6  0x280e4630 in asynchSignalReporter (userData=0x0) at hysignal.c:539
#7  0x280875f7 in hythread_wrapper_start_proc (arg=0x8050530)
    at working_vm/vm/thread/src/thread_native_basic.c:725
#8  0x280f93a5 in pthread_create () from /lib/libpthread.so.2
#9  0x281cc137 in _ctx_start () from /lib/libc.so.6

> 2007/10/29, Mark Hindess <mark.hindess@googlemail.com>:
> >
> > There are quite a few hacks the last of which is in r589418, but on
> > FreeBSD 6.2 I can now compile a minimal amount of drlvm with:
> >
> > sh build.sh \
> >   -DCOMPONENTS="vm.interpreter vm.vmcore vm.em vm.gc_gen vm.vmi vm.hythr vm
> .kernel_classes" \
> >    -Dhy.local.zlib=true -Dhy.no.sig=true -Dhy.no.thr=false
> >
> > and then run with:
> >
> > LD_LIBRARY_PATH=freebsd_ia32_gcc_debug/deploy/jdk/jre/bin/default:freebsd_i
> a32_gcc_debug/deploy/jdk/jre/bin ./freebsd_ia32_gcc_debug/deploy/jdk/jre/bin/
> java \
> >   -Xint HelloWorld
> >
> > The good news is that it does get far enough to print "Hello World".
> > The bad news is that it then goes in to an infinite loop segfaulting in
> > the signal handler.  (The initial SIGSEGV seems to be a problem with
> > recursive mutexes.)
> >
> > Regards,
> >  Mark
> >
> >
> >
> 
> 
> -- 
> 
> Ilya
> 



Mime
View raw message