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
