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

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

mercurial