gnats-prs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnats/78: g++ 2.95.2 copies without constructor, then calls destructor


From: pmorris
Subject: gnats/78: g++ 2.95.2 copies without constructor, then calls destructor
Date: 26 May 2000 22:28:16 -0000

>Number:         78
>Category:       gnats
>Synopsis:       g++ 2.95.2 copies without constructor, then calls destructor
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri May 26 15:34:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Paul Morris and Will Edgington
>Release:        g++-2.95.2 and earlier
>Organization:
>Environment:
Sun Ultra 2 SunOS 5.6 (Solaris)
>Description:
g++ compiles incorrectly.  Under certain circumstances, it
creates a copy without calling the copy constructor, and
later passes the copy to the destructor.  This can cause
reference-count schemes to prematurely release storage.
>How-To-Repeat:
Enclosed is a self-contained program that exercises the bug,
with print statements to illustrate the problem.
Note that the refCount goes to -1.(If the SUNWspro compiler
is used instead, the refCount correctly ends at 0.)

PRINTOUT FROM EXAMPLE PROGRAM

Created tag 1 item 
     refCount now 1
Created tag 2 item as copy of tag 1 item 
     refCount now 2
Created tag 3 item 
Assigned tag 3 item as copy of tag 2 item 
     refCount now 3
Descoped tag 2 item 
     refCount now 2
Created tag 4 item as copy of tag 3 item 
     refCount now 3
Created tag 5 item 
Assigned tag 5 item as copy of tag 4 impostor 
     refCount now 4
Descoped tag 4 impostor 
     refCount now 3
Descoped tag 4 item 
     refCount now 2
Descoped tag 5 item 
     refCount now 1
Descoped tag 3 item 
     refCount now 0
Descoped tag 1 item 
     refCount now -1
>Fix:
The compiler needs to be modified to call the copy
constructor when it makes the copy identified as the
"impostor" in the example printout.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="test.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.cc"

I2luY2x1ZGUgPGlvc3RyZWFtLmg+CgpjbGFzcyBNb2RJZCB7CnB1YmxpYzoKICBNb2RJZCAoaW50
IGRhdHVtID0gMCk7CiAgTW9kSWQoY29uc3QgTW9kSWQmIG9yZyk7CiAgTW9kSWQmIG9wZXJhdG9y
PShjb25zdCBNb2RJZCYgb3JnKTsKICB+TW9kSWQgKCk7CiAgY2hhcioganVkZ2UoKSBjb25zdDsK
cHJpdmF0ZToKICBpbnQgdGFnOwogIGludCBkYXR1bTsKICBpbnQqIHJlZkNvdW50Owp9OwoKaW50
IHRvcFRhZyA9IDE7Ck1vZElkKiB0YWdQdHJbMTAwMF07CgpjaGFyKiBNb2RJZDo6anVkZ2UoKSBj
b25zdCAKeyByZXR1cm4gKHRoaXMgPT0gdGFnUHRyW3RoaXMtPnRhZ10pID8gIiBpdGVtICIgOiAi
IGltcG9zdG9yICI7IH0KCk1vZElkOjpNb2RJZCAoaW50IGRhdCkKewogIHRhZ1B0clt0YWcgPSB0
b3BUYWcrK10gPSB0aGlzOwogIGRhdHVtID0gZGF0OwogICoocmVmQ291bnQgPSBuZXcgaW50KSA9
IDE7CgogIGNlcnIgPDwgIkNyZWF0ZWQgdGFnICIgPDwgdGFnIDw8IGp1ZGdlKCkgPDwgIlxuIjsK
ICBpZiAoZGF0dW0pIGNlcnIgPDwgIiAgICAgcmVmQ291bnQgbm93ICIgPDwgKnJlZkNvdW50IDw8
ICJcbiI7Cn0KCk1vZElkOjpNb2RJZChjb25zdCBNb2RJZCYgb3JnKQp7CiAgdGFnUHRyW3RhZyA9
IHRvcFRhZysrXSA9IHRoaXM7CiAgZGF0dW0gPSBvcmcuZGF0dW07CiAgKCoocmVmQ291bnQgPSBv
cmcucmVmQ291bnQpKSsrOwoKICBjZXJyIDw8ICJDcmVhdGVkIHRhZyAiIDw8IHRhZyA8PCBqdWRn
ZSgpIDw8ICJhcyBjb3B5IG9mIHRhZyAiIDw8IG9yZy50YWcKICAgICAgIDw8IG9yZy5qdWRnZSgp
IDw8ICJcbiI7CiAgaWYgKGRhdHVtKSBjZXJyIDw8ICIgICAgIHJlZkNvdW50IG5vdyAiIDw8ICpy
ZWZDb3VudCA8PCAiXG4iOwp9CgpNb2RJZDo6fk1vZElkICgpCnsKICAoKnJlZkNvdW50KS0tOwoK
ICBjZXJyIDw8ICJEZXNjb3BlZCB0YWcgIiA8PCB0YWcgPDwganVkZ2UoKSA8PCAiXG4iOwogIGlm
IChkYXR1bSkgY2VyciA8PCAiICAgICByZWZDb3VudCBub3cgIiA8PCAqcmVmQ291bnQgPDwgIlxu
IjsKfQoKTW9kSWQmIE1vZElkOjpvcGVyYXRvcj0oY29uc3QgTW9kSWQmIG9yZykKewogICgqb3Jn
LnJlZkNvdW50KSsrOwogICgqcmVmQ291bnQpLS07CgogIGNlcnIgPDwgIkFzc2lnbmVkIHRhZyAi
IDw8IHRhZyA8PCBqdWRnZSgpIDw8ICJhcyBjb3B5IG9mIHRhZyAiIDw8IG9yZy50YWcKICAgICAg
IDw8IG9yZy5qdWRnZSgpIDw8ICJcbiI7CiAgaWYgKGRhdHVtICYmIG9yZy5kYXR1bSkKICAgIGNl
cnIgPDwgIiAgICAgcmVmQ291bnQgdW5jaGFuZ2VkIiA8PCAqcmVmQ291bnQgPDwgIlxuIjsKICBl
bHNlIGlmIChkYXR1bSkgY2VyciA8PCAiICAgICByZWZDb3VudCBub3cgIiA8PCAqcmVmQ291bnQg
PDwgIlxuIjsKICBlbHNlIGlmIChvcmcuZGF0dW0pIGNlcnIgPDwgIiAgICAgcmVmQ291bnQgbm93
ICIgPDwgKihvcmcucmVmQ291bnQpIDw8ICJcbiI7CgogIHJlZkNvdW50ID0gb3JnLnJlZkNvdW50
OwogIGRhdHVtID0gb3JnLmRhdHVtOwogIC8vIFRhZyBpdHNlbGYgbm90IGNvcGllZCAtLSB1bmlx
dWUgdG8gZWFjaCBpbnN0YW5jZQoKICByZXR1cm4gKnRoaXM7Cn0KCmNsYXNzIFZhckVudHJ5IHsK
cHVibGljOgogIE1vZElkIG1vZDsKICBWYXJFbnRyeSAoTW9kSWQgcCkgeyBtb2QgPSBwOyB9CiAg
VmFyRW50cnkgKCkgeyB9Cn07CgpjbGFzcyBwc2V1ZG9UVCB7CiAgTW9kSWQgbW9kOwpwdWJsaWM6
CiAgcHNldWRvVFQgKE1vZElkIHApIHsgbW9kID0gcDsgfQogIHBzZXVkb1RUICgpIHsgfQp9OwoK
VmFyRW50cnkgY29weSAoY29uc3QgVmFyRW50cnkmIHZhcikgeyByZXR1cm4gdmFyOyB9CgppbnQg
bWFpbigpCnsKICBNb2RJZCBmb28oMSk7CiAgVmFyRW50cnkgdihmb28pOwogIHBzZXVkb1RUIHZh
ciA9IHBzZXVkb1RUKGNvcHkodikubW9kKTsKfQo=


reply via email to

[Prev in Thread] Current Thread [Next in Thread]