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]

c++/2892: array addresses corrupted when using template classes



>Number:         2892
>Category:       c++
>Synopsis:       array addresses corrupted when using template classes
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon May 21 15:56:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Ian Williams
>Release:        gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)
>Organization:
>Environment:
RedHat7.1 i386
>Description:
Array addresses passed into a template class seem to get
corrupted through the call.

The attached program shows the issue.
>How-To-Repeat:
Compile the attached program and run it. It will print out
the contents of several arrays through the call to the
template class.

The ouput should look something like:

./test
Input = 1, -1, 1
item = 2.17777, -1.99912, -1.99909
mBuffer[0] = 2.17777, -1.99912, -1.99909, 
Output = 2.17777, -1.99912, -1.99909
Input = 1, 1, -1
item = 2.17777, -1.99912, -1.99909
mBuffer[1] = 2.17777, -1.99912, -1.99909, 
Output = 2.17777, -1.99912, -1.99909
Input = 1, 1, 1
item = 2.17777, -1.99912, -1.99909
mBuffer[2] = 2.17777, -1.99912, -1.99909, 
Output = 2.17777, -1.99912, -1.99909
Input = 1, -1, 1
item = 2.17777, -1.99912, -1.99909
mBuffer[3] = 2.17777, -1.99912, -1.99909, 
Output = 2.17777, -1.99912, -1.99909

The contents of the 'input' array should be the same as
'item', 'mbuffer' and 'output', however, they aren't and
it appears as though the address gets mangled through the 
call. 

The same problem occures if the class is instanced to any
type of 'int', 'float' or 'double' arrays.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="program.c++"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="program.c++"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzEwMzN7XGZvbnR0Ymx7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fXtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBOZXc7
fX0NCntcY29sb3J0YmwgO1xyZWQwXGdyZWVuMFxibHVlMDt9DQpcdmlld2tpbmQ0XHVjMVxwYXJk
XGZpLTE4MDBcbGkxODAwXHR4MTgwMFxjZjFcYlxmMFxmczIwIEZyb206XGIwXHRhYiBJYW4gV2ls
bGlhbXNccGFyDQpcYiBTZW50OlxiMFx0YWIgV2VkbmVzZGF5LCBNYXkgMTYsIDIwMDEgNzo1OSBQ
TVxwYXINClxiIFRvOlxiMFx0YWIgJ2J1Zy1nKytAcHJlcC5haS5taXQuZWR1J1xwYXINClxiIENj
OlxiMFx0YWIgSWFuIFdpbGxpYW1zXHBhcg0KXGIgU3ViamVjdDpcYjBcdGFiIHBvaW50ZXIgY29y
cnVwdGlvbiBidWcgdy8gdGVtcGxhdGUgY2xhc3Nlc1xwYXINClxwYXJkXGNmMFxmMSAvKlx0YWIg
Q29tcGlsZTogICAgICAgIGcrKyAtbyB0ZXN0IHRlc3QuYysrXHRhYiAqL1xwYXINClxwYXINCiNp
bmNsdWRlIDxzdHJpbmcuaD5ccGFyDQojaW5jbHVkZSA8aW9zdHJlYW0uaD5ccGFyDQojaW5jbHVk
ZSA8ZnN0cmVhbS5oPlxwYXINCiNpbmNsdWRlIDxzdGRsaWIuaD5ccGFyDQpccGFyDQojaWZuZGVm
IFRSVUVccGFyDQojZGVmaW5lIFRSVUUgICAgMVxwYXINCiNlbmRpZlxwYXINClxwYXINCiNpZm5k
ZWYgRkFMU0VccGFyDQojZGVmaW5lIEZBTFNFICAgMFxwYXINCiNlbmRpZlxwYXINClxwYXINCnRl
bXBsYXRlIDxjbGFzcyBULCBjbGFzcyBGPiAvLyBUPSJUbyIgdGhlIHN0b3JhZ2UgZm9ybWF0IGZv
ciB0aGUgYnVmZmVyXHBhcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGPSJG
cm9tIiwgdGhlIHN0b3JhZ2UgZm9ybWF0IGZyb20gd2hpY2ggdGhlXHBhcg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgZGF0YSBjb21lc1xwYXINClxwYXINClxw
YXINCmNsYXNzIEJ1ZmZlclxwYXINClx7XHBhcg0KcHVibGljOlxwYXINClxwYXINCiAgICAgICAg
QnVmZmVyKGludCBsZW5ndGg9MTAwLCBjaGFyKiBsYWJlbD1OVUxMKTtccGFyDQogICAgICAgIHZp
cnR1YWwgfkJ1ZmZlcigpO1xwYXINClxwYXINCiAgICAgICAgdmlydHVhbCBib29sICAgIGFkZChG
IGl0ZW0pID0gMDtccGFyDQogICAgICAgIFQqICAgICAgICAgICAgICAgICAgICAgIGJ1ZigpIGNv
bnN0O1xwYXINCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgYnVmTGVuZ3RoKCkgY29u
c3Q7XHBhcg0KICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICBjYW5BZGRUbygpO1xwYXIN
CiAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtccGFyDQpccGFyDQpwcm90
ZWN0ZWQ6XHBhcg0KXHBhcg0KICAgICAgICBUKiAgICAgICAgICAgICAgbUJ1ZmZlcjtccGFyDQog
ICAgICAgIGludCAgICAgICAgICAgICBtSW5CdWZmZXI7XHBhcg0KXHBhcg0KcHJpdmF0ZTpccGFy
DQpccGFyDQogICAgICAgIEJ1ZmZlcihjb25zdCBCdWZmZXI8VCxGPiYgYik7XHBhcg0KXHBhcg0K
ICAgICAgICBpbnQgICAgIG1CdWZmZXJMZW5ndGg7XHBhcg0KICAgICAgICBib29sICAgIG1PdmVy
Zmxvd1JlcG9ydGVkO1xwYXINCiAgICAgICAgY2hhciogICBtQnVmZmVyTmFtZTtccGFyDQpcfTtc
cGFyDQpccGFyDQp0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRj5ccGFyDQpCdWZmZXI8VCxGPjo6
QnVmZmVyKGludCBsZW5ndGgsIGNoYXIqIGxhYmVsKSA6XHBhcg0KICAgICAgICAgICAgICAgIG1C
dWZmZXJMZW5ndGgobGVuZ3RoKSwgbU92ZXJmbG93UmVwb3J0ZWQoRkFMU0UpLFxwYXINCiAgICAg
ICAgICAgICAgICBtQnVmZmVyKE5VTEwpLCBtSW5CdWZmZXIoMCksIG1CdWZmZXJOYW1lKE5VTEwp
XHBhcg0KXHtccGFyDQogICAgICAgIG1CdWZmZXIgPSBuZXcgVFtsZW5ndGhdO1xwYXINCiAgICAg
ICAgaWYgKGxhYmVsICE9IE5VTEwpXHBhcg0KICAgICAgICBce1xwYXINCiAgICAgICAgICAgICAg
ICBtQnVmZmVyTmFtZSA9IG5ldyBjaGFyW3N0cmxlbihsYWJlbCkrMV07XHBhcg0KICAgICAgICAg
ICAgICAgIHN0cmNweShtQnVmZmVyTmFtZSxsYWJlbCk7XHBhcg0KICAgICAgICBcfVxwYXINClx9
XHBhcg0KXHBhcg0KdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+XHBhcg0KQnVmZmVyPFQsRj46
OkJ1ZmZlcihjb25zdCBCdWZmZXI8VCxGPiYgYikgOlxwYXINCiAgICAgICAgICAgICAgICBtQnVm
ZmVyTGVuZ3RoKDApLCBtT3ZlcmZsb3dSZXBvcnRlZChGQUxTRSksXHBhcg0KICAgICAgICAgICAg
ICAgIG1CdWZmZXIoTlVMTCksIG1JbkJ1ZmZlcigwKSwgbUJ1ZmZlck5hbWUoTlVMTClccGFyDQpc
e1xwYXINClx9XHBhcg0KXHBhcg0KdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+XHBhcg0KQnVm
ZmVyPFQsRj46On5CdWZmZXIoKVxwYXINClx7XHBhcg0KICAgICAgICBpZiAobUJ1ZmZlciAhPSBO
VUxMKVxwYXINCiAgICAgICAgXHtccGFyDQogICAgICAgICAgICAgICAgZGVsZXRlIFtdIG1CdWZm
ZXI7XHBhcg0KICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMO1xwYXINCiAgICAgICAgICAg
ICAgICBtQnVmZmVyTGVuZ3RoID0gMDtccGFyDQogICAgICAgICAgICAgICAgcmVzZXQoKTtccGFy
DQogICAgICAgIFx9XHBhcg0KICAgICAgICBpZiAobUJ1ZmZlck5hbWUgIT0gTlVMTClccGFyDQog
ICAgICAgIFx7XHBhcg0KICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSBtQnVmZmVyTmFtZTtccGFy
DQogICAgICAgICAgICAgICAgbUJ1ZmZlck5hbWUgPSBOVUxMO1xwYXINCiAgICAgICAgXH1ccGFy
DQpcfVxwYXINClxwYXINCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBGPlxwYXINClQqXHBhcg0K
QnVmZmVyPFQsRj46OmJ1ZigpIGNvbnN0XHBhcg0KXHtccGFyDQogICAgICAgIHJldHVybiBtQnVm
ZmVyO1xwYXINClx9XHBhcg0KXHBhcg0KdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+XHBhcg0K
aW50XHBhcg0KQnVmZmVyPFQsRj46OmJ1Zkxlbmd0aCgpIGNvbnN0XHBhcg0KXHtccGFyDQogICAg
ICAgIHJldHVybiBtSW5CdWZmZXI7XHBhcg0KXH1ccGFyDQpccGFyDQp0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgY2xhc3MgRj5ccGFyDQpib29sXHBhcg0KQnVmZmVyPFQsRj46OmNhbkFkZFRvKClccGFyDQpc
e1xwYXINCiAgICAgICAgaWYgKCBtSW5CdWZmZXIgPT0gbUJ1ZmZlckxlbmd0aCApXHBhcg0KICAg
ICAgICBce1xwYXINCiAgICAgICAgICAgICAgICBpZiAoIW1PdmVyZmxvd1JlcG9ydGVkKVxwYXIN
CiAgICAgICAgICAgICAgICBce1xwYXINCiAgICAgICAgICAgICAgICAgICAgICAgIG1PdmVyZmxv
d1JlcG9ydGVkID0gVFJVRTtccGFyDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobUJ1ZmZl
ck5hbWUgIT0gTlVMTClccGFyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnIg
PDwgbUJ1ZmZlck5hbWUgPDwgIjogIjtccGFyDQogICAgICAgICAgICAgICAgICAgICAgICBjZXJy
IDw8ICJCdWZmZXIgb3ZlcmZsb3dcXG4iO1xwYXINCiAgICAgICAgICAgICAgICBcfVxwYXINCiAg
ICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7XHBhcg0KICAgICAgICBcfVxwYXINCiAgICAgICAg
cmV0dXJuIFRSVUU7XHBhcg0KXH1ccGFyDQpccGFyDQp0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
Rj5ccGFyDQp2b2lkXHBhcg0KQnVmZmVyPFQsRj46OiByZXNldCgpXHBhcg0KXHtccGFyDQogICAg
ICAgIG1PdmVyZmxvd1JlcG9ydGVkID0gRkFMU0U7XHBhcg0KICAgICAgICBtSW5CdWZmZXIgPSAw
O1xwYXINClx9XHBhcg0KXHBhcg0KLy8vLy8vLy8vLy8vLy8vLyBTdWJjbGFzcyBmb3IgYnVmZmVy
aW5nIGFycmF5cyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xwYXINClxwYXINCnRlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBGPlxwYXINCmNsYXNzIEJ1ZmZlclYgOiBwdWJsaWMgQnVmZmVy
PFQsRj5ccGFyDQpce1xwYXINCnB1YmxpYzpccGFyDQogICAgICAgIEJ1ZmZlclYoaW50IGxlbmd0
aD0xMDAsIGNoYXIqIGxhYmVsPU5VTEwpO1xwYXINCiAgICAgICAgdmlydHVhbCB+QnVmZmVyVigp
O1xwYXINClxwYXINCiAgICAgICAgdmlydHVhbCBib29sICAgIGFkZChGIGl0ZW0pO1xwYXINClxw
YXINCnByaXZhdGU6XHBhcg0KICAgICAgICBCdWZmZXJWKGNvbnN0IEJ1ZmZlclY8VCxGPiYgYik7
XHBhcg0KXH07XHBhcg0KXHBhcg0KdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+XHBhcg0KQnVm
ZmVyVjxULEY+OjpCdWZmZXJWKGludCBsZW5ndGgsIGNoYXIqIGxhYmVsKSA6IEJ1ZmZlcjxULEY+
KGxlbmd0aCxsYWJlbClccGFyDQpce1xwYXINClx9XHBhcg0KXHBhcg0KdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEY+XHBhcg0KQnVmZmVyVjxULEY+OjpCdWZmZXJWKGNvbnN0IEJ1ZmZlclY8VCxG
PiYgYikgOiBCdWZmZXI8VCxGPihiKVxwYXINClx7XHBhcg0KXH1ccGFyDQpccGFyDQp0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRj5ccGFyDQpCdWZmZXJWPFQsRj46On5CdWZmZXJWKClccGFyDQpc
e1xwYXINClx9XHBhcg0KXHBhcg0KdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+XHBhcg0KYm9v
bFxwYXINCkJ1ZmZlclY8VCxGPjo6YWRkKEYgaXRlbSlccGFyDQpce1xwYXINClxwYXINCiAgICAg
ICAgY291dCAgICA8PCAiaXRlbSA9ICIgPDwgaXRlbVswXSA8PCAiLCAiIFxwYXINCiAgICAgICAg
ICAgICAgICA8PCBpdGVtWzFdIDw8ICIsICIgPDwgaXRlbVsyXSA8PCAgZW5kbDtccGFyDQovKlxw
YXINCiAgICAgICAgRm9yIHNvbWUgcmVhc29uIHRoZSBmb2xsb3dpbmcgbGluZSB5aWVsZHMgdGhl
IGNvcnJlY3Qgb3V0cHV0XHBhcg0KICAgICAgICB3aGVuIGluc3RhbnRpYXRlZCB3aXRoIEYgPSBp
bnRbM10gb3IgRiA9IGZsb2F0WzNdICAgICAgICAgICAgICAgXHBhcg0KICAgICAgICBjb3V0ICAg
IDw8ICJpdGVtID0gIiA8PCBpdGVtWzArM10gPDwgIiwgIiBccGFyDQogICAgICAgICAgICAgICAg
PDwgaXRlbVsxKzNdIDw8ICIsICIgPDwgaXRlbVsyKzNdIDw8ICBlbmRsO1xwYXINCiovXHBhcg0K
XHBhcg0KICAgICAgICBpZiAoQnVmZmVyPFQsRj46OmNhbkFkZFRvKCkpXHBhcg0KICAgICAgICBc
e1xwYXINCiAgICAgICAgICAgICAgICBjb3V0IDw8ICJtQnVmZmVyWyIgPDwgbUluQnVmZmVyIDw8
ICJdID0gIjtccGFyDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wIDsgaTwzIDsgaSsrKSBc
e1xwYXINCi8qIFxwYXINCiAgICAgICAgU2VlIGFib3ZlIHdoZW4gaW5zdGFuY2lhdGVkIHdpdGgg
RiA9IGludFszXSBhbmQgZmxvYXRbM10gICAgICAgIFxwYXINCiAgICAgICAgICAgICAgICAgICAg
ICAgIG1CdWZmZXJbbUluQnVmZmVyXVtpXSA9IGl0ZW1baSszXTtccGFyDQoqL1xwYXINCiAgICAg
ICAgICAgICAgICAgICAgICAgIG1CdWZmZXJbbUluQnVmZmVyXVtpXSA9IGl0ZW1baV07XHBhcg0K
ICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCBtQnVmZmVyW21JbkJ1ZmZlcl1baV0gPDwg
IiwgIjtccGFyDQogICAgICAgICAgICAgICAgXH1ccGFyDQogICAgICAgICAgICAgICAgY291dCA8
PCBlbmRsO1xwYXINCiAgICAgICAgICAgICAgICBtSW5CdWZmZXIrKztccGFyDQogICAgICAgICAg
ICAgICAgcmV0dXJuIFRSVUU7XHBhcg0KICAgICAgICBcfVxwYXINCiAgICAgICAgcmV0dXJuIEZB
TFNFO1xwYXINClx9XHBhcg0KXHBhcg0KXHBhcg0KXHBhcg0KLy90eXBlZGVmIGludCAgRHh5elsz
XSwgICpEeHl6UDtccGFyDQovL3R5cGVkZWYgZmxvYXQgIER4eXpbM10sICAqRHh5elA7XHBhcg0K
dHlwZWRlZiBkb3VibGUgIER4eXpbM10sICAqRHh5elA7XHBhcg0KXHBhcg0Kc3RhdGljIEJ1ZmZl
clY8RHh5eixEeHl6PiAgICAgICBmYWNlVmVydGV4QnVmKDEwLCJmYWNlVmVydGV4QnVmIik7XHBh
cg0KXHBhcg0KRHh5eiAgICBpbnB1dF9wb2ludHNbNF09XHsgICAgICAgXHsxLjAsIC0xLjAsIDEu
MFx9LFx7MS4wLCAxLjAsIC0xLjBcfSxccGFyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFx7MS4wLCAxLjAsIDEuMFx9LFx7MS4wLCAtMS4wLCAxLjBcfSBcfTtccGFyDQpccGFyDQpp
bnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSlccGFyDQpce1xwYXINCiAgICAgICAgaW50
IGkgPSAwLCBpbmRleDtccGFyDQogICAgICAgIGZhY2VWZXJ0ZXhCdWYucmVzZXQoKTtccGFyDQpc
cGFyDQogICAgICAgIGZvciAoaT0wO2k8NDsgaSsrKSBce1xwYXINClxwYXINCiAgICAgICAgICAg
ICAgICBpbmRleCA9IGZhY2VWZXJ0ZXhCdWYuYnVmTGVuZ3RoKCk7XHBhcg0KICAgICAgICAgICAg
ICAgIER4eXogICAgdGVtcCA9IFx7aW5wdXRfcG9pbnRzW2ldWzBdLCBccGFyDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3BvaW50c1tpXVsxXSwgXHBhcg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9wb2ludHNbaV1bMl1cfTtccGFyDQpccGFyDQog
ICAgICAgICAgICAgICAgY291dCA8PCAiSW5wdXQgPSAiIDw8IHRlbXBbMF0gPDwgIiwgIiBccGFy
DQogICAgICAgICAgICAgICAgICAgICA8PCB0ZW1wWzFdIDw8ICIsICIgPDwgIHRlbXBbMl0gPDwg
ZW5kbDsgO1xwYXINClxwYXINCiAgICAgICAgICAgICAgICBmYWNlVmVydGV4QnVmLmFkZCh0ZW1w
KTtccGFyDQogICAgICAgICAgICAgICAgRHh5elAgdGVtcFAgPSBmYWNlVmVydGV4QnVmLmJ1Zigp
W2luZGV4XTtccGFyDQpccGFyDQogICAgICAgICAgICAgICAgY291dCA8PCAiT3V0cHV0ID0gIiA8
PCB0ZW1wUFswXSA8PCAiLCAiIFxwYXINCiAgICAgICAgICAgICAgICAgICAgIDw8IHRlbXBQWzFd
IDw8ICIsICIgPDwgIHRlbXBQWzJdIDw8IGVuZGw7IDtccGFyDQpccGFyDQogICAgICAgIFx9XHBh
cg0KXHBhcg0KICAgICAgICByZXR1cm4gMDtccGFyDQpcfVxwYXINClxmMFxwYXINClxwYXJkXGZp
LTE4MDBcbGkxODAwXHR4MTgwMFxjZjFccGFyDQp9DQoA


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