← Back to team overview

touch-packages team mailing list archive

[Bug 1514309] Re: Undefined Behavior in GCC 4.8 ios_base.h

 

verified that the proposed libstdc++-4.8-dev, when used with clang,
doesn't show this runtime error.


** Tags removed: verification-needed
** Tags added: verification-done

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to gcc-4.8 in Ubuntu.
https://bugs.launchpad.net/bugs/1514309

Title:
  Undefined Behavior in GCC 4.8 ios_base.h

Status in gcc:
  Unknown
Status in gcc-4.8 package in Ubuntu:
  Fix Released
Status in gcc-5 package in Ubuntu:
  Fix Released
Status in gcc-4.8 source package in Trusty:
  Fix Committed
Status in gcc-5 package in Debian:
  Fix Released

Bug description:
  On Linux, the distros often use libstdc++ rather than libc++ for
  Clang. Building libcxx is an art that I have never been able to
  untangle, and I think the maintainers have discovered the same.

  Below, I'm catching a UB finding when using Clang and libstdc++. This
  one has been around for some time. I first encountered it on Apple
  platforms. I regularly encounter it on Debian and Ubuntu.

  The fix is fairly easy, and I usually just do it: a couple of casts
  among unsigned and the flags. Also see http://lists.llvm.org/pipermail
  /cfe-dev/2015-January/040753.html.

  **********

  $ cat ub.cxx
  #include <iostream>

  int main(int argc, char* argv[])
  {
    std::cout << std::hex << argc << std::endl;
    std::cout << std::dec << argc << std::endl;
    return 0;
  }

  $ clang++ -fsanitize=undefined ub.cxx -o ub.exe

  $ ./ub.exe
  /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/ios_base.h:96:24: runtime error: load of value 4294967221, which is not a valid value for type 'std::_Ios_Fmtflags'
  /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/ios_base.h:76:67: runtime error: load of value 4294967221, which is not a valid value for type 'std::_Ios_Fmtflags'
  1
  1

  **********

  $ g++ --version
  g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

  $ uname -a
  Linux ubuntu 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:20:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

  $ lsb_release
  No LSB modules are available.

  **********

  $ apt-cache show g++
  Package: g++
  Priority: optional
  Section: devel
  Installed-Size: 34
  Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
  Original-Maintainer: Debian GCC Maintainers <debian-gcc@xxxxxxxxxxxxxxxx>
  Architecture: amd64
  Source: gcc-defaults (1.124ubuntu6)
  Version: 4:4.8.2-1ubuntu6
  Provides: c++-compiler
  Depends: cpp (>= 4:4.8.2-1ubuntu6), gcc (>= 4:4.8.2-1ubuntu6), g++-4.8 (>= 4.8.2-5~), gcc-4.8 (>= 4.8.2-5~)
  Suggests: g++-multilib
  Filename: pool/main/g/gcc-defaults/g++_4.8.2-1ubuntu6_amd64.deb
  Size: 1490
  MD5sum: 7332a4e9116b821e167a3d0236ca413a
  SHA1: 2c7201808be1029d21b7691c5a855535a4fcbd51
  SHA256: 02c3d204efe6c34bf3de655aaf6a9ce524511977aedf92d7bce7093d0581f977
  Description-en: GNU C++ compiler
   This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
   .
   This is a dependency package providing the default GNU C++ compiler.
  Description-md5: 4d44b18774ae5123b7c3f70d940cf655
  Bugs: https://bugs.launchpad.net/ubuntu/+filebug
  Build-Essential: yes
  Origin: Ubuntu
  Supported: 5y

To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/1514309/+subscriptions