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

Bug#901062: marked as done (qtbase5-dev: qtbase5-dev: QFile::exists() returns false for existing files?!)



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 ---
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 ---
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 Shachnev

Attachment: signature.asc
Description: PGP signature


--- End Message ---

Reply to: