-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
1.3.0
-
sparc
-
solaris_7
Name: dkC59003 Date: 12/09/99
The regression test (testbase_nsk) nsk/regression/b4289162 causes crash of
the HotSparc 1.3-Q on Solaris.
The test sets BREAKPOINT in emptyMethod and when BREAKPOINT
is caught the test calls
SetEventNotificationMode(JVMDI_ENABLE, JVMDI_EVENT_SINGLE_STEP, ...)
method, which crashes VM.
It had been checked that the same happens with not-empty method.
To reproduce the bug run doit.sh on Solaris and doit.bat on win32 in
GammaBase/Bugs/<this bug number>.
See logs and java source below.
Comments in java source code indicate the line that causes the crash.
If this line is commented out the HotSparc (build 1.3-Q) does not crash,
but the test fails as it is reported in bug #4294585 - its development
status is NYI (for today).
The test crashes classic VM with bus error.
The test causes crash of the HotSpot 1.3fcs-Q on win32 no matter
there is the line causing crash of HotSparc or not.
The BugReport ID: 4297945 had been filed for this case.
Logs:
% doit.sh
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-Q)
Java HotSpot(TM) Client VM (build 1.3-Q, interpreted mode)
----> breakpoint_init: BREAKPOINT is set for b4289162.emptyMethod()
----> catch_BREAKPOINT: breakpoint_counter = 1
#
# HotSpot Virtual Machine Error, Unexpected Signal 10
#
# Error ID: 4F533F534F4C415249530E43505007B5 01
#
(Error ID: os_solaris.cpp, 1973)
% doit.sh -classic
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-Q)
Classic VM (build 1.3.0-Q, green threads, nojit)
----> breakpoint_init: BREAKPOINT is set for b4289162.emptyMethod()
----> catch_BREAKPOINT: breakpoint_counter = 1
SIGBUS 10* bus error
si_signo [10]: SIGBUS 10* bus error
si_errno [0]: Error 0
si_code [1]: BUS_ADRALN [addr: 0x1]
------------------------------ java source -----------------------
public class b4289162 {
static int emptyMethod_call_counter;
static int emptyMethod_exit_counter;
static int emptyMethod_call_number;
static int breakpoint_counter;
static int v_set_EVENT_SINGLE_STEP_err;
static int v_unset_EVENT_SINGLE_STEP_err;
static int EVENT_SINGLE_STEP_catch_counter;
public static int run(String argv[], java.io.PrintStream out) {
emptyMethod_call_number = 5;
emptyMethod_call_counter=0;
v_set_EVENT_SINGLE_STEP_err = -1;
v_unset_EVENT_SINGLE_STEP_err = -1;
EVENT_SINGLE_STEP_catch_counter = 0;
if ( breakpointInit(Thread.currentThread()) == -1 ) {
System.out.println("----> Test nsk/regression/4289162 FAILED" );
System.out.println("----> ERROR in breakpoint_init() Method!");
return 2/*STATUS_FAILED*/;
}
for ( ; emptyMethod_call_counter < emptyMethod_call_number; ){
emptyMethod_call_counter++;
// the next line causes crash of the HotSparc (build 1.3-Q)
// if this line is commented out the HotSparc (build 1.3-Q) does not crashes
System.out.println("----> RUN: emptyMethod_call_counter = " + emptyMethod_call_counter);
emptyMethod();
emptyMethod_exit_counter++;
/*DEBUG
System.out.println("----> RUN: emptyMethod_exit_counter = " + emptyMethod_exit_counter);
*/
}
breakpoint_counter = getBreakpointCounter();
if ( breakpoint_counter == -1 ) {
System.out.println("----> Test nsk/regression/4289162 FAILED" );
System.out.println("----> ERROR in getBreakpointCounter() Method!");
return 2/*STATUS_FAILED*/;
}
if ( (breakpoint_counter != emptyMethod_call_number)
|| (v_set_EVENT_SINGLE_STEP_err == 1)
|| (v_unset_EVENT_SINGLE_STEP_err == 1)
|| (EVENT_SINGLE_STEP_catch_counter == 0) ) {
System.out.println("----> Test nsk/regression/4289162 FAILED" );
System.out.println("----> Expected result: breakpoint_counter = " +
emptyMethod_call_number);
System.out.println("----> Set_EVENT_SINGLE_STEP = MADE");
System.out.println("----> UnSet_EVENT_SINGLE_STEP = MADE");
System.out.println("----> EVENT_SINGLE_STEP_catch_counter = 1");
System.out.println("----> Produced result: breakpoint_counter = " + breakpoint_counter);
if ( v_set_EVENT_SINGLE_STEP_err == -1 ) {
System.out.println("----> Set_EVENT_SINGLE_STEP = NOT CALLED");
}
if ( v_set_EVENT_SINGLE_STEP_err == 1 ) {
System.out.println("----> Set_EVENT_SINGLE_STEP = ERROR");
}
if ( v_set_EVENT_SINGLE_STEP_err == 0 ) {
System.out.println("----> Set_EVENT_SINGLE_STEP = MADE");
}
if ( v_unset_EVENT_SINGLE_STEP_err == -1 ) {
System.out.println("----> UnSet_EVENT_SINGLE_STEP = NOT CALLED");
}
if ( v_unset_EVENT_SINGLE_STEP_err == 1 ) {
System.out.println("----> UnSet_EVENT_SINGLE_STEP = ERROR");
}
if ( v_unset_EVENT_SINGLE_STEP_err == 0 ) {
System.out.println("----> UnSet_EVENT_SINGLE_STEP = MADE");
}
System.out.println("----> EVENT_SINGLE_STEP_catch_counter =
"+EVENT_SINGLE_STEP_catch_counter);
return 2/*STATUS_FAILED*/;
}
//*DEBUG
System.out.println("----> Test nsk/regression/4289162 PASSED" );
System.out.println("----> Produced (expected) result: breakpoint_counter = " +
emptyMethod_call_number);
System.out.println("----> Set_EVENT_SINGLE_STEP = MADE");
System.out.println("----> UnSet_EVENT_SINGLE_STEP = MADE");
System.out.println("----> EVENT_SINGLE_STEP_catch_counter = 1");
//*/
return 0/*STATUS_PASSED*/;
}
public static void emptyMethod(){
}
public static void main(String argv[]) {
System.exit(run(argv, System.out) + 95/*STATUS_TEMP*/);
}
native static int breakpointInit(Thread currentTread);
native static int getBreakpointCounter();
static {
try {
System.loadLibrary("b4289162");
/*DEBUG
System.out.println("----> loadLibrary(\"b4289162\") - COMPLETED");
*/
}
catch (UnsatisfiedLinkError ule) {
System.out.println("----> Could not load b4289162 library");
System.out.println("----> java.library.path:" + System.getProperty("java.library.path"));
throw ule;
}
}
} // end of b4289162 Class
------------------------------ end of java source -----------------------
======================================================================
Name: dkC59003 Date: 12/20/99
The following fragment in the Description is wrong:
"
Comments in java source code indicate the line that causes the crash.
If this line is commented out the HotSparc (build 1.3-Q) does not crash,
but the test fails as it is reported in bug #4294585 - its development
status is NYI (for today).
"
It's correct version is:
"
Comments in java source code indicate the line that the crash depends on.
If this line is commented out the HotSparc (build 1.3-Q) crashes.
Otherwise HotSparc (build 1.3-Q) does not crash,
but the test fails as it is reported in bug #4294585 - its State
is "evaluated" (for today - 12.21.99).
"
And the corresponding fragment in the java source:
"
// th next line causes crash of the HotSparc (build 1.3-Q)
// if this line is commented out the HotSparc (build 1.3-Q) does not crashes
System.out.println("----> RUN: emptyMethod_call_counter = " + emptyMethod_call_counter);
"
should be the following:
"
// the crash of the HotSparc (build 1.3-Q) depends on the next line:
// if this line is commented out the HotSparc (build 1.3-Q) crashes
// otherwise HotSparc (build 1.3-Q) does not crash
// System.out.println("----> RUN: emptyMethod_call_counter = " + emptyMethod_call_counter);
"
======================================================================
- relates to
-
JDK-4289162 Application is running to completion for a break point in Empty Method
- Closed
-
JDK-4300914 Test nsk/regression/4289162 FAILED
- Closed
-
JDK-4294585 HotSpot 1.3fcs-P generates unexpected JVMDI_EVENT_BREAKPOINT events on Solaris
- Closed
-
JDK-4297945 JVMDI:HotSpot VM crashes when JVMDI_EVENT_SINGLE_STEP is set after BREAKPOINT
- Closed