Bug 32778 - journald failed to start after recent selinux update
Summary: journald failed to start after recent selinux update
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: libselinux (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-11-21 18:53 MSK by Vladimir D. Seleznev
Modified: 2016-11-22 16:29 MSK (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir D. Seleznev 2016-11-21 18:53:17 MSK
# systemctl start systemd-journald
Job for systemd-journald.service failed because a fatal signal was delivered to the control process.
See "systemctl status systemd-journald.service" and "journalctl -xe" for details.

Если откатить libselinux до 1:2.3-alt1, то сервис journald успешно стартует.
Comment 1 Anton Farygin 2016-11-22 09:18:52 MSK
Как воспроизводить ? у меня journal прекрасно работает с новым libselinux.
Comment 2 Anton Farygin 2016-11-22 09:25:04 MSK
Воспроизвёл на машине с выключенным selinux.
Comment 3 Evgenii Terechkov 2016-11-22 09:52:49 MSK
У меня на x86_64/systemd/un-def c выключенным SELinux после обновления но без перезапуска демонов проявилось после засыпания/просыпания машины. Проявилось смертью systemd-networkd сначала с SIGABRT, потом с SIGSYS. Позже умер с SIGSYS и systemd-hostnamed.
Comment 4 Anton Farygin 2016-11-22 09:54:13 MSK
А включение selinux не помогает ? хотя бы без политики.
Comment 5 Anton Farygin 2016-11-22 10:05:28 MSK
Судя по логам journald запускается, но процесс systemd его прибивает:
Nov 22 09:23:18 my.host systemd-journald[253]: Received SIGTERM from PID 1 (systemd).

Кто-нибуть знает, зачем он это делает ?
Comment 6 Anton Farygin 2016-11-22 10:19:17 MSK
2361 - это journald, запуск из под systemd

[pid  2361] statfs("/sys/fs/selinux", 0x7ffca0c32f20) = -1 ENOENT (No such file or directory)
[pid  2361] statfs("/selinux", {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=28817674, f_bfree=4310618, f_bavail=2840993, f_files=7331840, f_ffree=6803083, f_fsid={1759202911, 2549185661}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOATIME}) = 0
[pid  2361] +++ killed by SIGSYS +++
Comment 7 Anton Farygin 2016-11-22 10:20:07 MSK
Тоже самое запуск без systemd напрямую (/lib/systemd/systemd-journald)

2475  statfs("/sys/fs/selinux", 0x7ffc2b6cb740) = -1 ENOENT (No such file or directory)
2475  statfs("/selinux", {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=28817674, f_bfree=4310265, f_bavail=2840640, f_files=7331840, f_ffree=6802971, f_fsid={1759202911, 2549185661}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOATIME}) = 0
2475  mount("proc", "/proc", "proc", 0, NULL) = -1 EBUSY (Device or resource busy)
2475  open("/proc/filesystems", O_RDONLY) = 3
2475  fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
Comment 8 Evgenii Terechkov 2016-11-22 10:22:03 MSK
А можно краткую инструкцию, как включить selinux без политики и ничего не сломать? Тогда смогу вечером попробовать, если ещё нужно будет.
Comment 9 Anton Farygin 2016-11-22 10:27:15 MSK
Если убрать в systemd-journald.service из фильров системных вызовов @mount то всё начинает работать.

Всё дело в этом изменении в апстриме libselinux:
commit 9df498884665d79474b79f0f30d1cd67df11bd3e
Author: Ben Shelton <ben.shelton@ni.com>
Date:   Wed Apr 15 15:56:57 2015 -0500

    libselinux: Mount procfs before checking /proc/filesystems
    
    In the case where the SELinux security module is not loaded in the
    kernel and it's early enough in the boot process that /proc has not yet
    been mounted, selinuxfs_exists() will incorrectly return 1, and
    selinux_init_load_policy() will print a message like this to the
    console:
    
    Mount failed for selinuxfs on /sys/fs/selinux:  No such file or directory
    
    To fix this, mount the procfs before attempting to open
    /proc/filesystems, and unmount it when done if it was initially not
    mounted.  This is the same thing that selinux_init_load_policy() does
    when reading /proc/cmdline.
    
    Signed-off-by: Ben Shelton <ben.shelton@ni.com>
Comment 10 Anton Farygin 2016-11-22 10:36:36 MSK
Сейчас соберу исправление
Comment 11 Repository Robot 2016-11-22 11:05:16 MSK
libselinux-1:2.5-alt2 -> sisyphus:

* Tue Nov 22 2016 Anton Farygin <rider@altlinux> 1:2.5-alt2
- upstream fixes for /proc mounting (closes: #32778)
Comment 12 Gleb F-Malinovskiy 2016-11-22 16:29:20 MSK
Да, у меня так работает.