Skip to content

XFCE desktop components fail to start on kernels without close_range syscall #389

@lanmower

Description

@lanmower

Problem

On Oracle Linux and older kernels lacking the close_range syscall, XFCE session components (xfdesktop, xfwm4, xfce4-panel, xfsettingsd) fail to start. X server and Chromium work but desktop environment does not appear.

Root cause

  • close_range syscall returns EPERM on older kernels
  • XFCE components require D-Bus session bus
  • LD_PRELOAD shim not inherited by XFCE session processes

Fix prompt

Fix XFCE startup on kernels without close_range syscall:

1. Create shim_close_range.c:
#define _GNU_SOURCE
#include <errno.h>
int close_range(unsigned int first, unsigned int last, int flags) {
    errno = 38;
    return -1;
}

2. In Dockerfile, compile shim and set system-wide:
RUN gcc -fPIC -shared shim_close_range.c -o /usr/local/lib/libshim_close_range.so
RUN echo 'LD_PRELOAD=/usr/local/lib/libshim_close_range.so' >> /etc/environment

3. In startup script, restart XFCE session with D-Bus:
pkill -u $USER xfce4-session || true
sudo -u $USER bash -c 'export LD_PRELOAD=/usr/local/lib/libshim_close_range.so; export DISPLAY=:1; eval $(dbus-launch --sh-syntax); xfce4-session &'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions