This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

java/1113: Bad array or type conversion bug when compiling bytecode



>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=



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]