test/runtime/RedefineTests/test8178870.sh

Thu, 12 Sep 2019 15:15:22 -0400

author
zgu
date
Thu, 12 Sep 2019 15:15:22 -0400
changeset 9748
628176d22495
permissions
-rw-r--r--

8178870: instrumentation.retransformClasses cause coredump
Summary: Don't double-free cached class bytes on redefinition loading failure.
Reviewed-by: sspitsyn, jiangli

zgu@9748 1 #!/bin/sh
zgu@9748 2
zgu@9748 3 #
zgu@9748 4 # Copyright (c) 2019, Red Hat, Inc. All rights reserved.
zgu@9748 5 #
zgu@9748 6 # This code is free software; you can redistribute it and/or modify it
zgu@9748 7 # under the terms of the GNU General Public License version 2 only, as
zgu@9748 8 # published by the Free Software Foundation.
zgu@9748 9 #
zgu@9748 10 # This code is distributed in the hope that it will be useful, but WITHOUT
zgu@9748 11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
zgu@9748 12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
zgu@9748 13 # version 2 for more details (a copy is included in the LICENSE file that
zgu@9748 14 # accompanied this code).
zgu@9748 15 #
zgu@9748 16 # You should have received a copy of the GNU General Public License version
zgu@9748 17 # 2 along with this work; if not, write to the Free Software Foundation,
zgu@9748 18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
zgu@9748 19 #
zgu@9748 20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
zgu@9748 21 # or visit www.oracle.com if you need additional information or have any
zgu@9748 22 # questions.
zgu@9748 23 #
zgu@9748 24 #
zgu@9748 25
zgu@9748 26 ## @test test.sh
zgu@9748 27 ## @bug 8178870
zgu@9748 28 ## @summary test instrumentation.retransformClasses
zgu@9748 29 ## @run shell test.sh
zgu@9748 30
zgu@9748 31 if [ "${TESTSRC}" = "" ]
zgu@9748 32 then
zgu@9748 33 TESTSRC=${PWD}
zgu@9748 34 echo "TESTSRC not set. Using "${TESTSRC}" as default"
zgu@9748 35 fi
zgu@9748 36 echo "TESTSRC=${TESTSRC}"
zgu@9748 37 ## Adding common setup Variables for running shell tests.
zgu@9748 38 . ${TESTSRC}/../../test_env.sh
zgu@9748 39
zgu@9748 40 LIB_SRC=${TESTSRC}/../../testlibrary/
zgu@9748 41
zgu@9748 42 # set platform-dependent variables
zgu@9748 43 OS=`uname -s`
zgu@9748 44 echo "Testing on " $OS
zgu@9748 45 case "$OS" in
zgu@9748 46 Linux)
zgu@9748 47 cc_cmd=`which gcc`
zgu@9748 48 if [ "x$cc_cmd" == "x" ]; then
zgu@9748 49 echo "WARNING: gcc not found. Cannot execute test." 2>&1
zgu@9748 50 exit 0;
zgu@9748 51 fi
zgu@9748 52 ;;
zgu@9748 53 Solaris)
zgu@9748 54 cc_cmd=`which cc`
zgu@9748 55 if [ "x$cc_cmd" == "x" ]; then
zgu@9748 56 echo "WARNING: cc not found. Cannot execute test." 2>&1
zgu@9748 57 exit 0;
zgu@9748 58 fi
zgu@9748 59 ;;
zgu@9748 60 *)
zgu@9748 61 echo "Test passed. Only on Linux and Solaris"
zgu@9748 62 exit 0;
zgu@9748 63 ;;
zgu@9748 64 esac
zgu@9748 65
zgu@9748 66 THIS_DIR=.
zgu@9748 67
zgu@9748 68 cp ${TESTSRC}/RedefineDoubleDelete.java ${THIS_DIR}
zgu@9748 69 mkdir -p ${THIS_DIR}/classes
zgu@9748 70 ${TESTJAVA}/bin/javac -sourcepath ${LIB_SRC} -d ${THIS_DIR}/classes ${LIB_SRC}RedefineClassHelper.java
zgu@9748 71 ${TESTJAVA}/bin/javac -cp .:${THIS_DIR}/classes:${TESTJAVA}/lib/tools.jar -d ${THIS_DIR} RedefineDoubleDelete.java
zgu@9748 72
zgu@9748 73 $cc_cmd -fPIC -shared -o ${THIS_DIR}${FS}libRedefineDoubleDelete.so \
zgu@9748 74 -I${TESTJAVA}/include -I${TESTJAVA}/include/linux \
zgu@9748 75 ${TESTSRC}/libRedefineDoubleDelete.c
zgu@9748 76
zgu@9748 77 LD_LIBRARY_PATH=${THIS_DIR}
zgu@9748 78 echo LD_LIBRARY_PATH = ${LD_LIBRARY_PATH}
zgu@9748 79 export LD_LIBRARY_PATH
zgu@9748 80
zgu@9748 81 # Install redefineagent.jar
zgu@9748 82 ${TESTJAVA}/bin${FS}java -cp ${THIS_DIR}/classes RedefineClassHelper
zgu@9748 83
zgu@9748 84 echo
zgu@9748 85 echo ${TESTJAVA}/bin/java -agentlib:RedefineDoubleDelete RedefineDoubleDelete
zgu@9748 86 ${TESTJAVA}/bin/java -cp .:${THIS_DIR}${FS}classes -javaagent:redefineagent.jar -agentlib:RedefineDoubleDelete RedefineDoubleDelete
zgu@9748 87

mercurial