jdk/test/com/sun/jdi/ShellScaffold.sh
author dcubed
Mon, 23 Nov 2009 10:29:33 -0700
changeset 4325 38a035021ba1
parent 4153 c019b5df1bf5
child 5506 202f599c92aa
permissions -rw-r--r--
6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed Summary: Merge Jim's ShellScaffold.sh fixes with Tim's ShellScaffold.sh fixes. Reviewed-by: tbell
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
#!/bin/sh
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
#
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
     4
# Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
# This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
# under the terms of the GNU General Public License version 2 only, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
# published by the Free Software Foundation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
# accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    21
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    22
# CA 95054 USA or visit www.sun.com if you need additional information or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
# have any questions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
# jtreg runs this in a scratch dir.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
# It (and runregress -no) sets these env vars:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
#    TESTSRC:      The dir that contains this file
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
#    TESTCLASSES:  Where .class files are compiled to
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
#    TESTJAVA:     The jdk to run
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
# This is a 'library' script that is included by
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
# shell script test cases that want to run a .java file as the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
# and use jdb as the debugger.  This file contains
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
# several functions that support such a test.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
# The caller script can also set these shell vars before
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
# including this file:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
#    pkg=<package name>       To use a package, define it here and put
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
#                                package $pkg
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
#                             in your java file
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
#    classname=<classnam>     Omit this to use the default class name, 'shtest'.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
#    compileOptions=<string>  compile options for at least the first compile, 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
#                             eg, compileOptions=-g
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
#    compileOptions2=<string> Options for the 2nd, ..., compile. compileOptions1
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
#                             is used if this is not set.  To use no compile
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
#                             options for the 2nd ... compiles, do 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
#                             compileOptions2=none
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
#    mode=-Xcomp or mode=-Xint to run in these modes.  These should not
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
#                              really be used since the tests are normally
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
#                              run in both modes.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
#    javacCmd=path-to-javac    to use a non-standard javac for compiling
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
#    compileOptions=<string>   Options to pass to javac
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
# See RedefineException.sh as an example of a caller script.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
# To do RedefineClasses operations, embed @1 tags in the .java
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
# file to tell this script how to modify it to produce the 2nd
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
# version of the .class file to be used in the redefine operation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
# Here are examples of each editting tag and what change
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
# it causes in the new file.  Note that blanks are not preserved
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
# in these editing operations.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
# @1 uncomment
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
#  orig:   // @1 uncomment   gus = 89;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
#  new:         gus = 89;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
# @1 commentout
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
#  orig:   gus = 89      // @1 commentout
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
#  new: // gus = 89      // @1 commentout
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
# @1 delete
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
#  orig:  gus = 89      // @1 delete
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
#  new:   entire line deleted
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
# @1 newline
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
#  orig:  gus = 89;     // @1 newline gus++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
#  new:   gus = 89;     //
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
#         gus++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
# @1 replace
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
#  orig:  gus = 89;     // @1 replace gus = 90;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
#  new:   gus = 90;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
# The only other tag supported is @1 breakpoint.  The setbkpts function
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
# sets bkpts at all lines that contain this string.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
# 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
# Currently, all these tags are start with @1.  It is envisioned that this script
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
# could be ehanced to allow multiple cycles of redefines by allowing
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
# @2, @3, ... tags.  IE, processing the @i tags in the ith version of
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
# the file will produce the i+1th version of the file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
# 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
# There are problem with jtreg leaving behind orphan java and jdb processes
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
# when this script is run.  Sometimes, on some platforms, it just doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
# get them all killed properly.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
# The solution is to put a magic word in the cmd lines of background java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
# and jdb processes this script launches.  We can then do the right kind
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
# of ps cmds to find all these processes and kill them.  We do this by
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
# trapping the completion of this script.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
# An associated problem is that our trap handler (cleanup) doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
# always get called when jtreg terminates a test.  This can leave tests
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
# hanging but following tests should run ok because each test uses
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
# unique names for the port and temp files (based on the PID returned
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
# by $$).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
# mks 6.2a on win 98 presents two problems:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
#   $! returns the PID as a negative number whereas ps returns
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
#      it in the form 0xFFF....  This means our trick of 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
#      of using $! to get the PIDs of the jdb and debuggee processes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
#      doesn't work.  This will cause some error cases to fail
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
#      with a jtreg timeout instead of failing more gracefully.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
#   There is no form of the ps command that will show the whole
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
#   cmd line.  Thus, the magic keyword trick doesn't work.  We
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
#   resort to just killing java.exe and jdb.exes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
# pid usage:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
#   debuggeepid: used in jdb process to detect if debuggee has died.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
#                - waitForDebuggeeMsg: fail if debuggee is gone
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
#   jdbpid:   dofail: used to detect if in main process or jdb process
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
#             waitforfinish: quit if the jdb process is gone
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
#killcmd=/bin/kill
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
killcmd=kill
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
# This can be increased if timing seems to be an issue.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
sleep_seconds=1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
echo "ShellScaffold.sh: Version" >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
topPid=$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
# Be careful to echo to >& in these general functions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
# If they are called from the functions that are sending
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
# cmds to jdb, then stdout is redirected to jdb.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
cleanup()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
    if [ -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
        cat $failFile  >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
    # Kill all processes that have our special
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
    # keyword in their cmd line.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
    killOrphans cleanup $jdbKeyword
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
    killOrphans cleanup $debuggeeKeyword
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
# Kill all processes with $2 in their cmd lines
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
# Print a msg about this using $1 as the prefix
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
killOrphans()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
    str=$2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
    if [ -z "$isCygwin" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
        toBeKilled=`$psCmd | $grep -v grep | $grep -i $str | awk '{print $1}' | tr '\n\r' '  '`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
        # The cygwin ps command doesn't show the options passed to a cmd.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
        # We will use jps to get the win PID of the command, and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
        # then use ps to find the cygwin pid to be killed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
        # The form of a ps output line is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
        # ^   ddddd    dddd    dddd    dddd.*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
        # where the 4th digits are the win pid and the first 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
        # are the cygwin pid.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
        if [ -r "$jdk/bin/$jstack" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
            winPid=`$jdk/bin/jps -v | $grep -i $str | sed -e 's@ .*@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
            if [ ! -z "$winPid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
                # Here is a way to kill using a win cmd and the win PID.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
                #echo "$1: taskkill /F $winPid"  >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
                #taskkill /F /PID $winPid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
                toBeKilled=`$psCmd | $grep -v grep | \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
                            $grep '^ +[0-9]+ +[0-9]+ +[0-9]+ +'"$winPid" |\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
                            awk '{print $1}' | tr '\n\r' '  '`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
        else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
            # Well, too bad - we can't find what to kill.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
            toBeKilled=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
    if [ ! -z "$toBeKilled" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
        echo "$1: kill -9 $toBeKilled"  >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
        kill -9 $toBeKilled
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
}    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
findPid()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
    # Return 0 if $1 is the pid of a running process.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
    if [ -z "$isWin98" ] ; then
3954
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   196
        if [ "$osname" = SunOS ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   197
            # Solaris and OpenSolaris use pgrep and not ps in psCmd
3954
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   198
            findPidCmd="$psCmd"
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   199
        else
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   200
            #   Never use plain 'ps', which requires a "controlling terminal"
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   201
            #     and will fail  with a "ps: no controlling terminal" error.
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   202
            #     Running under 'rsh' will cause this ps error.
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   203
            # cygwin ps puts an I in column 1 for some reason.
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   204
            findPidCmd="$psCmd -e"
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   205
        fi
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   206
	$findPidCmd | $grep '^I* *'"$1 " > $devnull 2>&1
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
        return $?
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
    # mks 6.2a on win98 has $! getting a negative
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
    # number and in ps, it shows up as 0x...
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
    # Thus, we can't search in ps output for 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
    # PIDs gotten via $!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
    # We don't know if it is running or not - assume it is.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
    # We don't really care about win98 anymore.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
    return 0
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
setup()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
    failed=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
    # This is used to tag each java and jdb cmd we issue so
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
    # we can kill them at the end of the run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
    orphanKeyword=HANGINGJAVA-$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
    debuggeeKeyword=${orphanKeyword}_DEB
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
    jdbKeyword=${orphanKeyword}_JDB
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
    baseArgs=-D${debuggeeKeyword}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
    if [ -z "$TESTCLASSES" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
        echo "--Warning:  TESTCLASSES is not defined; using TESTCLASSES=."
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
        echo "  You should run: "
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
        echo "    runregress $0 -no"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
        echo "  or"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
        echo "    (setenv TESTCLASSES .; $0 $*)"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
        TESTCLASSES=.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
    if [ ! -z "$TESTJAVA" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
        jdk="$TESTJAVA"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
        echo "--Error: TESTJAVA must be defined as the pathname of a jdk to test."
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
        exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
    ulimitCmd=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
    osname=`uname -s`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
    isWin98=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
    isCygwin=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
    case "$osname" in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
       Windows* | CYGWIN*)	   
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
	 if [ "$osname" = Windows_98 -o "$osname" = Windows_ME ]; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
             isWin98=1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
             debuggeeKeyword='we_cant_kill_debuggees_on_win98'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
             jdbKeyword='jdb\.exe'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
	 fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
         case "$osname" in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
           CYGWIN*)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
             isCygwin=1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
             ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
         esac
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
         if [ -r $jdk/bin/dt_shmem.dll -o -r $jdk/jre/bin/dt_shmem.dll ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
            transport=dt_shmem
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
            address=kkkk.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
         else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
            transport=dt_socket
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
            address=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
         fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
         devnull=NUL
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
         baseArgs="$baseArgs -XX:-ShowMessageBoxOnError"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
         # jtreg puts \\s in TESTCLASSES and some uses, eg. echo
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
         # treat them as control chars on mks (eg \t is tab)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
         # Oops; windows mks really seems to want this cat line
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
         # to start in column 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
         if [ -w "$SystemRoot" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
            tmpFile=$SystemRoot/tmp.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
         elif [ -w "$SYSTEMROOT" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
            tmpFile=$SYSTEMROOT/tmp.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
         else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
            tmpFile=tmp.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
         fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
cat <<EOF >$tmpFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
$TESTCLASSES
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
EOF
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
         TESTCLASSES=`cat $tmpFile | sed -e 's@\\\\@/@g'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
         rm -f $tmpFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
         # on mks
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
         grep=egrep
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
         psCmd=ps
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
         jstack=jstack.exe
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
         ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
       SunOS | Linux)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
         transport=dt_socket
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
         address=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
         devnull=/dev/null
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
         grep=egrep
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
         jstack=jstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
         # On linux, core files take a long time, and can leave
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
         # zombie processes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
         if [ "$osname" = SunOS ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   301
             # Experiments show Solaris '/usr/ucb/ps -axwww' and
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   302
             # '/usr/bin/pgrep -f -l' provide the same small amount of the
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   303
             # argv string (PRARGSZ=80 in /usr/include/sys/procfs.h)
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   304
             #  1) This seems to have been working OK in ShellScaffold.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   305
             #  2) OpenSolaris does not provide /usr/ucb/ps, so use pgrep
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   306
             #     instead
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   307
             # The alternative would be to use /usr/bin/pargs [pid] to get
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   308
             # all the args for a process, splice them back into one
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   309
             # long string, then grep.
4153
c019b5df1bf5 6893426: ShellScaffold.sh fails on Solaris 10 update releases: /usr/bin/id: illegal option -- u
tbell
parents: 3954
diff changeset
   310
             UU=`/usr/xpg4/bin/id -u -n`
3954
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   311
             psCmd="pgrep -f -l -U $UU"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   312
         else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   313
             ulimit -c 0
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
             # See bug 6238593.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
             psCmd="ps axwww"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
         fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
         ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
       *)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
         echo "--Error:  Unknown result from 'uname -s':  $osname"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
         exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
         ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
    esac
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
    tmpFileDir=$TESTCLASSES/aa$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
    TESTCLASSES=$tmpFileDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
    mkdir -p $tmpFileDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
    # This must not contain 'jdb' or it shows up
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
    # in grep of ps output for some platforms
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
    jdbOutFile=$tmpFileDir/jxdbOutput.txt
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
    rm -f $jdbOutFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
    touch $jdbOutFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
    debuggeeOutFile=$tmpFileDir/debuggeeOutput.txt
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
    failFile=$tmpFileDir/testFailed
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
    debuggeepidFile=$tmpFileDir/debuggeepid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
    rm -f $failFile $debuggeepidFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
    if [ -z "$pkg" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
        pkgSlash=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
        pkgDot=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   344
        redefineSubdir=.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
        pkgSlash=$pkg/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
        pkgDot=$pkg.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
        redefineSubdir=$pkgSlash
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
    if [ -z "$classname" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
        classname=shtest
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   353
90ce3da70b43 Initial load
duke
parents:
diff changeset
   354
    if [ -z "$java" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   355
        java=java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   356
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   357
90ce3da70b43 Initial load
duke
parents:
diff changeset
   358
    if [ -z "$jdb" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   359
        jdb=$jdk/bin/jdb
90ce3da70b43 Initial load
duke
parents:
diff changeset
   360
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   361
90ce3da70b43 Initial load
duke
parents:
diff changeset
   362
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   363
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
#  sol:  this gets all processes killed but 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
#        no jstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
#  linux same as above
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
#  win mks:  No dice; processes still running
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
    trap "cleanup" 0 1 2 3 4 6 9 10 15
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
    jdbOptions="$jdbOptions -J-D${jdbKeyword}"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
docompile()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
    if [ "$compile" = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
        return
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
    saveDir=`pwd`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
    cd $tmpFileDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
    rm -f *.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
    createJavaFile $classname
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
    # Compile two versions of the file, the original and with the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
    # indicated lines modified.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
    cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
    echo "--Compiling first version of `pwd`/$classname.java with options: $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
    # Result is in $pkgSlash$classname.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
    if [ -z "$javacCmd" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
        javacCmd=$jdk/bin/javac
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
    echo "compiling " `ls *.java`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
    $javacCmd $compileOptions -d . *.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
    if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
       dofail "First compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
    if [ -r vers1 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
        rm -rf vers1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
    mkdir -p vers1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
    mv *.class vers1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
    if [ ! -z "$compileOptions2" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
        if [ "$compileOptions2" = none ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   407
            compileOptions=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   408
        else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   409
            compileOptions=$compileOptions2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   410
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   411
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   412
90ce3da70b43 Initial load
duke
parents:
diff changeset
   413
    while [ 1 = 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   414
        # Not really a loop; just a way to avoid goto
90ce3da70b43 Initial load
duke
parents:
diff changeset
   415
        # by using breaks
90ce3da70b43 Initial load
duke
parents:
diff changeset
   416
        sed -e '/@1 *delete/ d' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   417
            -e 's! *// *@1 *uncomment!     !' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   418
            -e 's!\(.*@1 *commentout\)!//\1!' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
            -e 's/@1 *newline/\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   420
                 /' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   421
            -e 's/.*@1 *replace//' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   422
            $classname.java.1  >$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
90ce3da70b43 Initial load
duke
parents:
diff changeset
   424
        cmp -s $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   425
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   426
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   427
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   428
        echo 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
        echo "--Compiling second version of `pwd`/$classname.java with $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   430
        $javacCmd $compileOptions -d . $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   431
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
            dofail "Second compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
        if [ -r vers2 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   435
            rm -rf vers2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   436
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   437
        mkdir -p vers2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   438
        mv *.class vers2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
        mv $classname.java $classname.java.2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   440
        cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
90ce3da70b43 Initial load
duke
parents:
diff changeset
   442
        ###### Do the same for @2, and @3 allowing 3 redefines to occur.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   443
        ###### If I had more time to write sed cmds, I would do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   444
        ###### this in a loop.  But, I don't think we will ever need
90ce3da70b43 Initial load
duke
parents:
diff changeset
   445
        ###### more than 3 redefines.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   446
        sed -e '/@2 *delete/ d' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   447
            -e 's! *// *@2 *uncomment!     !' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   448
            -e 's!\(.*@2 *commentout\)!//\1!' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
            -e 's/@2 *newline/\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
                 /' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
            -e 's/.*@2 *replace//' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
            $classname.java.2 >$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
        cmp -s $classname.java.2 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   455
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   456
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
        echo 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   458
        echo "--Compiling third version of `pwd`/$classname.java with $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   459
        $javacCmd $compileOptions -d . $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   461
            dofail "Third compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   462
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   463
        if [ -r vers3 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   464
            rm -rf vers3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
        mkdir -p vers3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
        mv *.class vers3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   468
        mv $classname.java $classname.java.3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   469
        cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   470
90ce3da70b43 Initial load
duke
parents:
diff changeset
   471
        ########
90ce3da70b43 Initial load
duke
parents:
diff changeset
   472
        sed -e '/@3 *delete/ d' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
            -e 's! *// *@3 *uncomment!     !' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   474
            -e 's!\(.*@3 *commentout\)!//\1!' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   475
            -e 's/@3 *newline/\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   476
                    /' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
            -e 's/.*@3 *replace//' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   478
            $classname.java.3 >$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   479
        cmp -s $classname.java.3 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   480
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
        echo 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   484
        echo "--Compiling fourth version of `pwd`/$classname.java with $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   485
        $javacCmd $compileOptions -d . $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   486
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   487
            dofail "fourth compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   488
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   489
        if [ -r vers4 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   490
            rm -rf vers4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   491
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   492
        mkdir -p vers4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   493
        mv *.class vers4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   494
        mv $classname.java $classname.java.4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   495
        cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   496
        break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   497
        fgrep @4 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   498
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   499
            echo "--Error: @4 and above are not yet allowed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   500
            exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   501
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   502
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   503
90ce3da70b43 Initial load
duke
parents:
diff changeset
   504
    cp vers1/* $redefineSubdir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   505
    cd $saveDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   506
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   507
90ce3da70b43 Initial load
duke
parents:
diff changeset
   508
# Send a cmd to jdb and wait for the jdb prompt to appear.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   509
# We don't want to allow > as a prompt because if the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
   510
# runs for awhile after a command, jdb will show this prompt
90ce3da70b43 Initial load
duke
parents:
diff changeset
   511
# but is not really ready to accept another command for the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   512
# debuggee - ie, a cont in this state will be ignored.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   513
# If it ever becomes necessary to send a jdb command before
90ce3da70b43 Initial load
duke
parents:
diff changeset
   514
# a  main[10] form of prompt appears, then this
90ce3da70b43 Initial load
duke
parents:
diff changeset
   515
# code will have to be modified.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   516
cmd() 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   517
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   518
    if [ $1 = quit -o -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   519
        # if jdb got a cont cmd that caused the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
   520
        # to run to completion, jdb can be gone before
90ce3da70b43 Initial load
duke
parents:
diff changeset
   521
        # we get here.
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   522
        echo "--Sending cmd: quit" >& 2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   523
        echo quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   524
        # See 6562090. Maybe there is a way that the exit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   525
        # can cause jdb to not get the quit.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   526
        sleep 5
90ce3da70b43 Initial load
duke
parents:
diff changeset
   527
        exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   528
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   529
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   530
    # $jdbOutFile always exists here and is non empty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   531
    # because after starting jdb, we waited 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   532
    # for the prompt.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   533
    fileSize=`wc -c $jdbOutFile | awk '{ print $1 }'`
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   534
    echo "--Sending cmd: " $* >&2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   535
90ce3da70b43 Initial load
duke
parents:
diff changeset
   536
    # jjh: We have a few intermittent failures here.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   537
    # It is as if every so often, jdb doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   538
    # get the first cmd that is sent to it here.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   539
    # (actually, I have seen it get the first cmd ok,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   540
    # but then not get some subsequent cmd).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   541
    # It seems like jdb really doesn't get the cmd; jdb's response
90ce3da70b43 Initial load
duke
parents:
diff changeset
   542
    # does not appear in the jxdboutput file. It contains:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   543
    # main[1] 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   544
    # The application has been disconnected
90ce3da70b43 Initial load
duke
parents:
diff changeset
   545
90ce3da70b43 Initial load
duke
parents:
diff changeset
   546
    # Is it possible
90ce3da70b43 Initial load
duke
parents:
diff changeset
   547
    # that jdb got the cmd ok, but its response didn't make
90ce3da70b43 Initial load
duke
parents:
diff changeset
   548
    # it to the jxdboutput file?  If so, why did 'The application
90ce3da70b43 Initial load
duke
parents:
diff changeset
   549
    # has been disconnected' make it?
90ce3da70b43 Initial load
duke
parents:
diff changeset
   550
90ce3da70b43 Initial load
duke
parents:
diff changeset
   551
    # This causes the following loop to timeout and the test to fail.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   552
    # The above echo works because the cmd (stop at ...)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   553
    # is in the System.err shown in the .jtr file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   554
    # Also, the cmd is shown in the 'jdb never responded ...'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   555
    # msg output below after the timeout.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   556
    # And, we know jdb is started because the main[1] output is in the .jtr
90ce3da70b43 Initial load
duke
parents:
diff changeset
   557
    # file.  And, we wouldn't have gotten here if mydojdbcmds hadn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   558
    # seen the ].  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   559
    echo $*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   560
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   561
    # Now we have to wait for the next jdb prompt.  We wait for a pattern
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   562
    # to appear in the last line of jdb output.  Normally, the prompt is
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   563
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   564
    # 1) ^main[89] @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   565
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   566
    # where ^ means start of line, and @ means end of file with no end of line
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   567
    # and 89 is the current command counter. But we have complications e.g.,
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   568
    # the following jdb output can appear:
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   569
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   570
    # 2) a[89] = 10
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   571
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   572
    # The above form is an array assignment and not a prompt.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   573
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   574
    # 3) ^main[89] main[89] ...
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   575
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   576
    # This occurs if the next cmd is one that causes no jdb output, e.g.,
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   577
    # 'trace methods'.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   578
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   579
    # 4) ^main[89] [main[89]] .... > @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   580
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   581
    # jdb prints a > as a prompt after something like a cont.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   582
    # Thus, even though the above is the last 'line' in the file, it
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   583
    # isn't the next prompt we are waiting for after the cont completes.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   584
    # HOWEVER, sometimes we see this for a cont command:
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   585
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   586
    #   ^main[89] $
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   587
    #      <lines output for hitting a bkpt>
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   588
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   589
    # 5) ^main[89] > @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   590
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   591
    # i.e., the > prompt comes out AFTER the prompt we we need to wait for.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   592
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   593
    # So, how do we know when the next prompt has appeared??
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   594
    # 1.  Search for 
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   595
    #         main[89] $
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   596
    #     This will handle cases 1, 2, 3
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   597
    # 2.  This leaves cases 4 and 5.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   598
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   599
    # What if we wait for 4 more chars to appear and then search for
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   600
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   601
    #    main[89] [>]$
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   602
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   603
    # on the last line?
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   604
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   605
    # a.  if we are currently at
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   606
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   607
    #       ^main[89] main[89] @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   608
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   609
    #     and a 'trace methods comes in, we will wait until at least
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   610
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   611
    #       ^main[89] main[89] main@
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   612
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   613
    #     and then the search will find the new prompt when it completes.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   614
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   615
    # b.  if we are currently at
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   616
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   617
    #       ^main[89] main[89] @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   618
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   619
    #     and the first form of cont comes in, then we will see
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   620
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   621
    #       ^main[89] main[89] > $
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   622
    #       ^x@
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   623
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   624
    #     where x is the first char of the msg output when the bkpt is hit
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   625
    #     and we will start our search, which will find the prompt
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   626
    #     when it comes out after the bkpt output, with or without the
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   627
    #     trailing >
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   628
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   629
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   630
    # wait for 4 new chars to appear in the jdb output
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   631
    count=0
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   632
    desiredFileSize=`expr $fileSize + 4`
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   633
    msg1=`echo At start: cmd/size/waiting : $* / $fileSize / \`date\``
90ce3da70b43 Initial load
duke
parents:
diff changeset
   634
    while [ 1 = 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   635
        newFileSize=`wc -c $jdbOutFile | awk '{ print $1 } '`
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   636
        #echo jj: desired = $desiredFileSize, new = $newFileSize >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   637
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   638
        done=`expr $newFileSize \>= $desiredFileSize`
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   639
        if [ $done = 1 ] ; then
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   640
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   641
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   642
        sleep ${sleep_seconds}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   643
        count=`expr $count + 1`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   644
        if [ $count = 30 -o $count = 60 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   645
            # record some debug info.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   646
            echo "--DEBUG: jdb $$ didn't responded to command in $count secs: $*" >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   647
            echo "--DEBUG:" $msg1 >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   648
            echo "--DEBUG: "done size/waiting : / $newFileSize  / `date` >& 2
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   649
            echo "-- $jdbOutFile follows-------------------------------" >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   650
            cat $jdbOutFile >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   651
            echo "------------------------------------------" >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   652
            dojstack
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   653
            #$psCmd | sed -e '/com.sun.javatest/d' -e '/nsk/d' >& 2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   654
            if [ $count = 60 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   655
                dofail "jdb never responded to command: $*"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   656
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   657
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   658
    done
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   659
    # Note that this assumes just these chars in thread names.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   660
    waitForJdbMsg '[a-zA-Z0-9_-][a-zA-Z0-9_-]*\[[1-9][0-9]*\] [ >]*$' \
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   661
        1 allowExit
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   662
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   663
90ce3da70b43 Initial load
duke
parents:
diff changeset
   664
setBkpts()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   665
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   666
    # Can set multiple bkpts, but only in one class.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   667
    # $1 is the bkpt name, eg, @1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   668
    allLines=`$grep -n "$1 *breakpoint" $tmpFileDir/$classname.java.1 | sed -e 's@^\([0-9]*\).*@\1@g'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   669
    for ii in $allLines ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   670
        cmd stop at $pkgDot$classname:$ii
90ce3da70b43 Initial load
duke
parents:
diff changeset
   671
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   672
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   673
90ce3da70b43 Initial load
duke
parents:
diff changeset
   674
runToBkpt()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   675
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   676
    cmd run
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   677
    # Don't need to do this - the above waits for the next prompt which comes out
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   678
    # AFTER the Breakpoint hit message.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   679
    # Wait for jdb to hit the bkpt
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   680
    #waitForJdbMsg "Breakpoint hit" 5
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   681
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   682
90ce3da70b43 Initial load
duke
parents:
diff changeset
   683
contToBkpt()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   684
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   685
    cmd cont
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   686
    # Don't need to do this - the above waits for the next prompt which comes out
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   687
    # AFTER the Breakpoint hit message.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   688
    # Wait for jdb to hit the bkpt
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   689
    #waitForJdbMsg "Breakpoint hit" 5
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   690
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   691
90ce3da70b43 Initial load
duke
parents:
diff changeset
   692
90ce3da70b43 Initial load
duke
parents:
diff changeset
   693
# Wait until string $1 appears in the output file, within the last $2 lines
90ce3da70b43 Initial load
duke
parents:
diff changeset
   694
# If $3 is allowExit, then don't fail if jdb exits before
90ce3da70b43 Initial load
duke
parents:
diff changeset
   695
# the desired string appears.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   696
waitForJdbMsg()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   697
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   698
    # This can be called from the jdb thread which doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   699
    # have access to $debuggeepid, so we have to read it from the file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   700
    nlines=$2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   701
    allowExit="$3"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   702
    myCount=0
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   703
    timeLimit=40  # wait a max of this many secs for a response from a jdb command
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   704
    while [ 1 = 1 ] ; do 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   705
        if [  -r $jdbOutFile ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   706
            # Something here causes jdb to complain about Unrecognized cmd on x86.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   707
            tail -$nlines $jdbOutFile | $grep -s "$1" > $devnull 2>&1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   708
            if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   709
                # Found desired string
90ce3da70b43 Initial load
duke
parents:
diff changeset
   710
                break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   711
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   712
	fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   713
	tail -2 $jdbOutFile | $grep -s "The application exited" > $devnull 2>&1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   714
	if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   715
            # Found 'The application exited'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   716
            if [ ! -z "$allowExit" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   717
                break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   718
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   719
            # Otherwise, it is an error if we don't find $1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   720
	    if [  -r $jdbOutFile ] ; then 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   721
		tail -$nlines $jdbOutFile | $grep -s "$1" > $devnull 2>&1		
90ce3da70b43 Initial load
duke
parents:
diff changeset
   722
                if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   723
		   break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   724
		fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   725
	    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   726
            dofail "Waited for jdb msg $1, but it never appeared"	            
90ce3da70b43 Initial load
duke
parents:
diff changeset
   727
	fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   728
90ce3da70b43 Initial load
duke
parents:
diff changeset
   729
        sleep ${sleep_seconds}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   730
        findPid $topPid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   731
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   732
            # Top process is dead.  We better die too
90ce3da70b43 Initial load
duke
parents:
diff changeset
   733
            dojstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   734
            exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   735
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   736
90ce3da70b43 Initial load
duke
parents:
diff changeset
   737
        myCount=`expr $myCount + ${sleep_seconds}`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   738
        if [ $myCount -gt $timeLimit ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   739
            echo "--Fail: waitForJdbMsg timed out after $timeLimit seconds, looking for /$1/, in $nlines lines; exitting" >> $failFile
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   740
            echo "vv jdbOutFile  vvvvvvvvvvvvvvvvvvvvvvvvvvvv" >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   741
            cat $jdbOutFile >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   742
            echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" >& 2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   743
            dojstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   744
            exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   745
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   746
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   747
90ce3da70b43 Initial load
duke
parents:
diff changeset
   748
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   749
90ce3da70b43 Initial load
duke
parents:
diff changeset
   750
# $1 is the string to print.  If $2 exists,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   751
# it is the name of a file to print, ie, the name
90ce3da70b43 Initial load
duke
parents:
diff changeset
   752
# of the file that contains the $1 string.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   753
dofail()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   754
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   755
    if [ ! -z "$jdbpid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
        # we are in the main process instead of the jdb process
90ce3da70b43 Initial load
duke
parents:
diff changeset
   757
        echo " " >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   758
        echo "--Fail: main: $*" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   759
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   760
        # Kill the debuggee ; it could be hung so
90ce3da70b43 Initial load
duke
parents:
diff changeset
   761
        # we want to get rid of it as soon as possible.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   762
        killOrphans "killing debuggee" $debuggeeKeyword
90ce3da70b43 Initial load
duke
parents:
diff changeset
   763
90ce3da70b43 Initial load
duke
parents:
diff changeset
   764
        echo " "  >>$failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   765
        echo "--Fail: $*" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   766
        echo quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   767
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   768
    if [ ! -z "$2" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   769
        echo  "---- contents of $2 follows -------" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   770
        cat "$2" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   771
        echo "---------------" >>$failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   772
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   773
    exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   774
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   775
90ce3da70b43 Initial load
duke
parents:
diff changeset
   776
90ce3da70b43 Initial load
duke
parents:
diff changeset
   777
redefineClass() 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   778
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   779
    if [ -z "$1" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   780
        vers=2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   781
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   782
        vers=`echo $1 | sed -e 's/@//'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   783
        vers=`expr $vers + 1`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   784
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   785
        
90ce3da70b43 Initial load
duke
parents:
diff changeset
   786
    cmd redefine $pkgDot$classname $tmpFileDir/vers$vers/$classname.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   787
90ce3da70b43 Initial load
duke
parents:
diff changeset
   788
    cp $tmpFileDir/$classname.java.$vers \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   789
       $tmpFileDir/$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   790
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   791
90ce3da70b43 Initial load
duke
parents:
diff changeset
   792
mydojdbCmds()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   793
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   794
   # Wait for jdb to start before we start sending cmds
90ce3da70b43 Initial load
duke
parents:
diff changeset
   795
   waitForJdbMsg ']' 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   796
   dojdbCmds
90ce3da70b43 Initial load
duke
parents:
diff changeset
   797
   cmd quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   798
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   799
90ce3da70b43 Initial load
duke
parents:
diff changeset
   800
startJdb()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   801
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   802
    if [ ! -r "$jdb" -a ! -r "$jdb.exe" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   803
        dofail "$jdb does not exist"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   804
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   805
    echo
90ce3da70b43 Initial load
duke
parents:
diff changeset
   806
    echo "--Starting jdb, address=$address"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   807
    if [ -z "$address" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   808
       # Let jdb choose the port and write it to stdout
90ce3da70b43 Initial load
duke
parents:
diff changeset
   809
       mydojdbCmds | $jdb $jdbOptions -listenany | tee $jdbOutFile &
90ce3da70b43 Initial load
duke
parents:
diff changeset
   810
90ce3da70b43 Initial load
duke
parents:
diff changeset
   811
       while [ 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   812
           lastLine=`$grep 'Listening at address' $jdbOutFile`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   813
           if [ ! -z "$lastLine" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   814
               break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   815
           fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   816
           sleep 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   817
       done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   818
       # jjh: we got the address ok, and seemed to start the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
   819
       address=`echo $lastLine | sed -e 's@.*: *@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   820
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   821
       mydojdbCmds | $jdb $jdbOptions -listen $address | tee $jdbOutFile &
90ce3da70b43 Initial load
duke
parents:
diff changeset
   822
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   823
    #echo address = $address
90ce3da70b43 Initial load
duke
parents:
diff changeset
   824
90ce3da70b43 Initial load
duke
parents:
diff changeset
   825
90ce3da70b43 Initial load
duke
parents:
diff changeset
   826
    # this gets the pid of tee, at least it does on solaris
90ce3da70b43 Initial load
duke
parents:
diff changeset
   827
    jdbpid=$!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   828
90ce3da70b43 Initial load
duke
parents:
diff changeset
   829
    # This fails on linux because there is an entry for each thread in jdb
90ce3da70b43 Initial load
duke
parents:
diff changeset
   830
    # so we get a list of numbers in jdbpid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   831
    # jdbpid=`$psCmd | $grep -v grep | $grep ${orphanKeyword}_JDB | awk '{print $1}'  | tr '\n\r' '  '`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   832
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   833
90ce3da70b43 Initial load
duke
parents:
diff changeset
   834
startDebuggee()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   835
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   836
    args=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   837
    # Note that @debuggeeVMOptions is unique to a test run instead of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   838
    # a test in a run.  It is not modified during a test run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   839
    if [ -r $TESTCLASSES/../@debuggeeVMOptions ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   840
       args=`cat $TESTCLASSES/../@debuggeeVMOptions`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   841
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   842
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   843
    if [ ! -z "$args" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   844
       echo "--Starting debuggee with args from @debuggeeVMOptions: $args"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   845
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   846
       echo "--Starting debuggee"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   847
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   848
90ce3da70b43 Initial load
duke
parents:
diff changeset
   849
    debuggeepid=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   850
    waitForJdbMsg Listening 4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   851
90ce3da70b43 Initial load
duke
parents:
diff changeset
   852
    beOption="-agentlib:jdwp=transport=$transport,address=$address,server=n,suspend=y"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   853
#   beOption="-Xdebug -Xrunjdwp:transport=$transport,address=$address,server=n,suspend=y"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   854
90ce3da70b43 Initial load
duke
parents:
diff changeset
   855
    thecmd="$jdk/bin/$java $mode -classpath $tmpFileDir $baseArgs $args \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   856
            -Djtreg.classDir=$TESTCLASSES \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   857
            -showversion \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   858
             $beOption \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   859
             $pkgDot$classname"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   860
    echo "Cmd: $thecmd"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   861
90ce3da70b43 Initial load
duke
parents:
diff changeset
   862
    sh -c "$thecmd | tee $debuggeeOutFile" &
90ce3da70b43 Initial load
duke
parents:
diff changeset
   863
90ce3da70b43 Initial load
duke
parents:
diff changeset
   864
    # Note that the java cmd and the tee cmd will be children of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   865
    # the sh process.  We can use that to find them to kill them.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   866
    debuggeepid=$!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   867
90ce3da70b43 Initial load
duke
parents:
diff changeset
   868
    # Save this in a place where the jdb process can find it.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   869
    # Note that it is possible for the java cmd to abort during startup
90ce3da70b43 Initial load
duke
parents:
diff changeset
   870
    # due to a bad classpath or whatever.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   871
    echo $debuggeepid > $debuggeepidFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   872
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   873
90ce3da70b43 Initial load
duke
parents:
diff changeset
   874
dojstack()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   875
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   876
    if [ -r "$jdk/bin/$jstack" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   877
        # If jstack exists, so will jps
90ce3da70b43 Initial load
duke
parents:
diff changeset
   878
        # Show stack traces of jdb and debuggee as a possible debugging aid.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   879
        jdbCmd=`$jdk/bin/jps -v | $grep $jdbKeyword`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   880
        realJdbPid=`echo "$jdbCmd" | sed -e 's@ TTY.*@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   881
        if [ ! -z "$realJdbPid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   882
            echo "-- jdb process info ----------------------" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   883
            echo "      $jdbCmd"                              >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   884
            echo "-- jdb threads: jstack $realJdbPid"         >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   885
            $jdk/bin/$jstack $realJdbPid                      >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   886
            echo "------------------------------------------" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   887
            echo                                              >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   888
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   889
        debuggeeCmd=`$jdk/bin/jps -v | $grep $debuggeeKeyword`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   890
        realDebuggeePid=`echo "$debuggeeCmd" | sed -e 's@ .*@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   891
        if [ ! -z "$realDebuggeePid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   892
            if [ -r "$jdk/lib/sa-jdi.jar" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   893
                # disableVersionCheck can be removed after 6475822
90ce3da70b43 Initial load
duke
parents:
diff changeset
   894
                # is fixed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   895
                moption="-m -J-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   896
            else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   897
                moption=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   898
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   899
90ce3da70b43 Initial load
duke
parents:
diff changeset
   900
            echo "-- debuggee process info ----------------------" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   901
            echo "      $debuggeeCmd"                              >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   902
            echo "-- debuggee threads: jstack $moption $realDebuggeePid" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   903
            $jdk/bin/$jstack $moption $realDebuggeePid             >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   904
            echo "============================================="   >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   905
            echo                                                   >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   906
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   907
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   908
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   909
90ce3da70b43 Initial load
duke
parents:
diff changeset
   910
waitForFinish()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   911
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   912
    # This is the main process
90ce3da70b43 Initial load
duke
parents:
diff changeset
   913
    # Wait for the jdb process to finish, or some error to occur
90ce3da70b43 Initial load
duke
parents:
diff changeset
   914
90ce3da70b43 Initial load
duke
parents:
diff changeset
   915
    while [ 1 = 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   916
        findPid $jdbpid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   917
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   918
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   919
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   920
        if [ ! -z "$isWin98" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   921
           $psCmd | $grep -i 'JDB\.EXE' >$devnull 2>&1 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   922
           if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   923
               break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   924
           fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   925
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   926
        $grep -s 'Input stream closed' $jdbOutFile > $devnull 2>&1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   928
            #something went wrong
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
            dofail "jdb input stream closed prematurely"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   930
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   931
90ce3da70b43 Initial load
duke
parents:
diff changeset
   932
        # If a failure has occured, quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
        if [ -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   934
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   935
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   936
90ce3da70b43 Initial load
duke
parents:
diff changeset
   937
        sleep ${sleep_seconds}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   938
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   939
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
    if [ -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   941
        exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   942
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   943
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   944
90ce3da70b43 Initial load
duke
parents:
diff changeset
   945
# $1 is the filename, $2 is the string to look for,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   946
# $3 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   947
grepForString()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   948
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   949
    # See bug 6220903.  Sometimes the jdb '> ' prompt chars
90ce3da70b43 Initial load
duke
parents:
diff changeset
   950
    # get inserted into the string we are searching for 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   951
    # so ignore those chars.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   952
    if [ -z "$3" ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   953
        theCmd=cat
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   954
    else
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   955
        theCmd="tail -$3"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   956
    fi
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   957
    case "$2" in 
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   958
      *\>*)
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   959
        # Target string contains a > so we better
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   960
        # not ignore it
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   961
        $theCmd $1 | $grep -s "$2"  > $devnull 2>&1
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   962
        return $?
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   963
        ;;
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   964
    esac
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   965
    # Target string does not contain a >.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   966
    # Ignore > and '> ' in the file.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   967
    # NOTE:  if $1 does not end with a new line, piping it to sed doesn't include the
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   968
    # chars on the last line.  Detect this case, and add a new line.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   969
    cp $1 $1.tmp
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   970
    if [ `tail -1 $1.tmp | wc -l | sed -e 's@ @@g'` = 0 ] ; then
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   971
        echo >> $1.tmp
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   972
    fi
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   973
    $theCmd $1.tmp | sed -e 's@> @@g' -e 's@>@@g' | $grep -s "$2" > $devnull 2>&1
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   974
    stat=$?
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   975
    rm -f $1.tmp
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   976
    return $stat
90ce3da70b43 Initial load
duke
parents:
diff changeset
   977
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   978
90ce3da70b43 Initial load
duke
parents:
diff changeset
   979
# $1 is the filename, $2 is the string to look for,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   980
# $3 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   981
failIfPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   982
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   983
    if [ -r "$1" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   984
        grepForString "$1" "$2" "$3"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   985
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   986
            dofail "Error output found: \"$2\" in $1" $1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   987
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   988
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   989
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   990
90ce3da70b43 Initial load
duke
parents:
diff changeset
   991
# $1 is the filename, $2 is the string to look for
90ce3da70b43 Initial load
duke
parents:
diff changeset
   992
# $3 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   993
failIfNotPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   994
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   995
    if [ ! -r "$1" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   996
        dofail "Required output \"$2\" not found in $1"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   997
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   998
    grepForString "$1" "$2" "$3"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   999
    if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1000
        dofail "Required output \"$2\" not found in $1" $1
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1001
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1002
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1003
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1004
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1005
# fail if $1 is not in the jdb output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1006
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1007
jdbFailIfNotPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1008
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1009
    failIfNotPresent $jdbOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1010
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1011
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1012
# fail if $1 is not in the debuggee output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1013
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1014
debuggeeFailIfNotPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1015
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1016
    failIfNotPresent $debuggeeOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1017
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1018
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1019
# fail if $1 is in the jdb output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1020
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1021
jdbFailIfPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1022
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1023
    failIfPresent $jdbOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1024
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1025
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1026
# fail if $1 is in the debuggee output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1027
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1028
debuggeeFailIfPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1029
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1030
    failIfPresent $debuggeeOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1031
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1032
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1033
# This should really be named 'done' instead of pass.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1034
pass()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1035
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1036
    if [ ! -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1037
        echo
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1038
        echo "--Done: test passed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1039
        exit 0
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1040
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1041
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1042
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1043
runit()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1044
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1045
    setup
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1046
    runitAfterSetup
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1047
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1048
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1049
runitAfterSetup()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1050
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1051
    docompile
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1052
    startJdb 
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1053
    startDebuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1054
    waitForFinish
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1055
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1056
    # in hs_err file from 1.3.1
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1057
    debuggeeFailIfPresent "Virtual Machine Error"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1058
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1059
    # in hs_err file from 1.4.2, 1.5:  An unexpected error
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1060
    debuggeeFailIfPresent "An unexpected error"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1061
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1062
    # in hs_err file from 1.4.2, 1.5:  Internal error
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1063
    debuggeeFailIfPresent "Internal error"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1064
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1065
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1066
    # Don't know how this arises
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1067
    debuggeeFailIfPresent "An unexpected exception"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1068
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1069
    # Don't know how this arises
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1070
    debuggeeFailIfPresent "Internal exception"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1071
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1072
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1073