This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
java/1113: Bad array or type conversion bug when compiling bytecode
- To: java-gnats at sourceware dot cygnus dot com
- Subject: java/1113: Bad array or type conversion bug when compiling bytecode
- From: mdw at cs dot berkeley dot edu
- Date: 22 Nov 1999 05:44:40 -0000
- Cc: bryce at albatross dot co dot nz
- Reply-To: mdw at cs dot berkeley dot edu
>Number: 1113
>Category: java
>Synopsis: Bad array or type conversion bug when compiling bytecode
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: apbianco
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Dec 20 12:06:08 PST 2000
>Closed-Date: Tue Mar 07 19:13:58 PST 2000
>Last-Modified: Tue Mar 7 19:16:00 PST 2000
>Originator: Matt Welsh <mdw@cs.berkeley.edu>
>Release: gcc 2.95.2
>Organization:
>Environment:
Linux x86 Red Hat 6.0
>Description:
Apparently there is a bug in either array references or type
conversion which occurs only when compiling Java bytecode,
and varies depending on the level of optimization used. In
this example, code compiled with -O2 exhibits the bug, but
-O does not.
The code which exhibits this bug is rather simple; it is a
routine which takes a 'short' and writes two bytes of the
short into a byte array (it is part of a hand-coded
serialization routine). Note the use of a loop to do the
array reference as well as the ugly type-casting; I realize
that this is not beautiful code but it does show the bug
in a simple test case.
>How-To-Repeat:
Compile the given test program with 'javac' or 'jikes' to
bytecode. Compile with gcj 2.95.2 with:
'gcj -O2 --main=PutShort -o PutShort PutShort.class'
Then run 'PutShort'.
The program calls 'put_short' in a loop to write the
values 0..50 to a byte array containing 100 bytes, and
then prints out the contents of the byte array. Correct
output should be the hex values for the shorts 0..50 in
sequence; incorrect output is usually random bytes.
>Fix:
Apply the patch...
1999-11-28 Anthony Green <green@cygnus.com>
* decl.c (find_local_variable): Reuse single slot decls when
appropriate.
>Release-Note:
I think pr107-patch should be revised like
pr107-patch-revised indicates.
>Audit-Trail:
Formerly PR gcj/107
State-Changed-From-To: open->feedback
State-Changed-By: green
State-Changed-When: Sun Nov 28 10:28:22 1999
State-Changed-Why:
I've attached a patch. Please try it and let me know if
it works for you.
From: green@cygnus.com
To: apbianco@cygnus.com, bryce@albatross.co.nz,
java-gnats@sourceware.cygnus.com, mdw@cs.berkeley.edu
Cc:
Subject: Re: gcj/107
Date: 28 Nov 1999 18:28:23 -0000
Synopsis: Bad array or type conversion bug when compiling bytecode
State-Changed-From-To: open->feedback
State-Changed-By: green
State-Changed-When: Sun Nov 28 10:28:22 1999
State-Changed-Why:
I've attached a patch. Please try it and let me know if
it works for you.
http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=107&database=java
State-Changed-From-To: feedback->closed
State-Changed-By: apbianco
State-Changed-When: Tue Mar 7 19:13:58 2000
State-Changed-Why:
I checked in Anthony's patch to fix this PR:
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00239.html
From: apbianco@cygnus.com
To: apbianco@cygnus.com, bryce@albatross.co.nz,
java-gnats@sourceware.cygnus.com, mdw@cs.berkeley.edu
Cc:
Subject: Re: gcj/107
Date: 8 Mar 2000 03:13:58 -0000
Synopsis: Bad array or type conversion bug when compiling bytecode
State-Changed-From-To: feedback->closed
State-Changed-By: apbianco
State-Changed-When: Tue Mar 7 19:13:58 2000
State-Changed-Why:
I checked in Anthony's patch to fix this PR:
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00239.html
http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=107&database=java
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="PutShort.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="PutShort.java"
cHVibGljIGNsYXNzIFB1dFNob3J0IHsKCiAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBwdXRfc2hvcnQo
c2hvcnQgcywgYnl0ZVtdIGJ1ZiwgaW50IG9mZnNldCkgewogICAgZm9yIChpbnQgaT0wOyBpPDI7
IGkrKykgewogICAgICBidWZbb2Zmc2V0ICsgKDEtaSldID0gKGJ5dGUpIChzICYgMHgwMEZGKTsK
ICAgICAgcyA+Pj0gODsKICAgIH0KICB9CgogIHByaXZhdGUgc3RhdGljIHZvaWQgcHV0X3Nob3J0
X2RlYnVnKHNob3J0IHMsIGJ5dGVbXSBidWYsIGludCBvZmZzZXQpIHsKICAgIFN5c3RlbS5lcnIu
cHJpbnRsbigicHV0X3Nob3J0OiBwdXR0aW5nICIrSW50ZWdlci50b0hleFN0cmluZyhzICYgMHhm
ZmZmKSsiIGF0IG9mZnNldCAiK29mZnNldCk7CiAgICBmb3IgKGludCBpPTA7IGk8MjsgaSsrKSB7
CiAgICAgIGJ1ZltvZmZzZXQgKyAoMS1pKV0gPSAoYnl0ZSkgKHMgJiAweDAwRkYpOwogICAgICBT
eXN0ZW0uZXJyLnByaW50bG4oInB1dF9zaG9ydDogb2Zmc2V0ICIrKG9mZnNldCsoMS1pKSkrIjog
IitJbnRlZ2VyLnRvSGV4U3RyaW5nKCBidWZbb2Zmc2V0KygxLWkpXSAmIDB4ZmYgKSApOwogICAg
ICBzID4+PSA4OwogICAgfQogIH0KCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFy
Z3NbXSkgewogICAgICBpbnQgaTsgICAgIAogICAgICBieXRlIGJhcnJbXSA9IG5ldyBieXRlWzEw
MF07CiAgICAgIGZvciAoaSA9IDA7IGkgPCA1MDsgaSsrKSB7CiAgICAgICAgcHV0X3Nob3J0KChz
aG9ydClpLCBiYXJyLCBpKjIpOwogICAgICB9CgogICAgICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBp
KyspIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIweCIrSW50ZWdlci50b0hleFN0cmluZygg
YmFycltpXSAmIDB4ZmYgKSsiICIpOwogICAgICB9CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigi
Iik7CiAgfQoKfQo=----gnatsweb-attachment----
Content-Type: application/octet-stream; name="pr107-patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pr107-patch"
SW5kZXg6IGdjYy9qYXZhL2RlY2wuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2Nz
L2djYy9qYXZhL2RlY2wuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MQpkaWZmIC11IC1yMS40
MSBkZWNsLmMKLS0tIGRlY2wuYwkxOTk5LzEwLzI2IDA4OjM0OjQ2CTEuNDEKKysrIGRlY2wuYwkx
OTk5LzExLzI4IDE4OjIyOjU0CkBAIC0xMTEsOSArMTExLDcgQEAKIAogLyogRmluZCBhIFZBUl9E
RUNMIChvciBQQVJNX0RFQ0wpIGF0IGxvY2FsIGluZGV4IElOREVYIHRoYXQgaGFzIHR5cGUgVFlQ
RSwKICAgIHRoYXQgaXMgdmFsaWQgYXQgUEMgKG9yIC0xIGlmIGFueSBwYykuCi0gICBJZiB0aGVy
ZSBpcyBubyBleGlzdGluZyBtYXRjaGluZyBkZWNsLCBhbGxvY2F0ZSBvbmUuCi0gICBJZiB3ZSBm
aW5kIGEgZGVjbCB3aXRoIG1hdGNoaW5nIG1vZGVzIGJ1dCBkaWZmZXJlbnQgdHlwZXMsCi0gICB3
ZSByZS11c2UgdGhlIHJ0bCwgYnV0IGNyZWF0ZSBhIG5ldyBkZWNsLiAqLworICAgSWYgdGhlcmUg
aXMgbm8gZXhpc3RpbmcgbWF0Y2hpbmcgZGVjbCwgYWxsb2NhdGUgb25lLiAgKi8KIAogdHJlZQog
ZmluZF9sb2NhbF92YXJpYWJsZSAoaW5kZXgsIHR5cGUsIHBjKQpAQCAtMTIzLDYgKzEyMSw3IEBA
CiB7CiAgIHRyZWUgZGVjbCA9IFRSRUVfVkVDX0VMVCAoZGVjbF9tYXAsIGluZGV4KTsKICAgdHJl
ZSBiZXN0ID0gTlVMTF9UUkVFOworCiAgIHdoaWxlIChkZWNsICE9IE5VTExfVFJFRSkKICAgICB7
CiAgICAgICBpbnQgaW5fcmFuZ2U7CkBAIC0xMzEsOSArMTMwLDEyIEBACiAJICAgICYmIHBjIDwg
REVDTF9MT0NBTF9FTkRfUEMgKGRlY2wpKTsKIAogICAgICAgaWYgKChUUkVFX1RZUEUgKGRlY2wp
ID09IHR5cGUKKwkgICB8fCAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGRlY2wpKSA9PSBUUkVFX0NP
REUgKHR5cGUpCisJICAgICAgICYmIFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGRlY2wpKSA8
PSAzMgorCSAgICAgICAmJiBUWVBFX1BSRUNJU0lPTiAodHlwZSkgPD0gMzIpCiAJICAgfHwgKFRS
RUVfQ09ERSAoVFJFRV9UWVBFIChkZWNsKSkgPT0gUE9JTlRFUl9UWVBFCiAJICAgICAgICYmIHR5
cGUgPT0gcHRyX3R5cGVfbm9kZSkpCi0JICAgJiYgaW5fcmFuZ2UpCisJICAmJiBpbl9yYW5nZSkK
IAl7CiAJICBpZiAoYmVzdCA9PSBOVUxMX1RSRUUKIAkgICAgICB8fCAoVFJFRV9UWVBFIChkZWNs
KSA9PSB0eXBlICYmIFRSRUVfVFlQRSAoYmVzdCkgIT0gdHlwZSkK
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="pr107-patch-revised"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pr107-patch-revised"
MTk5OS0xMS0yOCBBbnRob255IEdyZWVuIDxncmVlbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChm
aW5kX2xvY2FsX3ZhcmlhYmxlKTogUmV1c2Ugc2luZ2xlIHNsb3QgZGVjbHMgd2hlbgogICAgICAg
CSAgYXBwcm9wcmlhdGUuCgpJbmRleDogZGVjbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
Z2NjL2VnY3MvZ2NjL2phdmEvZGVjbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQyCmRpZmYg
LXUgLXAgLXIxLjQyIGRlY2wuYwotLS0gZGVjbC5jCTE5OTkvMTIvMDkgMTI6MzI6NDgJMS40Mgor
KysgZGVjbC5jCTE5OTkvMTIvMTEgMDU6MDE6NDUKQEAgLTExMSw5ICsxMTEsNyBAQCBwdXNoX2p2
bV9zbG90IChpbmRleCwgZGVjbCkKIAogLyogRmluZCBhIFZBUl9ERUNMIChvciBQQVJNX0RFQ0wp
IGF0IGxvY2FsIGluZGV4IElOREVYIHRoYXQgaGFzIHR5cGUgVFlQRSwKICAgIHRoYXQgaXMgdmFs
aWQgYXQgUEMgKG9yIC0xIGlmIGFueSBwYykuCi0gICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyBt
YXRjaGluZyBkZWNsLCBhbGxvY2F0ZSBvbmUuCi0gICBJZiB3ZSBmaW5kIGEgZGVjbCB3aXRoIG1h
dGNoaW5nIG1vZGVzIGJ1dCBkaWZmZXJlbnQgdHlwZXMsCi0gICB3ZSByZS11c2UgdGhlIHJ0bCwg
YnV0IGNyZWF0ZSBhIG5ldyBkZWNsLiAqLworICAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgbWF0
Y2hpbmcgZGVjbCwgYWxsb2NhdGUgb25lLiAgKi8KIAogdHJlZQogZmluZF9sb2NhbF92YXJpYWJs
ZSAoaW5kZXgsIHR5cGUsIHBjKQpAQCAtMTIzLDYgKzEyMSw3IEBAIGZpbmRfbG9jYWxfdmFyaWFi
bGUgKGluZGV4LCB0eXBlLCBwYykKIHsKICAgdHJlZSBkZWNsID0gVFJFRV9WRUNfRUxUIChkZWNs
X21hcCwgaW5kZXgpOwogICB0cmVlIGJlc3QgPSBOVUxMX1RSRUU7CisKICAgd2hpbGUgKGRlY2wg
IT0gTlVMTF9UUkVFKQogICAgIHsKICAgICAgIGludCBpbl9yYW5nZTsKQEAgLTEzMSw2ICsxMzAs
MTAgQEAgZmluZF9sb2NhbF92YXJpYWJsZSAoaW5kZXgsIHR5cGUsIHBjKQogCSAgICAmJiBwYyA8
IERFQ0xfTE9DQUxfRU5EX1BDIChkZWNsKSk7CiAKICAgICAgIGlmICgoVFJFRV9UWVBFIChkZWNs
KSA9PSB0eXBlCisJICAgfHwgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChkZWNsKSkgPT0gVFJFRV9D
T0RFICh0eXBlKQorCSAgICAgICAmJiBUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChkZWNsKSkg
PD0gMzIKKwkgICAgICAgJiYgVFlQRV9QUkVDSVNJT04gKHR5cGUpIDw9IDMyCisJICAgICAgICYm
IFRSRUVfQ09ERSAodHlwZSkgIT0gUE9JTlRFUl9UWVBFKQogCSAgIHx8IChUUkVFX0NPREUgKFRS
RUVfVFlQRSAoZGVjbCkpID09IFBPSU5URVJfVFlQRQogCSAgICAgICAmJiB0eXBlID09IHB0cl90
eXBlX25vZGUpKQogCSAgICYmIGluX3JhbmdlKQo=