CVSROOT:        /cvs
Module name:    ports
Changes by:     [email protected]       2025/08/11 04:51:15

Modified files:
        x11/qt6/qtbase : Makefile 
Added files:
        x11/qt6/qtbase/patches: 
                                
patch-src_corelib_kernel_qeventdispatcher_glib_cpp 
                                
patch-src_network_socket_qnativesocketengine_unix_cpp 

Log message:
Fix poll() busy-loop on socket close with POLLOUT

https://codereview.qt-project.org/c/qt/qtbase/+/651677

"On FreeBSD when asked for POLLOUT the poll() syscall returns only POLLHUP to
signify the fact that the other side closed the connection. It never sends
POLLERR for EOF cases, which results in a busy-loop inside the Glib dispatcher:

- poll() returns immediately with POLLHUP for a closed socket
- socketNotifierSourceCheck() does not detect it, because
events = POLLOUT | POLLERR and we get .revents = POLLHUP.
The (events & revents != 0) condition evaluates to false
- the code decides there is nothing to do and a new iteration starts"

Reply via email to