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).

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.


2007/10/29, Mark Hindess <[EMAIL PROTECTED]>:
>
> 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_ia32_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

Reply via email to