agent/test/jdi/runjpda.sh

Mon, 28 Jul 2014 15:06:38 -0700

author
fzhinkin
date
Mon, 28 Jul 2014 15:06:38 -0700
changeset 6997
dbb05f6d93c4
parent 1907
c18cbe5936b8
child 6876
710a3c8b516e
permissions
-rw-r--r--

8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on
Summary: call rtm_deopt() only if there were no compilation bailouts before.
Reviewed-by: kvn

duke@435 1 #!/bin/ksh
duke@435 2 #
trims@1907 3 # Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
duke@435 4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 5 #
duke@435 6 # This code is free software; you can redistribute it and/or modify it
duke@435 7 # under the terms of the GNU General Public License version 2 only, as
duke@435 8 # published by the Free Software Foundation.
duke@435 9 #
duke@435 10 # This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 13 # version 2 for more details (a copy is included in the LICENSE file that
duke@435 14 # accompanied this code).
duke@435 15 #
duke@435 16 # You should have received a copy of the GNU General Public License version
duke@435 17 # 2 along with this work; if not, write to the Free Software Foundation,
duke@435 18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 19 #
trims@1907 20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 21 # or visit www.oracle.com if you need additional information or have any
trims@1907 22 # questions.
duke@435 23 #
duke@435 24 #
duke@435 25
duke@435 26 # This script runs the test program, sagtest.java, with the regular
duke@435 27 # JPDA jdi.
duke@435 28 # It then starts up the debuggee part of the test, sagtarg.java,
duke@435 29 # and calls gcore to create file sagcore for use in running
duke@435 30 # the SA JDI client.
duke@435 31
duke@435 32 set -x
duke@435 33 # jdk is a jdk with the vm from the sa workspace
duke@435 34 while [ $# != 0 ] ; do
duke@435 35 case $1 in
duke@435 36 -vv)
duke@435 37 set -x
duke@435 38 ;;
duke@435 39 -gui)
duke@435 40 theClass=sun.jvm.hotspot.HSDB
duke@435 41 ;;
duke@435 42 -jdk)
duke@435 43 jdk=$2
duke@435 44 shift
duke@435 45 ;;
duke@435 46 -jdbx)
duke@435 47 do=jdbx
duke@435 48 ;;
duke@435 49 -jdb)
duke@435 50 do=jdb
duke@435 51 ;;
duke@435 52 -help | help)
duke@435 53 doUsage
duke@435 54 exit
duke@435 55 ;;
duke@435 56 -dontkill)
duke@435 57 dontkill=true
duke@435 58 ;;
duke@435 59 -d64)
duke@435 60 d64=-d64
duke@435 61 ;;
duke@435 62 -*)
duke@435 63 javaArgs="$javaArgs $1"
duke@435 64 ;;
duke@435 65 *)
duke@435 66 echo "$1" | grep -s '^[0-9]*$' > /dev/null
duke@435 67 if [ $? = 0 ] ; then
duke@435 68 # it is a pid
duke@435 69 args="$args $1"
duke@435 70 else
duke@435 71 # It is a core.
duke@435 72 # We have to pass the name of the program that produced the
duke@435 73 # core, and the core file itself.
duke@435 74 args="$jdk/bin/java $1"
duke@435 75 fi
duke@435 76 ;;
duke@435 77 esac
duke@435 78 shift
duke@435 79 done
duke@435 80
duke@435 81 # First, run the sagtest.java with the regular JPDA jdi
duke@435 82 workdir=./workdir
duke@435 83 mkdir -p $workdir
duke@435 84 CLASSPATH=$jdk/classes:$jdk/lib/tools.jar:$workdir
duke@435 85 export CLASSPATH
duke@435 86
duke@435 87 $jdk/bin/javac -g -source 1.5 -classpath $jdk/classes:$jdk/lib/tools.jar:$workdir -J-Xms40m -d $workdir \
duke@435 88 TestScaffold.java \
duke@435 89 VMConnection.java \
duke@435 90 TargetListener.java \
duke@435 91 TargetAdapter.java \
duke@435 92 sagdoit.java \
duke@435 93 sagtarg.java \
duke@435 94 sagtest.java
duke@435 95
duke@435 96 if [ $? != 0 ] ; then
duke@435 97 exit 1
duke@435 98 fi
duke@435 99
duke@435 100 $jdk/bin/java $javaArgs -Dtest.classes=$workdir sagtest
duke@435 101
duke@435 102 # Now run create a core file for use in running sa-jdi
duke@435 103
duke@435 104 if [ ! core.satest -nt sagtarg.class ] ; then
duke@435 105 tmp=/tmp/sagsetup
duke@435 106 rm -f $tmp
duke@435 107 $jdk/bin/java $d64 sagtarg > $tmp &
duke@435 108 pid=$!
duke@435 109 while [ ! -s $tmp ] ; do
duke@435 110 # Kludge alert!
duke@435 111 sleep 2
duke@435 112 done
duke@435 113 #rm -f $tmp
duke@435 114
duke@435 115 # force core dump of the debuggee
duke@435 116 OS=`uname`
duke@435 117 if [ "$OS" = "Linux" ]; then
duke@435 118 # Linux does not have gcore command. Instead, we use 'gdb's
duke@435 119 # gcore command. Note that only some versions of gdb support
duke@435 120 # gdb command.
duke@435 121 echo "gcore" > gdbscript
duke@435 122 gdb -batch -p $pid -x gdbscript
duke@435 123 rm -f gdbscript
duke@435 124 else
duke@435 125 gcore $* $pid
duke@435 126 fi
duke@435 127 mv core.$pid sagcore
duke@435 128
duke@435 129 if [ "$dontkill" != "true" ]; then
duke@435 130 kill -9 $pid
duke@435 131 fi
duke@435 132 fi
duke@435 133

mercurial