Your message dated Fri, 8 Jun 2018 22:57:22 +0300 with message-id <20180608195722.GA11503@mitya57.me> and subject line Re: Bug#901062: qtbase5-dev: qtbase5-dev: QFile::exists() returns false for existing files?! has caused the Debian Bug report #901062, regarding qtbase5-dev: qtbase5-dev: QFile::exists() returns false for existing files?! 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 this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 901062: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901062 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: qtbase5-dev: qtbase5-dev: QFile::exists() returns false for existing files?!
- From: Wearenotalone <wearenotalone@freenet.de>
- Date: Fri, 8 Jun 2018 16:01:54 +0200
- Message-id: <[🔎] ccf32552-a8c1-6362-1bc3-abb772dea7a1@freenet.de>
Package: qtbase5-dev Version: 5.10.1+dfsg-7 Severity: normal Dear Maintainer, did a fresh install of debian sid within docker and stumbled upon this bug in QFile: QFile's method exists() returns false even if that file exists. STEPS TO REPRODUCE: $ cat << 'EOF' >> /tmp/CMakeLists.txt cmake_minimum_required(VERSION 3.0) project(test) find_package(Qt5Core REQUIRED) add_executable(tgt main.cpp) target_link_libraries(tgt Qt5::Core) EOF $ cat << 'EOF' >> /tmp/main.cpp #include <QFile> #include <QString> #include <QFileInfo> #include <iostream> int main() { QString path{"/bin/sh"}; QFile qf{path}; QFileInfo qfi{path}; std::cout << "TRUE:=" << true << std::endl; std::cout << "QFile::exists() == " << qf.exists() << std::endl; std::cout << "QFileInfo::exists() == " << qfi.exists() << std::endl; return 0; } EOF $ cmake . -- The C compiler identification is GNU 7.3.0 -- The CXX compiler identification is GNU 7.3.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /tmp/ $ make Scanning dependencies of target tgt [ 50%] Building CXX object CMakeFiles/tgt.dir/main.cpp.o [100%] Linking CXX executable tgt [100%] Built target tgt $ ./tgt TRUE:=1 QFile::exists() == 0 QFileInfo::exists() == 1 EXPECTED RESULT (same as in debian stretch): $ ./tgt TRUE:=1 QFile::exists() == 1 QFileInfo::exists() == 1 QFile is quite fundamental to Qt and KDE. For me it prevented compilation of kdevelop from git because kdevelop uses desktoptojson (from libkf5coreaddons-dev-bin) during build which fails due to this bug (QFile is used in line 312 in file kcoreaddons-5.46.0/src/lib/plugin/desktopfileparser.cpp).. So far I was unable to locate the bug. QFile's code (src/corelib/io/qfile.cpp) didn't change much from qtbase-opensource-src-5.7.1 (stretch) to qtbase-opensource-src-5.10.1 (sid), so my guess is its somewhere in /src/corelib/io/qabstractfileengine.cpp or even lower. BUT surprisingly KDE apps like akregator have successfully been build for debian sid but fail for me/my sid install. They should have suffered the same problems during build because they also use desktoptojson during build. Any ideas? Cheers Jakob -- System Information: Debian Release: buster/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-6-amd64 (SMP w/4 CPU cores) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968), LANGUAGE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/dash Init: unable to detect Versions of packages qtbase5-dev depends on: ii libgl1-mesa-dev [libgl-dev] 18.0.5-1 ii libglu1-mesa-dev [libglu-dev] 9.0.0-2.1 ii libqt5concurrent5 5.10.1+dfsg-7 ii libqt5core5a 5.10.1+dfsg-7 ii libqt5dbus5 5.10.1+dfsg-7 ii libqt5gui5 5.10.1+dfsg-7 ii libqt5network5 5.10.1+dfsg-7 ii libqt5printsupport5 5.10.1+dfsg-7 ii libqt5sql5 5.10.1+dfsg-7 ii libqt5test5 5.10.1+dfsg-7 ii libqt5widgets5 5.10.1+dfsg-7 ii libqt5xml5 5.10.1+dfsg-7 ii libxext-dev 2:1.3.3-1+b2 ii qt5-qmake 5.10.1+dfsg-7 ii qtbase5-dev-tools 5.10.1+dfsg-7 ii qtchooser 64-ga1b6736-5 Versions of packages qtbase5-dev recommends: ii libqt5opengl5-dev 5.10.1+dfsg-7 Versions of packages qtbase5-dev suggests: ii default-libmysqlclient-dev 1.0.4 pn firebird-dev <none> ii libegl1-mesa-dev 18.0.5-1 ii libgl1-mesa-dev 18.0.5-1 ii libpq-dev 10.4-2 ii libsqlite3-dev 3.23.1-1 ii unixodbc-dev 2.3.6-0.1 -- no debconf information
--- End Message ---
--- Begin Message ---
- To: Wearenotalone <wearenotalone@freenet.de>, 901062-close@bugs.debian.org
- Subject: Re: Bug#901062: qtbase5-dev: qtbase5-dev: QFile::exists() returns false for existing files?!
- From: Dmitry Shachnev <mitya57@debian.org>
- Date: Fri, 8 Jun 2018 22:57:22 +0300
- Message-id: <20180608195722.GA11503@mitya57.me>
- In-reply-to: <[🔎] a65ecf60-15b5-04ed-079e-4d619424d981@freenet.de>
- References: <[🔎] ccf32552-a8c1-6362-1bc3-abb772dea7a1@freenet.de> <[🔎] 20180608185454.GB8334@mitya57.me> <[🔎] ccf32552-a8c1-6362-1bc3-abb772dea7a1@freenet.de> <[🔎] a65ecf60-15b5-04ed-079e-4d619424d981@freenet.de>
On Fri, Jun 08, 2018 at 09:07:19PM +0200, Wearenotalone wrote: > Found the bug. > > Docker uses seccomp security profiles to restrict e.g. system calls [1]. > In docker 17.05 system call "statx" is blocked [2][3], in trunk and in > 18.04 which is not released yet that system call will be allowed [4][5]. > By running the docker container with "--security-opt seccomp=unconfined" > or "--privileged" the system call "statx" not blocked [5] and everything > works as excepted: QFile::exists() returns true for existing files. Thanks for the great investigation, you saved us a lot of time :) I don’t think this is something we care about from Debian packaging point of view. If you think that Qt behavior should be changed somehow (e.g. print a warning, or fall back to another syscall), then I would suggest you to file an upstream bug at https://bugreports.qt.io/. -- Dmitry ShachnevAttachment: signature.asc
Description: PGP signature
--- End Message ---