This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/568: virtual class destructors called with faulty this pointer
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/568: virtual class destructors called with faulty this pointer
- From: magnus dot fromreide at teligent dot se
- Date: 25 Sep 2000 05:42:13 -0000
- Reply-To: magnus dot fromreide at teligent dot se
- Resent-Cc: gcc-prs at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, jason at gcc dot gnu dot org
- Resent-Reply-To: gcc-gnats@gcc.gnu.org, magnus.fromreide@teligent.se
>Number: 568
>Category: c++
>Synopsis: virtual class destructors called with faulty this pointer
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Sun Sep 24 22:45:59 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: magnus.fromreide@teligent.se
>Release: 2.95.[012], 2.91.66, 2.96 20000914
>Organization:
>Environment:
An system where vtable-thunks is on by default, verified on Linux with libc6 and on FreeBSD 3.4
Does not appear on Linux with libc5
>Description:
The compiler doesn'tt adjust the vpointer correctly when calling virtual functions on the right leaf so the this pointer will not point to this of the subobject.
>How-To-Repeat:
Compile the above program and run it.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bug.C"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bug.C"
I2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fIDw9IDIgJiYgX19HTlVDX01JTk9SX18g
PCA5NQojICAgaW5jbHVkZSA8aW9zdHJlYW0uaD4KI2Vsc2UKIyAgIGluY2x1ZGUgPGlvc3RyZWFt
PgojZW5kaWYKCmNsYXNzIEJhc2UgewpwdWJsaWM6CiAgdmlydHVhbCB2b2lkIHZmdW5jKCkgewog
ICAgY291dCA8PCAiQmFzZTo6dmZ1bmM6ICIgPDwgKHZvaWQgKil0aGlzIDw8IGVuZGw7CiAgfQoK
ICB2b2lkIHNmdW5jKCkgewogICAgY291dCA8PCAiQmFzZTo6c2Z1bmM6ICIgPDwgKHZvaWQgKil0
aGlzIDw8IGVuZGw7CiAgfTsKfTsKCmNsYXNzIExlZnQgOiBwdWJsaWMgdmlydHVhbCBCYXNlIHsK
cHVibGljOgogIH5MZWZ0KCkgewogICAgbGZ1bmMoKTsKICB9CgogIHZvaWQgdmZ1bmMoKSB7CiAg
ICBjb3V0IDw8ICJMZWZ0Ojp2ZnVuYzogIiA8PCAodm9pZCAqKXRoaXMgPDwgZW5kbDsKCiAgICAv
LyBUaHVuayB1c2VkIGZvciB0aGlzIGNhbGwgc2VlbXMgdG8gYXNzdW1lIHRoYXQgdGhlIG9iamVj
dCBpcyBhIExlZnQsIG5vdAogICAgLy8gYSBEZXJpdmVkLi4uCiAgICBzZnVuYygpOwogIH0KICAK
ICB2b2lkIGxmdW5jKCkgewogICAgY291dCA8PCAiTGVmdDo6bGZ1bmM6ICIgPDwgKHZvaWQgKil0
aGlzIDw8IGVuZGw7CiAgICB2ZnVuYygpOwogIH07Cn07CgpjbGFzcyBSaWdodCA6IHB1YmxpYyB2
aXJ0dWFsIEJhc2UgewpwdWJsaWM6CiAgUmlnaHQoKQogICAgOiByZGF0YSgzKSB7CiAgfQoKcHJp
dmF0ZToKICBpbnQgcmRhdGE7ICAvLyBNdXN0IGJlIHNvbWUgZGF0YSBpbiB0aGlzIGNsYXNzIHRy
aWcgYnVnCn07CgpjbGFzcyBEZXJpdmVkIDogcHVibGljIExlZnQsIHB1YmxpYyBSaWdodCB7CnB1
YmxpYzoKICBEZXJpdmVkKCkKICAgIDogZGRhdGEoNCkgewogIH0KCnByaXZhdGU6CiAgaW50IGRk
YXRhOyAgLy8gVGhpcyB3aWxsIGVuZCB1cCBhcyB0aGlzIHBvaW50ZXIgaW4gQmFzZTo6c2Z1bmMo
KS4uLgp9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogIHsKICAgIGNvdXQg
PDwgIkNvbnN0cnVjdGluZyBMZWZ0Li4uIjsKICAgIExlZnQgKmwgPSBuZXcgTGVmdDsKICAgIGNv
dXQgPDwgKHZvaWQgKilsICA8PCBlbmRsOwoKICAgIGNvdXQgPDwgIkRlbGV0aW5nIExlZnQuLi4i
IDw8IGVuZGw7CiAgICBkZWxldGUgbDsKICB9CgogIHsKICAgIGNvdXQgPDwgIkNvbnN0cnVjdGlu
ZyBEZXJpdmVkLi4uIjsKICAgIERlcml2ZWQgKmQgPSBuZXcgRGVyaXZlZDsKICAgIGNvdXQgPDwg
KHZvaWQgKilkIDw8IGVuZGw7CgogICAgY291dCA8PCAiRGVsZXRpbmcgRGVyaXZlZC4uLiIgPDwg
ZW5kbDsKICAgIGRlbGV0ZSBkOwogIH0KCiAgcmV0dXJuIDA7Cn0K