hotspot/test/runtime/7158988/TestFieldMonitor.sh
author coleenp
Thu, 05 Apr 2012 12:17:52 -0400
changeset 12366 76be8878c0cd
child 12729 684b5857e506
permissions -rw-r--r--
7158988: jvm crashes while debugging on x86_32 and x86_64 Summary: Object pointer is pushed more than once on stack, where GC doesn't expect it. Reviewed-by: coleenp, kvn Contributed-by: axel.siebenborn@sap.com

#!/bin/sh

if [ "${TESTSRC}" = "" ]
then TESTSRC=.
fi

if [ "${TESTJAVA}" = "" ]
then
  PARENT=`dirname \`which java\``
  TESTJAVA=`dirname ${PARENT}`
  echo "TESTJAVA not set, selecting " ${TESTJAVA}
  echo "If this is incorrect, try setting the variable manually."
fi

if [ "${TESTCLASSES}" = "" ]
then
  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
  exit 1
fi

BIT_FLAG=""

# set platform-dependent variables
OS=`uname -s`
case "$OS" in
  SunOS | Linux )
    NULL=/dev/null
    PS=":"
    FS="/"
    ## for solaris, linux it's HOME
    FILE_LOCATION=$HOME
    if [ -f ${FILE_LOCATION}${FS}JDK64BIT -a ${OS} = "SunOS" -a `uname -p`='sparc' ]
    then
        BIT_FLAG="-d64"
    fi
    ;;
  Windows_95 | Windows_98 | Windows_ME )
    NULL=NUL
    PS=";"
    FS="\\"
    echo "Test skipped, only for WinNT"
    exit 0
    ;;
  Windows_NT )
    NULL=NUL
    PS=";"
    FS="\\"
    ;;
  * )
    echo "Unrecognized system!"
    exit 1;
    ;;
esac

#CLASSPATH=.${PS}${TESTCLASSES} ; export CLASSPATH

cp ${TESTSRC}${FS}*.java .

${TESTJAVA}${FS}bin${FS}java ${BIT_FLAG} -fullversion

${TESTJAVA}${FS}bin${FS}javac -classpath .${PS}$TESTJAVA${FS}lib${FS}tools.jar *.java

${TESTJAVA}${FS}bin${FS}java ${BIT_FLAG} -classpath .${PS}$TESTJAVA${FS}lib${FS}tools.jar FieldMonitor > test.out 2>&1 &

P_PID=$!

sleep 60
STATUS=0

case "$OS" in
    SunOS | Linux )
        ps -ef | grep $P_PID | grep -v grep > ${NULL}
        if [ $? = 0 ]; then
            kill -9 $P_PID
            STATUS=1
        fi
        ;;
      * )
        ps | grep -i "FieldMonitor" | grep -v grep > ${NULL}
        if [ $? = 0 ]; then
            C_PID=`ps | grep -i "FieldMonitor" | awk '{print $1}'`
            kill -s 9 $C_PID
            STATUS=1
        fi
        ;;
esac

grep "A fatal error has been detected" test.out > ${NULL}
if [ $? = 0 ]; then
    cat test.out
    STATUS=1
fi

exit $STATUS