Tue, 23 Jul 2013 12:50:15 -0700
Merge
1.1 --- a/test/runtime/jsig/Test8017498.sh Mon Jul 22 17:57:42 2013 -0400 1.2 +++ b/test/runtime/jsig/Test8017498.sh Tue Jul 23 12:50:15 2013 -0700 1.3 @@ -26,8 +26,9 @@ 1.4 ## 1.5 ## @test Test8017498.sh 1.6 ## @bug 8017498 1.7 +## @bug 8020791 1.8 ## @summary sigaction(sig) results in process hang/timed-out if sig is much greater than SIGRTMAX 1.9 -## @run shell Test8017498.sh 1.10 +## @run shell/timeout=30 Test8017498.sh 1.11 ## 1.12 1.13 if [ "${TESTSRC}" = "" ] 1.14 @@ -46,17 +47,13 @@ 1.15 echo "Testing on Linux" 1.16 if [ "$VM_BITS" = "64" ] 1.17 then 1.18 - LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}amd64${FS}libjsig.so 1.19 + MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}amd64${FS}libjsig.so 1.20 else 1.21 - LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}i386${FS}libjsig.so 1.22 + MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}i386${FS}libjsig.so 1.23 fi 1.24 - echo LD_PRELOAD = ${LD_PRELOAD} 1.25 - export LD_PRELOAD=${LD_PRELOAD} 1.26 + echo MY_LD_PRELOAD = ${MY_LD_PRELOAD} 1.27 ;; 1.28 *) 1.29 - NULL=NUL 1.30 - PS=";" 1.31 - FS="\\" 1.32 echo "Test passed; only valid for Linux" 1.33 exit 0; 1.34 ;; 1.35 @@ -67,29 +64,29 @@ 1.36 cp ${TESTSRC}${FS}*.java ${THIS_DIR} 1.37 ${TESTJAVA}${FS}bin${FS}javac *.java 1.38 1.39 -gcc -fPIC -shared -o ${TESTSRC}${FS}libTestJNI.so -I${TESTJAVA}${FS}include -I${TESTJAVA}${FS}include${FS}linux ${TESTSRC}${FS}TestJNI.c 1.40 +gcc -DLINUX -fPIC -shared \ 1.41 + -o ${TESTSRC}${FS}libTestJNI.so \ 1.42 + -I${TESTJAVA}${FS}include \ 1.43 + -I${TESTJAVA}${FS}include${FS}linux \ 1.44 + ${TESTSRC}${FS}TestJNI.c 1.45 +if [ $? != 0 ] 1.46 +then 1.47 + echo "WARNING: the gcc command failed." 2>&1 1.48 +fi 1.49 1.50 # run the java test in the background 1.51 -echo ${TESTJAVA}${FS}bin${FS}java -Djava.library.path=${TESTSRC}${FS} -server TestJNI 100 > test.out 2>&1 & 1.52 -${TESTJAVA}${FS}bin${FS}java -Djava.library.path=${TESTSRC}${FS} -server TestJNI 100 > test.out 2>&1 & 1.53 +cmd="LD_PRELOAD=$MY_LD_PRELOAD \ 1.54 + ${TESTJAVA}${FS}bin${FS}java \ 1.55 + -Djava.library.path=${TESTSRC}${FS} -server TestJNI 100" 1.56 +echo "$cmd > test.out 2>&1" 1.57 +eval $cmd > test.out 2>&1 1.58 1.59 -# obtain the process id 1.60 -C_PID=$! 1.61 - 1.62 -# sleep for 1s 1.63 -sleep 1 1.64 - 1.65 -# reset LD_PRELOAD 1.66 -unset LD_PRELOAD 1.67 - 1.68 -# check the output file (test.out) 1.69 grep "old handler" test.out > ${NULL} 1.70 if [ $? = 0 ] 1.71 then 1.72 echo "Test Passed" 1.73 exit 0 1.74 -else 1.75 - kill -9 ${C_PID} 1.76 - echo "Test Failed" 1.77 - exit 1 1.78 fi 1.79 + 1.80 +echo "Test Failed" 1.81 +exit 1
2.1 --- a/test/runtime/jsig/TestJNI.c Mon Jul 22 17:57:42 2013 -0400 2.2 +++ b/test/runtime/jsig/TestJNI.c Tue Jul 23 12:50:15 2013 -0700 2.3 @@ -21,9 +21,9 @@ 2.4 * questions. 2.5 */ 2.6 2.7 +#define _GNU_SOURCE // for the definition of REG_RIP in ucontext.h 2.8 #include <stdio.h> 2.9 #include <jni.h> 2.10 -#define __USE_GNU 2.11 #include <signal.h> 2.12 #include <sys/ucontext.h> 2.13 2.14 @@ -42,8 +42,6 @@ 2.15 JNIEXPORT void JNICALL Java_TestJNI_doSomething(JNIEnv *env, jclass klass, jint val) { 2.16 struct sigaction act; 2.17 struct sigaction oact; 2.18 - pthread_attr_t attr; 2.19 - stack_t stack; 2.20 2.21 act.sa_flags = SA_ONSTACK|SA_RESTART|SA_SIGINFO; 2.22 sigfillset(&act.sa_mask);