-
Bug
-
Resolution: Fixed
-
P4
-
1.4.0_02, 1.4.1, 1.4.2, 5.0, 6, 7, 8
-
b01
-
generic, sparc
-
generic, solaris_7
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8334268 | openjdk8u432 | Kazuhisa Takakuri | P4 | Resolved | Fixed | b01 |
JDK-8254728 | 8u361 | Adithya Haradi Gopal | P4 | Resolved | Fixed | b01 |
Name: dkR10014 Date: 03/29/2002
The following testbase_nsk test:
nsk/jdb/set/set001
fails on all platforms (Solsparc, Solx86, Win, Linux) in all debugged VM mode.
The test works as follows:
the jdb stops the debuggee inside the debuggee's runIt() method and then tries
to set new values for the fields and local variables using 'set <lvalue> = <expr>'
command. Then the debuggee checks if modified fields/variables have expected
values. If not, then special errorMessage variable is appended with
the info of wrong values. The test passes when length of errorMessage
is equal to 0, and fails otherwise. There are two programs in the test:
set001.java - launches jdb and debuggee, writes commands to jdb, reads the jdb output,
set001a.java - the debugged application.
The NumberFormatException is reported in two test cases:
- assigning value equals to decimal represenation of Integer.MIN_VALUE,
- assigning value equals to decimal represenation of Long.MAX_VALUE.
(Please see another cases with NumberFormatException at the end of bug description.)
Error output:
# ERROR: jdb failed to set value for expression(s):
# ERROR: nsk.jdb.set.set001a.errorMessage = "
# ERROR: Wrong value of set001a.myStaticField: 0, expected: -2147483648
# ERROR: Wrong value of _set001a.myInstanceField: 0, expected: 9223372036854775807"
# ERROR: main[1]
# ERROR: TEST FAILED
Below is jdb stdout log redirected to jdb.stdout file:
------------------------------------------------------------------
Initializing jdb ...
>
<<COMMAND>>stop in nsk.jdb.set.set001a.main
Deferring breakpoint nsk.jdb.set.set001a.main.
It will be set after the class is loaded.
>
<<COMMAND>>run
run nsk.jdb.set.set001a
>
VM Started: Set deferred breakpoint nsk.jdb.set.set001a.main
Breakpoint hit: "thread=main", nsk.jdb.set.set001a.main(), line=22 bci=0
main[1]
<<COMMAND>>stop in nsk.jdb.set.set001a.lastBreak
Set breakpoint nsk.jdb.set.set001a.lastBreak
main[1]
<<COMMAND>>cont
>
Breakpoint hit: "thread=main", nsk.jdb.set.set001a.lastBreak(), line=25 bci=0
main[1]
<<COMMAND>>step
>
Step completed: "thread=main", nsk.jdb.set.set001a.runIt(), line=36 bci=30
main[1]
<<COMMAND>>set nsk.jdb.set.set001a.myStaticField = -2147483648
java.lang.NumberFormatException: For input string: "2147483648"
nsk.jdb.set.set001a.myStaticField = -2147483648 = null
main[1]
<<COMMAND>>set nsk.jdb.set.set001a._set001a.myInstanceField = 9223372036854775807
java.lang.NumberFormatException: For input string: "9223372036854775807"
nsk.jdb.set.set001a._set001a.myInstanceField = 9223372036854775807 = null
main[1]
<<COMMAND>>set nsk.jdb.set.set001a._set001a.myArrayField[0][0].line = "ABCDE"
nsk.jdb.set.set001a._set001a.myArrayField[0][0].line = "ABCDE" = "ABCDE"
main[1]
<<COMMAND>>set localInt = java.lang.Integer.MIN_VALUE
localInt = java.lang.Integer.MIN_VALUE = -2147483648
main[1]
<<COMMAND>>cont
>
Breakpoint hit: "thread=main", nsk.jdb.set.set001a.lastBreak(), line=25 bci=0
main[1]
<<COMMAND>>eval nsk.jdb.set.set001a.errorMessage
nsk.jdb.set.set001a.errorMessage = "
Wrong value of set001a.myStaticField: 0, expected: -2147483648
Wrong value of _set001a.myInstanceField: 0, expected: 9223372036854775807"
main[1]
<<COMMAND>>cont
>
The application exited
------------------------------------------------------------------
How to reproduce:
1. cd /net/sqesvr.sfbay/export/vsn/GammaBase/Bugs/{this_bug_number}
2. sh doit.sh <JAVA_HOME>
The test will appear in the next testbase_nsk r13 relase.
When I tried to set other various values manually in jdb session,
there were following results.
For integer field:
main[1] set nsk.jdb.set.set001a.myStaticField = -1
operation not yet supported
nsk.jdb.set.set001a.myStaticField = -1 = null
main[1] set nsk.jdb.set.set001a.myStaticField = java.lang.Integer.MAX_VALUE
nsk.jdb.set.set001a.myStaticField = java.lang.Integer.MAX_VALUE = 2147483647
main[1] set nsk.jdb.set.set001a.myStaticField = 2147483647
nsk.jdb.set.set001a.myStaticField = 2147483647 = 2147483647
main[1] set nsk.jdb.set.set001a.myStaticField = 0x80000000
java.lang.NumberFormatException: For input string: "0x80000000"
nsk.jdb.set.set001a.myStaticField = 0x80000000 = null
main[1] set nsk.jdb.set.set001a.myStaticField = 0x7fffffff
java.lang.NumberFormatException: For input string: "0x7fffffff"
nsk.jdb.set.set001a.myStaticField = 0x7fffffff = null
main[1] set nsk.jdb.set.set001a.myStaticField = 0x1
java.lang.NumberFormatException: For input string: "0x1"
nsk.jdb.set.set001a.myStaticField = 0x1 = null
For long field:
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = -1
operation not yet supported
nsk.jdb.set.set001a._set001a.myInstanceField = -1 = null
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Integer.MAX_VALUE
nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Integer.MAX_VALUE = 2147483647
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Integer.MAX_VALUE+1
nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Integer.MAX_VALUE+1 = -2147483648
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Long.MAX_VALUE
com.sun.tools.example.debug.expr.ParseException: Name unknown: java.lang.Long.MAX_VALUE
nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Long.MAX_VALUE = null
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Long.MIN_VALUE
com.sun.tools.example.debug.expr.ParseException: Name unknown: java.lang.Long.MIN_VALUE
nsk.jdb.set.set001a._set001a.myInstanceField = java.lang.Long.MIN_VALUE = null
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = 9223372036854775807L
java.lang.NumberFormatException: For input string: "9223372036854775807L"
nsk.jdb.set.set001a._set001a.myInstanceField = 9223372036854775807L = null
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = 1L
java.lang.NumberFormatException: For input string: "1L"
nsk.jdb.set.set001a._set001a.myInstanceField = 1L = null
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = 0x8000000000000000L
java.lang.NumberFormatException: For input string: "0x8000000000000000L"
nsk.jdb.set.set001a._set001a.myInstanceField = 0x8000000000000000L = null
main[1] set nsk.jdb.set.set001a._set001a.myInstanceField = 0x7fffffffffffffffL
java.lang.NumberFormatException: For input string: "0x7fffffffffffffffL"
nsk.jdb.set.set001a._set001a.myInstanceField = 0x7fffffffffffffffL = null
======================================================================
- backported by
-
JDK-8254728 TTY: NumberFormatException while trying to set values by 'set' command
- Resolved
-
JDK-8334268 TTY: NumberFormatException while trying to set values by 'set' command
- Resolved
- relates to
-
JDK-4516977 TTY: finish expression evaluation implementation
- Closed
-
JDK-8030204 com/sun/jdi/JdbExprTest.sh: Required output "Can\\'t convert 2147483648 to int" not found
- Resolved
(1 links to)