提交 f067cad7 编写于 作者: K kevinw

Merge

...@@ -654,3 +654,4 @@ e01a710549a962cee94728271248a7d89fb56c49 hs25.60-b20 ...@@ -654,3 +654,4 @@ e01a710549a962cee94728271248a7d89fb56c49 hs25.60-b20
4b6687a4f2fe84211b8b3b5afb34b5186afbddf6 hs25.60-b21 4b6687a4f2fe84211b8b3b5afb34b5186afbddf6 hs25.60-b21
e0d75c284bd1c09fd7d9ef09627d8a99b88d468d jdk8u60-b21 e0d75c284bd1c09fd7d9ef09627d8a99b88d468d jdk8u60-b21
ff8fdeb2fb6d6f3348597339c53412f8f6202c3f hs25.60-b22 ff8fdeb2fb6d6f3348597339c53412f8f6202c3f hs25.60-b22
878cb0df27c22c6b1e9f4add1eb3da3edc8ab51d jdk8u60-b22
...@@ -1140,37 +1140,6 @@ included with JRE 8, JDK 8, and OpenJDK 8. ...@@ -1140,37 +1140,6 @@ included with JRE 8, JDK 8, and OpenJDK 8.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
%% This notice is provided with respect to JSON, which may be included
with JRE 8 & JDK 8.
--- begin of LICENSE ---
Copyright (c) 2002 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
--- end of LICENSE ---
-------------------------------------------------------------------------------
%% This notice is provided with respect to Kerberos functionality, which %% This notice is provided with respect to Kerberos functionality, which
which may be included with JRE 8, JDK 8, and OpenJDK 8. which may be included with JRE 8, JDK 8, and OpenJDK 8.
...@@ -1250,7 +1219,7 @@ included with JDK 8 and OpenJDK 8 source distributions. ...@@ -1250,7 +1219,7 @@ included with JDK 8 and OpenJDK 8 source distributions.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
%% This notice is provided with respect to libpng 1.6.16, which may be %% This notice is provided with respect to libpng 1.6.16, which may be
included with JRE 8, JDK 8, and OpenJDK 8. included with JRE 8, JDK 8, and OpenJDK 8.
--- begin of LICENSE --- --- begin of LICENSE ---
...@@ -1370,7 +1339,7 @@ December 22, 2014 ...@@ -1370,7 +1339,7 @@ December 22, 2014
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
%% This notice is provided with respect to libungif 4.1.3, which may be %% This notice is provided with respect to GIFLIB 5.1.1 & libungif 4.1.3, which may be
included with JRE 8, JDK 8, and OpenJDK 8. included with JRE 8, JDK 8, and OpenJDK 8.
--- begin of LICENSE --- --- begin of LICENSE ---
...@@ -1399,13 +1368,13 @@ THE SOFTWARE. ...@@ -1399,13 +1368,13 @@ THE SOFTWARE.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
%% This notice is provided with respect to Little CMS 2.5, which may be %% This notice is provided with respect to Little CMS 2.7, which may be
included with JRE 8, JDK 8, and OpenJDK 8. included with JRE 8, JDK 8, and OpenJDK 8.
--- begin of LICENSE --- --- begin of LICENSE ---
Little CMS Little CMS
Copyright (c) 1998-2011 Marti Maria Saguer Copyright (c) 1998-2015 Marti Maria Saguer
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
......
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
HOTSPOT_VM_COPYRIGHT=Copyright 2015 HOTSPOT_VM_COPYRIGHT=Copyright 2015
HS_MAJOR_VER=25 HS_MAJOR_VER=25
HS_MINOR_VER=60 HS_MINOR_VER=66
HS_BUILD_NUMBER=22 HS_BUILD_NUMBER=01
JDK_MAJOR_VER=1 JDK_MAJOR_VER=1
JDK_MINOR_VER=8 JDK_MINOR_VER=8
......
/* /*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
#include <string.h>
#define MAXSIGNUM 32 #define MAXSIGNUM 32
#define MASK(sig) ((unsigned int)1 << sig) #define MASK(sig) ((unsigned int)1 << sig)
...@@ -43,6 +44,9 @@ ...@@ -43,6 +44,9 @@
static struct sigaction sact[MAXSIGNUM]; /* saved signal handlers */ static struct sigaction sact[MAXSIGNUM]; /* saved signal handlers */
static unsigned int jvmsigs = 0; /* signals used by jvm */ static unsigned int jvmsigs = 0; /* signals used by jvm */
static pthread_key_t reentry_flag_key;
static pthread_once_t reentry_key_init_once = PTHREAD_ONCE_INIT;
/* used to synchronize the installation of signal handlers */ /* used to synchronize the installation of signal handlers */
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
...@@ -59,6 +63,15 @@ static sigaction_t os_sigaction = 0; /* os's version of sigaction() */ ...@@ -59,6 +63,15 @@ static sigaction_t os_sigaction = 0; /* os's version of sigaction() */
static bool jvm_signal_installing = false; static bool jvm_signal_installing = false;
static bool jvm_signal_installed = false; static bool jvm_signal_installed = false;
#define check_status(cmd) \
do { \
int status = (cmd); \
if (status != 0) { \
printf("error %s (%d) in " #cmd "\n", strerror(status), status); \
exit(1); \
} \
} while (0)
static void signal_lock() { static void signal_lock() {
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
/* When the jvm is installing its set of signal handlers, threads /* When the jvm is installing its set of signal handlers, threads
...@@ -74,8 +87,15 @@ static void signal_unlock() { ...@@ -74,8 +87,15 @@ static void signal_unlock() {
pthread_mutex_unlock(&mutex); pthread_mutex_unlock(&mutex);
} }
static void reentry_tls_init() {
// value for reentry_flag_key will default to NULL (false)
check_status(pthread_key_create(&reentry_flag_key, NULL));
}
static sa_handler_t call_os_signal(int sig, sa_handler_t disp, static sa_handler_t call_os_signal(int sig, sa_handler_t disp,
bool is_sigset) { bool is_sigset) {
sa_handler_t res;
if (os_signal == NULL) { if (os_signal == NULL) {
if (!is_sigset) { if (!is_sigset) {
os_signal = (signal_t)dlsym(RTLD_NEXT, "signal"); os_signal = (signal_t)dlsym(RTLD_NEXT, "signal");
...@@ -87,7 +107,12 @@ static sa_handler_t call_os_signal(int sig, sa_handler_t disp, ...@@ -87,7 +107,12 @@ static sa_handler_t call_os_signal(int sig, sa_handler_t disp,
exit(0); exit(0);
} }
} }
return (*os_signal)(sig, disp); check_status(pthread_once(&reentry_key_init_once, reentry_tls_init));
// set reentry_flag_key to non-NULL to show reentry
check_status(pthread_setspecific(reentry_flag_key, &res));
res = (*os_signal)(sig, disp);
check_status(pthread_setspecific(reentry_flag_key, NULL));
return res;
} }
static void save_signal_handler(int sig, sa_handler_t disp) { static void save_signal_handler(int sig, sa_handler_t disp) {
...@@ -161,6 +186,11 @@ int sigaction(int sig, const struct sigaction *act, struct sigaction *oact) { ...@@ -161,6 +186,11 @@ int sigaction(int sig, const struct sigaction *act, struct sigaction *oact) {
bool sigused; bool sigused;
struct sigaction oldAct; struct sigaction oldAct;
check_status(pthread_once(&reentry_key_init_once, reentry_tls_init));
if (pthread_getspecific(reentry_flag_key) != NULL) {
return call_os_sigaction(sig, act, oact);
}
signal_lock(); signal_lock();
sigused = (MASK(sig) & jvmsigs) != 0; sigused = (MASK(sig) & jvmsigs) != 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册