QFileSystemWatcher fails with sockets on FreeBSD

David Faure faure at kde.org
Tue May 3 11:27:22 BST 2022


I just debugged the reason for some of the kwayland failures on FreeBSD.

The warnings like
QKqueueFileSystemWatcherEngine::addPaths: open: Operation not supported
seen on
https://build.kde.org/job/Frameworks/view/Platform%20-%20FreeBSDQt5.15/job/kwayland/job/kf5-qt5%20FreeBSDQt5.15/165/testReport/projectroot.autotests/client/kwayland_testDataSource/
are actually the reason for the failure
FAIL!  : TestDataSource::testDestroy() 'connectionDiedSpy.wait()' returned FALSE. ()
since this is normally triggered by QFileSystemWatcher noticing that the socket got deleted.

But on FreeBSD, it looks like QFileSystemWatcher doesn't support sockets, it tries to open them as a file?

$ truss bin/testDataSource testOffer |& grep datasource

openat(AT_FDCWD,"/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0.lock",O_RDWR|O_CREAT|O_CLOEXEC,0660) = 8 (0x8)
fstatat(AT_FDCWD,"/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0",0x7fffffffc840,AT_SYMLINK_NOFOLLOW) ERR#2 'No such file or directory'
bind(9,{ AF_UNIX "/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0" },56) = 0 (0x0)
connect(12,{ AF_UNIX "/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0" },57) = 0 (0x0)
openat(AT_FDCWD,"/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0",O_RDONLY|O_CLOEXEC,00) ERR#45 'Operation not supported'
unlink("/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0") = 0 (0x0)
unlink("/tmp/runtime-dfaure/kwayland-test-wayland-datasource-0.lock") = 0 (0x0)

This comes from QKqueueFileSystemWatcherEngine::addPaths calling qt_safe_open() on the socket.
I guess it needs to do this differently, at least for sockets? Anyone with kqueue/kevent experience? 

-- 
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5





More information about the kde-freebsd mailing list