# HG changeset patch # User coleenp # Date 1361298819 18000 # Node ID 1048edb5434a441c4b8ed82f915d5baccd4f47ef # Parent 5cd2fac2ae707ae46a2d3adcd9485b5c6a9df586# Parent 56c364daccc3ce0fef1984f312848337bb8fd727 Merge diff -r 56c364daccc3 -r 1048edb5434a src/os/bsd/vm/os_bsd.cpp --- a/src/os/bsd/vm/os_bsd.cpp Tue Feb 19 11:36:52 2013 -0500 +++ b/src/os/bsd/vm/os_bsd.cpp Tue Feb 19 13:33:39 2013 -0500 @@ -2887,7 +2887,9 @@ void signalHandler(int sig, siginfo_t* info, void* uc) { assert(info != NULL && uc != NULL, "it must be old kernel"); + int orig_errno = errno; // Preserve errno value over signal handler. JVM_handle_bsd_signal(sig, info, uc, true); + errno = orig_errno; } diff -r 56c364daccc3 -r 1048edb5434a src/os/linux/vm/os_linux.cpp --- a/src/os/linux/vm/os_linux.cpp Tue Feb 19 11:36:52 2013 -0500 +++ b/src/os/linux/vm/os_linux.cpp Tue Feb 19 13:33:39 2013 -0500 @@ -3653,7 +3653,9 @@ void signalHandler(int sig, siginfo_t* info, void* uc) { assert(info != NULL && uc != NULL, "it must be old kernel"); + int orig_errno = errno; // Preserve errno value over signal handler. JVM_handle_linux_signal(sig, info, uc, true); + errno = orig_errno; } diff -r 56c364daccc3 -r 1048edb5434a src/os/solaris/vm/os_solaris.cpp --- a/src/os/solaris/vm/os_solaris.cpp Tue Feb 19 11:36:52 2013 -0500 +++ b/src/os/solaris/vm/os_solaris.cpp Tue Feb 19 13:33:39 2013 -0500 @@ -4317,7 +4317,9 @@ void signalHandler(int sig, siginfo_t* info, void* ucVoid) { + int orig_errno = errno; // Preserve errno value over signal handler. JVM_handle_solaris_signal(sig, info, ucVoid, true); + errno = orig_errno; } /* Do not delete - if guarantee is ever removed, a signal handler (even empty)