[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
commit 9101c36c653cf90ccd133d6e85eca6b264de4b81 Author: David KalnischkiesDate: Fri Aug 12 19:11:01 2016 +0200 drop "incorrect" const attribute from DirectoryExists Since its existence in 2010 DirectoryExists was always marked with this attribute, but for no real reason. Arguably a check for the existence of the file is not modifying global state, so theoretically this shouldn't be a problem. It is wrong from a logical point of view through as between two calls the directory could be created so the promise we made to the compiler that it could remove the second call would be wrong, so API wise it is wrong. The problem for the compiler is a lot more likely through in the underlying implementation of stat() and co, so for both reasons lets drop this attribute here and be (hopefully) done with it forever. It's a bit mysterious that this is only observeable on ppc64el and can be fixed by reordering code ever so slightly, but in the end its more our fault for adding this attribute than the compilers fault for doing something silly based on the attribute. LP: 1473674 diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 4a1676d..15665f8 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -164,7 +164,7 @@ bool RemoveFile(char const * const Function, std::string const ); int GetLock(std::string File,bool Errors = true); bool FileExists(std::string File); bool RealFileExists(std::string File); -bool DirectoryExists(std::string const ) APT_CONST; +bool DirectoryExists(std::string const ); bool CreateDirectory(std::string const , std::string const ); time_t GetModificationTime(std::string const ); bool Rename(std::string From, std::string To); ** Changed in: gcc-6 (Ubuntu) Status: New => Invalid ** Changed in: gcc-5 (Ubuntu) Status: New => Invalid -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Fix Released Status in gcc-5 package in Ubuntu: Invalid Status in gcc-6 package in Ubuntu: Invalid Status in apt source package in Wily: Confirmed Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: "" Expected: path + "/.disk/" Which is: "/tmp/apt-tests-findpackage.gpopMw/.disk/" [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
This bug was fixed in the package apt - 1.3~rc1ubuntu2 --- apt (1.3~rc1ubuntu2) yakkety; urgency=medium * Don't build with -O3. See LP: #1473674. -- Matthias KloseFri, 12 Aug 2016 09:44:56 +0200 ** Changed in: apt (Ubuntu) Status: Confirmed => Fix Released -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Fix Released Status in gcc-5 package in Ubuntu: New Status in gcc-6 package in Ubuntu: New Status in apt source package in Wily: Confirmed Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: "" Expected: path + "/.disk/" Which is: "/tmp/apt-tests-findpackage.gpopMw/.disk/" [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
seen again with https://launchpad.net/ubuntu/+source/apt/1.3~rc1ubuntu1 work around with https://launchpad.net/ubuntu/+source/apt/1.3~rc1ubuntu2 ** No longer affects: gcc-6 (Ubuntu Wily) ** No longer affects: gcc-5 (Ubuntu Wily) -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in gcc-6 package in Ubuntu: New Status in apt source package in Wily: Confirmed Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: "" Expected: path + "/.disk/" Which is: "/tmp/apt-tests-findpackage.gpopMw/.disk/" [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
** Also affects: gcc-6 (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in gcc-6 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Status in gcc-6 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: "" Expected: path + "/.disk/" Which is: "/tmp/apt-tests-findpackage.gpopMw/.disk/" [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
DonKult added another workaround for this, which is now in 1.1.2: http://anonscm.debian.org/cgit/apt/apt.git/commit/?id=0300f0077af832e87beb290f26b13404cab81fd3 -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: "" Expected: path + "/.disk/" Which is: "/tmp/apt-tests-findpackage.gpopMw/.disk/" [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
Spent some time trying to reproduce this upstream. From the information given, I am unable to do so. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: Expected: path + /.disk/ Which is: /tmp/apt-tests-findpackage.gpopMw/.disk/ [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
As a guess, is FindPackages being inlined? If so, and if the parameter passed in as InfoDir isn't subsequently used, the compiler would be within its rights to remove the assignment to InfoDir. May want to check callers of FindPackages for this possibility. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: Expected: path + /.disk/ Which is: /tmp/apt-tests-findpackage.gpopMw/.disk/ [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
I looked into this and the issue is the following: There is a Cdrom wrapper: class Cdrom : public pkgCdrom { public: bool FindPackages(std::string const CD, std::vectorstd::string List, std::vectorstd::string SList, std::vectorstd::string SigList, std::vectorstd::string TransList, std::string InfoDir) { std::string const startdir = SafeGetCWD(); EXPECT_FALSE(startdir.empty()); bool const result = pkgCdrom::FindPackages(CD, List, SList, SigList, TransList, InfoDir, NULL, 0); ... } and a unittest that calls it: TEST(CDROMTest,FindPackages) { Cdrom cd; std::string InfoDir; EXPECT_TRUE(cd.FindPackages(path, Packages, Sources, Signatur, Translation, InfoDir)); ... EXPECT_EQ(path + /.disk/, InfoDir); } The actual code for this is apt-pkg/cdrom.cc: bool pkgCdrom::FindPackages(string CD, vectorstring List, vectorstring SList, vectorstring SigList, vectorstring TransList, string InfoDir, pkgCdromStatus *log, unsigned int Depth) { ... if (DirectoryExists(.disk) == true) { if (InfoDir.empty() == true) InfoDir = CD + .disk/; } ... So I suspect that the optimizer gets confused that InfoDir is a reference or it gets confused because InfoDir is not used in FindPackages anymore and it assumes its dead code. I tried to create a simplified testcase but failed so far. Whats interessting is that if I add a std::cerr debug line into cdrom.cc lines (or even a CD = CD): if (DirectoryExists(.disk) == true) { if (InfoDir.empty() == true) { std::cerr debug std::endl; InfoDir = CD + .disk/; } } it works (which indicates dead-code elimination to me). -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: Expected: path + /.disk/ Which is: /tmp/apt-tests-findpackage.gpopMw/.disk/ [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
just building apt-pkg/cdrom.cc with -O2 works -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: Expected: path + /.disk/ Which is: /tmp/apt-tests-findpackage.gpopMw/.disk/ [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
** Bug watch added: GCC Bugzilla #66868 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66868 ** Also affects: gcc via https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66868 Importance: Unknown Status: Unknown -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in gcc: Unknown Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: Expected: path + /.disk/ Which is: /tmp/apt-tests-findpackage.gpopMw/.disk/ [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp
[Touch-packages] [Bug 1473674] Re: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3
the test fails too on amd64 with -O3 -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apt in Ubuntu. https://bugs.launchpad.net/bugs/1473674 Title: apt fails a test from the testsuite on ppc64el when built with gcc-5 and -O3 Status in apt package in Ubuntu: Confirmed Status in gcc-5 package in Ubuntu: New Status in apt source package in Wily: Confirmed Status in gcc-5 source package in Wily: New Bug description: to reproduce: - wily chroot - PPA https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-016/ (this holds gcc-5 as the default, branch 20150711). - dpkg-buildpackage -B note that explicitly using the gcc-5/g++-5 from wily doesn't show the test failure. the only difference in the configuration is that the one in wily is built using the old libstdc++ ABI and the one in the PPA with the dual ABI defaulting to new/c++11. building with -O2 instead of -O3 works around the issue. [ RUN ] CDROMTest.FindPackages /scratch/doko/tmp/apt-1.0.9.10ubuntu1/test/libapt/cdromfindpackages_test.cc:95: Failure Value of: InfoDir Actual: Expected: path + /.disk/ Which is: /tmp/apt-tests-findpackage.gpopMw/.disk/ [ FAILED ] CDROMTest.FindPackages (4 ms) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1473674/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp