VMError and masked signals
Tom Rodriguez
tom.rodriguez at oracle.com
Tue Nov 9 20:06:09 PST 2010
I was looking at a crash Vladimir saw with a truncated hs_err file when debugging a SIGFPE. What happens is that during the reporting in VMError is tries to print the native stack and gets a SEGV. Instead of restarting the reporting like it normally does the process just aborts. I looked into it a bit and it appears that it's because we don't unmask SEGV and BUS when we're running the VMError stuff so if we get one of them while in the signal handler, the OS simply kills the process. Normally all signals are masked except the one being handled so we will handle a SEGV when reporting a SEGV or BUS when reporting a BUS but we'll be killed the OS when they are mixed. I think VMError::reset_signal_handler and crash_handler should be unblocking SEGV and BUS during reporting if we want to get complete hs_err files. Does anyone see any problems with this?
tom
More information about the hotspot-runtime-dev
mailing list