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, fa...@kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5



Reply via email to