GCJ/minGW produced executables and linux/wine

Andrew Haley aph@redhat.com
Wed Mar 5 11:19:00 GMT 2003


Ranjit Mathew writes:
 > > > Well honestly, I don't know and I'm surprised that it works
 > > > on Linux (so signal delivery must be the "last mile" in that
 > > > the OS doesn't really care if the handler returns or not).
 > >
 > > The ANS C standard says that signal handlers may return by doing a
 > > longjmp. But that's what I meant whan I said this is not a signal
 > > handler and may have other restrictions. And it seems like it does
 > > indeed have some restrictions.
 > 
 > I found a GCJ document relevant to this discussion at:
 > 
 > http://gcc.gnu.org/java/port-signals.html
 > 
 > (I had seen it before, but hadn't understood its signficance till now. ;-))
Aw, that's well out of date. I'd forgotten all about it. Thanks for
pointing it out to me. I need to rewrite it.
 > > > I can imagine that there would be problems on Win32 because
 > > > this handler is supposed to return a value to the OS telling
 > > > it whether to execute the default handler (abort program)
 > > > or whether the exception has been handled successfully.
 > 
 > My conjecture seems correct as this simple program hangs on Win32
 > after printing "Strike 1!", instead of printing "Strike 2!" as well:
 > ------------------------------- 8< --------------------------------
 > public class Snafu {
 > public static void main( String[] args) {
 > Object p = null;
 > try {
 > System.out.println( p.toString( ));
 > } catch( NullPointerException e) {
 > System.err.println( "Strike 1!");
 > }
 > 
 > try {
 > System.out.println( p.toString( ));
 > } catch( NullPointerException e) {
 > System.err.println( "Strike 2!");
 > }
 > }
 > }
 > ------------------------------- 8< --------------------------------
 > 
 > I guess instead of blindly throwing NullPointerException from within
 > win32_exception_handler( ) in win32.cc, we will have to modify
 > the return address a la MAKE_THROW_FRAME in posix.cc, and return
 > EXCEPTION_CONTINUE_EXECUTION as explicitly allowed by Windows:
 > 
 > http://msdn.microsoft.com/library/en-us/debug/base/setunhandledexceptionfilter.asp
That's a but hairy, but it might work.
-fcheck-references is better in the meantime.
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /