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

Bug#210848: marked as done (g++-3.3: Code miscompilation with -O0 -finline (discovered in QT))



Your message dated Sat, 20 Sep 2003 13:47:33 -0400
with message-id <E1A0lpV-0006Wv-00@auric.debian.org>
and subject line Bug#210848: fixed in gcc-3.3 1:3.3.2ds2-0pre4
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 14 Sep 2003 06:37:49 +0000
>From puetzk@iastate.edu Sun Sep 14 01:37:45 2003
Return-path: <puetzk@iastate.edu>
Received: from 12-205-177-212.client.mchsi.com (puetzk) [12.205.177.212] 
	by master.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 19yQVx-0006Oh-00; Sun, 14 Sep 2003 01:37:41 -0500
Received: from puetzk by puetzk with local (Exim 3.36 #1 (Debian))
	id 19yQVw-00029h-00; Sun, 14 Sep 2003 01:37:40 -0500
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: Kevin Puetz <puetzk@iastate.edu>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: g++-3.3: Code miscompilation with -O0 -finline (discovered in QT)
X-Mailer: reportbug 2.28
Date: Sun, 14 Sep 2003 01:37:40 -0500
Message-Id: <[🔎] E19yQVw-00029h-00@puetzk>
Sender: Kevin Puetz <puetzk@iastate.edu>
Delivered-To: submit@bugs.debian.org
X-Spam-Status: No, hits=-5.0 required=4.0
	tests=HAS_PACKAGE
	version=2.53-bugs.debian.org_2003_9_13
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 2.53-bugs.debian.org_2003_9_13 (1.174.2.15-2003-03-30-exp)

Package: g++-3.3
Version: 1:3.3.2-0pre3
Severity: grave
Tags: security
Justification: renders package unusable

3.3.2-0pre3 introduces a very serious miscompilation when inline functions are in the lvalue of conditional expressions (at least, I think that this is the trigger condition).

It was introduced sometime between 3.3.2-0pre2 (2003/08/31) and 3.3.2-0pre3 (2003/09/08).
It appears to generally generate an infinite loop in which it repeatedly evaluates the inlined function, though I also observed it to manifest in repeated, but terminating evaluation (in which it calculated the left-hand expression two or more times, butr then did perform the assignment).

This will break most users of the QT template library container classes (and thus KDE) - probably most other C++ applications if my guess as to the nature of the bug is correct. I discovered it manifesting in the form of my locally-built kbuildsycoca, qt-assistant, and qt-linguist hanging partway through their startups. Chris Cheney (KDE maintainer) is also able to reproduce the behavior in my provided testcase, though his KDE/QT debian have not been rebuilt since 3.3.2-0pre3 was installed.

A minimal testcase derived from the QListView::addColumn method (in which I first observed this problem) is available at http://puetzk.org/tmp/testcast.tgz. If compiled with 3.3.2-0pre2 it will run and exit, with 3.3.2-0pre3 it hangs with 100% cpu usage. It will also run in 3.2.3-0pre3 as long as -finline is disabled. I was unable to isolate a small example for the behavior in which it executed more than once the lvalue function (qux) more than once, but not endlessly, though I occasionally saw this behavior as I worked to minimize the testcase. I believe both symptoms are related to the same underlying cause.

-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux puetzk 2.6.0-test4-mm1 #1 SMP Tue Aug 26 22:09:58 CDT 2003 i686
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8

Versions of packages g++-3.3 depends on:
ii  gcc-3.3                    1:3.3.2-0pre3 The GNU C compiler
ii  gcc-3.3-base               1:3.3.2-0pre3 The GNU Compiler Collection (base 
ii  libc6                      2.3.2-7       GNU C Library: Shared libraries an
ii  libstdc++5-3.3-dev         1:3.3.2-0pre3 The GNU Standard C++ Library v3 (d

-- no debconf information


---------------------------------------
Received: (at 210848-close) by bugs.debian.org; 20 Sep 2003 17:53:30 +0000
>From katie@auric.debian.org Sat Sep 20 12:53:23 2003
Return-path: <katie@auric.debian.org>
Received: from auric.debian.org [206.246.226.45] 
	by master.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1A0lv3-0001W1-00; Sat, 20 Sep 2003 12:53:17 -0500
Received: from katie by auric.debian.org with local (Exim 3.35 1 (Debian))
	id 1A0lpV-0006Wv-00; Sat, 20 Sep 2003 13:47:33 -0400
From: Ryan Murray <rmurray@debian.org>
To: 210848-close@bugs.debian.org
X-Katie: $Revision: 1.35 $
Subject: Bug#210848: fixed in gcc-3.3 1:3.3.2ds2-0pre4
Message-Id: <E1A0lpV-0006Wv-00@auric.debian.org>
Sender: Archive Administrator <katie@auric.debian.org>
Date: Sat, 20 Sep 2003 13:47:33 -0400
Delivered-To: 210848-close@bugs.debian.org

Source: gcc-3.3
Source-Version: 1:3.3.2ds2-0pre4

We believe that the bug you reported is fixed in the latest version of
gcc-3.3, which is due to be installed in the Debian FTP archive:

cpp-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/cpp-3.3_3.3.2-0pre4_i386.deb
fastjar_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/fastjar_3.3.2-0pre4_i386.deb
fixincludes_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/fixincludes_3.3.2-0pre4_i386.deb
g++-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/g++-3.3_3.3.2-0pre4_i386.deb
g77-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/g77-3.3_3.3.2-0pre4_i386.deb
gcc-3.3-base_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gcc-3.3-base_3.3.2-0pre4_i386.deb
gcc-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gcc-3.3_3.3.2-0pre4_i386.deb
gcc-3.3_3.3.2ds2-0pre4.diff.gz
  to pool/main/g/gcc-3.3/gcc-3.3_3.3.2ds2-0pre4.diff.gz
gcc-3.3_3.3.2ds2-0pre4.dsc
  to pool/main/g/gcc-3.3/gcc-3.3_3.3.2ds2-0pre4.dsc
gcj-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gcj-3.3_3.3.2-0pre4_i386.deb
gij-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gij-3.3_3.3.2-0pre4_i386.deb
gnat-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gnat-3.3_3.3.2-0pre4_i386.deb
gobjc-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gobjc-3.3_3.3.2-0pre4_i386.deb
gpc-2.1-3.3_3.3.2.20030830-0pre4_i386.deb
  to pool/main/g/gcc-3.3/gpc-2.1-3.3_3.3.2.20030830-0pre4_i386.deb
libffi2-dev_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libffi2-dev_3.3.2-0pre4_i386.deb
libffi2_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libffi2_3.3.2-0pre4_i386.deb
libg2c0_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libg2c0_3.3.2-0pre4_i386.deb
libgcc1_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libgcc1_3.3.2-0pre4_i386.deb
libgcj-common_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libgcj-common_3.3.2-0pre4_i386.deb
libgcj4-dev_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libgcj4-dev_3.3.2-0pre4_i386.deb
libgcj4_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libgcj4_3.3.2-0pre4_i386.deb
libobjc1_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libobjc1_3.3.2-0pre4_i386.deb
libstdc++5-3.3-dbg_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libstdc++5-3.3-dbg_3.3.2-0pre4_i386.deb
libstdc++5-3.3-dev_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libstdc++5-3.3-dev_3.3.2-0pre4_i386.deb
libstdc++5-3.3-pic_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libstdc++5-3.3-pic_3.3.2-0pre4_i386.deb
libstdc++5_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/libstdc++5_3.3.2-0pre4_i386.deb
protoize_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/protoize_3.3.2-0pre4_i386.deb
treelang-3.3_3.3.2-0pre4_i386.deb
  to pool/main/g/gcc-3.3/treelang-3.3_3.3.2-0pre4_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 210848@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Ryan Murray <rmurray@debian.org> (supplier of updated gcc-3.3 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Fri, 19 Sep 2003 22:51:19 -0600
Source: gcc-3.3
Binary: libgnat3.15 gcc-3.3-nof gcc-3.3 libobjc1 libgcc1 lib64g2c0 libstdc++5-3.3-doc libgcj4 gpc-2.1-3.3-doc libstdc++5 cpp-3.3-doc protoize cpp-3.3 libstdc++5-3.3-dbg g77-3.3-doc gpc-2.1-3.3 g77-3.3 libgcj4-dev gcc-3.3-doc lib64objc1 lib64ffi2 libstdc++5-3.3-dev libffi2-dev gcj-3.3 libgcj-common gobjc-3.3 lib64stdc++5 gcc-3.3-soft-float lib64gcj4 treelang-3.3 libg2c0-dev lib64gcc1 fastjar lib64gnat3.15 fixincludes libg2c0 gij-3.3 libstdc++5-3.3-pic gcc-3.3-base g++-3.3 gnat-3.3 libffi2 gnat-3.3-doc
Architecture: i386 source 
Version: 1:3.3.2ds2-0pre4
Distribution: unstable
Urgency: low
Maintainer: Ryan Murray <rmurray@debian.org>
Changed-By: Ryan Murray <rmurray@debian.org>
Description: 
 cpp-3.3    - The GNU C preprocessor
 fastjar    - Jar creation utility
 fixincludes - Fix non-ANSI header files
 g++-3.3    - The GNU C++ compiler
 g77-3.3    - The GNU Fortran 77 compiler
 gcc-3.3    - The GNU C compiler
 gcc-3.3-base - The GNU Compiler Collection (base package)
 gcj-3.3    - The GNU compiler for Java(TM)
 gij-3.3    - The GNU Java bytecode interpreter
 gnat-3.3   - The GNU Ada compiler
 gobjc-3.3  - The GNU Objective-C compiler
 gpc-2.1-3.3 - The GNU Pascal compiler
 libffi2    - Foreign Function Interface library runtime
 libffi2-dev - Foreign Function Interface library development
 libg2c0    - Runtime library for GNU Fortran 77 applications
 libgcc1    - GCC support library
 libgcj-common - Java runtime library (common files)
 libgcj4    - Java runtime library for use with gcj
 libgcj4-dev - Java development headers and static library for use with gcj
 libobjc1   - Runtime library for GNU Objective-C applications
 libstdc++5 - The GNU Standard C++ Library v3
 libstdc++5-3.3-dbg - The GNU Standard C++ Library v3 (debugging files)
 libstdc++5-3.3-dev - The GNU Standard C++ Library v3 (development files)
 libstdc++5-3.3-pic - The GNU Standard C++ Library v3 (shared library subset kit)
 protoize   - Create/remove ANSI prototypes from C code
 treelang-3.3 - The GNU Treelang compiler
Closes: 210848
Changes: 
 gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low
 .
   * Add gcc-unsharing_lhs patch (closes: #210848)
Files: 
 100b24bbb434ada322f957c1287c187e 1690338 devel optional gcj-3.3_3.3.2-0pre4_i386.deb
 125a6e8b1bf106839c1619f13c6c9a46 66522 libs optional libffi2_3.3.2-0pre4_i386.deb
 1425fb431353370e61965a15738bf6a4 2220015 devel standard gcc-3.3_3.3.2ds2-0pre4.diff.gz
 1a9cd68f4c0f51f7556697b676493279 320830 libdevel extra libstdc++5-3.3-pic_3.3.2-0pre4_i386.deb
 24ef6add1ad7f29a06ca26873af370de 766336 libdevel standard libstdc++5-3.3-dev_3.3.2-0pre4_i386.deb
 6142973740c8aee15f0b23463cd9e68d 2474 devel standard gcc-3.3_3.3.2ds2-0pre4.dsc
 3cea2eec05afdcb518800e66d8f06e06 10842 libdevel optional libffi2-dev_3.3.2-0pre4_i386.deb
 41931956d336e1b5f11acad3b799e192 3976398 libs optional libgcj4_3.3.2-0pre4_i386.deb
 457df05cc847b0b88eb0c22af762d35d 141100 devel important gcc-3.3-base_3.3.2-0pre4_i386.deb
 49c8400b324555b4e5c94c742b32d4d7 107032 devel extra fastjar_3.3.2-0pre4_i386.deb
 4e84ec0f191bb468971128891e15fbce 50284 libs optional libg2c0_3.3.2-0pre4_i386.deb
 515901f7ad79c4baed17df20b11735a9 1767104 devel standard g++-3.3_3.3.2-0pre4_i386.deb
 6ad88de660331fb36251091cbbbc07ad 23224 devel optional protoize_3.3.2-0pre4_i386.deb
 7b56b2f8ffd768d1eb5851726ad5ab6b 56040 libs optional libgcj-common_3.3.2-0pre4_i386.deb
 7d60a9cdef0d88dd58704ff950835354 130480 libs optional libobjc1_3.3.2-0pre4_i386.deb
 8d042dd0d9977b8c48185d593b3f2704 13020 devel optional gij-3.3_3.3.2-0pre4_i386.deb
 9f3326d944d9fc7689f707110d21497b 1284164 devel optional treelang-3.3_3.3.2-0pre4_i386.deb
 a93a0b64423f366d1cb93d0418338bac 1607960 devel optional g77-3.3_3.3.2-0pre4_i386.deb
 aae4fc4290097309a6411b8b0344237f 5043120 libdevel extra libstdc++5-3.3-dbg_3.3.2-0pre4_i386.deb
 cbadb476c03619011f2ccf65c17085e4 71052 libs important libgcc1_3.3.2-0pre4_i386.deb
 cec8cd646fe606c8dfb6b759210678de 4726576 libdevel optional libgcj4-dev_3.3.2-0pre4_i386.deb
 db446c23521cfb8775628245e7641461 281834 base important libstdc++5_3.3.2-0pre4_i386.deb
 e0bcc4fe117f90b82d842105057c95f2 1309356 devel standard gcc-3.3_3.3.2-0pre4_i386.deb
 e343f71b944038a971d8b9f1edb4fa4f 47906 devel optional fixincludes_3.3.2-0pre4_i386.deb
 e3db148cce91684afde37ee5dc976ac4 1925438 devel optional gpc-2.1-3.3_3.3.2.20030830-0pre4_i386.deb
 ecd988485f67f8e643a50a726d89c39c 6265658 devel optional gnat-3.3_3.3.2-0pre4_i386.deb
 fb3b3c34eec0399a3104c5fcd3367f20 1462748 devel optional gobjc-3.3_3.3.2-0pre4_i386.deb
 ff681091c1e17e407c8f6d3ccd38039a 1386608 interpreters standard cpp-3.3_3.3.2-0pre4_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/bI5rN2Dbz/1mRasRAsdPAJwJEjNdvLipwplEOKBQ8dJdpi2oZwCfT8t1
1HdWxyMBUsnBpAbFYmb17/0=
=QP2M
-----END PGP SIGNATURE-----



Reply to: