# HG changeset patch # User ccheung # Date 1374270894 25200 # Node ID dd89db581bca55cd1c65887f6ba186a91fdf98d9 # Parent 28a8224681eb14fd003a86e8302306cd9f2795a1 8020791: [TESTBUG] runtime/jsig/Test8017498.sh failed to compile native code Summary: Added -DLINUX to the gcc command and improved the .sh script Reviewed-by: dcubed, dholmes, minqi diff -r 28a8224681eb -r dd89db581bca hotspot/test/runtime/jsig/Test8017498.sh --- a/hotspot/test/runtime/jsig/Test8017498.sh Fri Jul 19 17:56:27 2013 +0200 +++ b/hotspot/test/runtime/jsig/Test8017498.sh Fri Jul 19 14:54:54 2013 -0700 @@ -26,8 +26,9 @@ ## ## @test Test8017498.sh ## @bug 8017498 +## @bug 8020791 ## @summary sigaction(sig) results in process hang/timed-out if sig is much greater than SIGRTMAX -## @run shell Test8017498.sh +## @run shell/timeout=30 Test8017498.sh ## if [ "${TESTSRC}" = "" ] @@ -46,17 +47,13 @@ echo "Testing on Linux" if [ "$VM_BITS" = "64" ] then - LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}amd64${FS}libjsig.so + MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}amd64${FS}libjsig.so else - LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}i386${FS}libjsig.so + MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}i386${FS}libjsig.so fi - echo LD_PRELOAD = ${LD_PRELOAD} - export LD_PRELOAD=${LD_PRELOAD} + echo MY_LD_PRELOAD = ${MY_LD_PRELOAD} ;; *) - NULL=NUL - PS=";" - FS="\\" echo "Test passed; only valid for Linux" exit 0; ;; @@ -67,29 +64,29 @@ cp ${TESTSRC}${FS}*.java ${THIS_DIR} ${TESTJAVA}${FS}bin${FS}javac *.java -gcc -fPIC -shared -o ${TESTSRC}${FS}libTestJNI.so -I${TESTJAVA}${FS}include -I${TESTJAVA}${FS}include${FS}linux ${TESTSRC}${FS}TestJNI.c +gcc -DLINUX -fPIC -shared \ + -o ${TESTSRC}${FS}libTestJNI.so \ + -I${TESTJAVA}${FS}include \ + -I${TESTJAVA}${FS}include${FS}linux \ + ${TESTSRC}${FS}TestJNI.c +if [ $? != 0 ] +then + echo "WARNING: the gcc command failed." 2>&1 +fi # run the java test in the background -echo ${TESTJAVA}${FS}bin${FS}java -Djava.library.path=${TESTSRC}${FS} -server TestJNI 100 > test.out 2>&1 & -${TESTJAVA}${FS}bin${FS}java -Djava.library.path=${TESTSRC}${FS} -server TestJNI 100 > test.out 2>&1 & - -# obtain the process id -C_PID=$! +cmd="LD_PRELOAD=$MY_LD_PRELOAD \ + ${TESTJAVA}${FS}bin${FS}java \ + -Djava.library.path=${TESTSRC}${FS} -server TestJNI 100" +echo "$cmd > test.out 2>&1" +eval $cmd > test.out 2>&1 -# sleep for 1s -sleep 1 - -# reset LD_PRELOAD -unset LD_PRELOAD - -# check the output file (test.out) grep "old handler" test.out > ${NULL} if [ $? = 0 ] then echo "Test Passed" exit 0 -else - kill -9 ${C_PID} - echo "Test Failed" - exit 1 fi + +echo "Test Failed" +exit 1 diff -r 28a8224681eb -r dd89db581bca hotspot/test/runtime/jsig/TestJNI.c --- a/hotspot/test/runtime/jsig/TestJNI.c Fri Jul 19 17:56:27 2013 +0200 +++ b/hotspot/test/runtime/jsig/TestJNI.c Fri Jul 19 14:54:54 2013 -0700 @@ -21,9 +21,9 @@ * questions. */ +#define _GNU_SOURCE // for the definition of REG_RIP in ucontext.h #include #include -#define __USE_GNU #include #include @@ -42,8 +42,6 @@ JNIEXPORT void JNICALL Java_TestJNI_doSomething(JNIEnv *env, jclass klass, jint val) { struct sigaction act; struct sigaction oact; - pthread_attr_t attr; - stack_t stack; act.sa_flags = SA_ONSTACK|SA_RESTART|SA_SIGINFO; sigfillset(&act.sa_mask);