xserver/os
Twaik Yont 5568b0f83f os: use close-on-exec for X server socket to prevent fd leaks
In most typical Linux X servers (like Xvfb, Xephyr, or Xwayland), no child process outlives the server, so this issue rarely arises. However, in embedded X servers (based on Xvfb or Kdrive) or in custom Xorg modules, the server might launch a long-running command with regular fork+exec calls. If the X server crashes or exits while that command is still running (for example, it spawns a tombstone generator or any process that hangs or turns to zombie), the file descriptor associated with the abstract socket can remain open in the child process. This leads to the kernel refusing to allow another X server to bind the same socket until the child process terminates (because there is no explicit way to unlink abstract socket, unlike Unix socket). By marking the file descriptor as close-on-exec, we ensure it is automatically closed in child processes, preserving the ability of a new X server process to bind the socket immediately.

Signed-off-by: Twaik Yont <9674930+twaik@users.noreply.github.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1906>
2025-07-19 21:42:37 +00:00
..
.gitignore dix and os: gitignore dix.O and os.O 2011-09-23 17:14:47 -07:00
access.c os: unexport ClientIsLocal() 2025-02-18 10:53:44 +00:00
alloc.c os: move alloc functions to separate source file 2024-02-29 10:09:37 +00:00
audit.h os: unexport audit functions 2024-04-15 19:54:34 +00:00
auth.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
auth.h os: unexport fields from opaque.h not used by modules / drivers 2024-06-23 21:19:27 +00:00
backtrace.c Revert "os: log: replace ErrorFSigSafe() by ErrorF()" 2025-06-24 23:40:50 +00:00
busfault.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
busfault.h os: fix missing include of misc.h in busfault.h 2024-04-16 14:19:59 +02:00
client.c os: split off internal definitions from client.h 2024-10-10 13:45:29 +00:00
client_priv.h Revert "os: unexport SetCriticalOutputPending()" 2025-06-24 11:23:14 -07:00
cmdline.h os: unexport command line args handling functions 2024-04-15 21:21:40 +00:00
connection.c os: use close-on-exec for X server socket to prevent fd leaks 2025-07-19 21:42:37 +00:00
ddx_priv.h os: unexport ddx callbacks 2024-05-08 09:37:35 +02:00
fmt.c os: move out Format*() functions 2024-03-09 17:34:51 +00:00
fmt.h misc.h: unexport compare_version() 2025-02-18 11:17:40 +00:00
inputthread.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
io.c os: Check for integer overflow on BigRequest length 2025-06-18 11:40:54 +02:00
log.c Revert "os: log: drop unused variables" 2025-06-24 23:40:52 +00:00
meson.build os: move out LockServer logic from util.c to serverlock.c 2024-07-26 22:26:07 +00:00
mitauth.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
mitauth.h os: move Auth* function types to separate header 2024-02-22 23:42:53 +00:00
osdep.h Revert "xwin: drop duplicate OsVendorVErrorF()" 2025-06-24 23:40:49 +00:00
osinit.c Revert "os: log: replace LogMessageVerbSigSafe() by LogMessageVerb()" 2025-06-24 23:40:51 +00:00
ospoll.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
ospoll.h os: Add ospoll interface [v2] 2016-07-21 15:04:47 -04:00
reallocarray.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
screensaver.h os: unexport screen saver timer functions 2024-09-01 20:23:10 +00:00
serverlock.c os: move -nolock help message printing to serverlock.h 2024-07-26 22:26:07 +00:00
serverlock.h os: move -nolock help message printing to serverlock.h 2024-07-26 22:26:07 +00:00
strcasecmp.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
strcasestr.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
string.c os: move string functions to separate source file 2024-02-29 10:09:37 +00:00
strlcat.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
strlcpy.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
strndup.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
timingsafe_memcmp.c timingsafe_memcmp: Fix meson build 2017-05-10 10:56:16 -04:00
utils.c Revert "os: move out extension disable flags to corresponing extensions" 2025-06-17 20:54:49 +00:00
WaitFor.c Revert "os: drop unused TimerCheck()" 2025-06-24 11:23:14 -07:00
xdmauth.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
xdmauth.h os: move Auth* function types to separate header 2024-02-22 23:42:53 +00:00
xdmcp.c os: if getaddrinfo() is available, use it, even if IPv6 support is disabled 2025-01-27 22:34:51 +00:00
xdmcp.h Fix build with -Dxdmcp=false 2024-02-25 11:55:56 +01:00
xprintf.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
xserver_poll.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
xserver_poll.h os: move xserver_poll.h into os/ directory 2024-06-21 00:53:39 +00:00
xsha1.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
xsha1.h include: move xsha1.h to os/ 2024-03-03 23:11:05 +00:00
xstrans.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00