mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-18 10:04:42 +02:00
8202014: Possible to receive signal before signal semaphore created
Initialize jdk.internal.misc.Signal in os_init2 and rename initialization functions. Reviewed-by: dholmes, stuefe
This commit is contained in:
parent
bc795f4eb8
commit
768632f24b
11 changed files with 41 additions and 28 deletions
|
@ -2520,7 +2520,7 @@ static volatile jint pending_signals[NSIG+1] = { 0 };
|
|||
static Semaphore* sig_sem = NULL;
|
||||
static PosixSemaphore sr_semaphore;
|
||||
|
||||
void os::signal_init_pd() {
|
||||
static void jdk_misc_signal_init() {
|
||||
// Initialize signal structures
|
||||
::memset((void*)pending_signals, 0, sizeof(pending_signals));
|
||||
|
||||
|
@ -2533,7 +2533,7 @@ void os::signal_notify(int sig) {
|
|||
Atomic::inc(&pending_signals[sig]);
|
||||
sig_sem->signal();
|
||||
} else {
|
||||
// Signal thread is not created with ReduceSignalUsage and signal_init_pd
|
||||
// Signal thread is not created with ReduceSignalUsage and jdk_misc_signal_init
|
||||
// initialization isn't called.
|
||||
assert(ReduceSignalUsage, "signal semaphore should be created");
|
||||
}
|
||||
|
@ -4444,7 +4444,7 @@ extern "C" JNIEXPORT int JVM_handle_linux_signal(int signo,
|
|||
void* ucontext,
|
||||
int abort_if_unrecognized);
|
||||
|
||||
void signalHandler(int sig, siginfo_t* info, void* uc) {
|
||||
static 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);
|
||||
|
@ -4992,6 +4992,10 @@ jint os::init_2(void) {
|
|||
|
||||
Linux::signal_sets_init();
|
||||
Linux::install_signal_handlers();
|
||||
// Initialize data for jdk.internal.misc.Signal
|
||||
if (!ReduceSignalUsage) {
|
||||
jdk_misc_signal_init();
|
||||
}
|
||||
|
||||
// Check and sets minimum stack sizes against command line options
|
||||
if (Posix::set_minimum_stack_sizes() == JNI_ERR) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue