Bug 41444

Summary: systemd: segfault при dist-upgrade до p10
Product: Branch p10 Reporter: Alexey Sheplyakov <asheplyakov>
Component: systemdAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-p10 <qa-p10>
Severity: critical    
Priority: P5 CC: aen, antohami, asy, cas, iv, lav, rider, shaba, sin, sotor, temap, zxwarior
Version: не указана   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=41454
https://bugzilla.altlinux.org/show_bug.cgi?id=41455
https://bugzilla.altlinux.org/show_bug.cgi?id=41456
https://bugzilla.altlinux.org/show_bug.cgi?id=41457
Attachments:
Description Flags
Лог обновления none

Description Alexey Sheplyakov 2021-11-26 15:46:36 MSK
Действия:

1. Установил workstation 9.2
2. Обновил ядро (до 5.10.81-un-def-alt1)
3. s/p9/p10/g в /etc/apt/sources.list.d/*
4. apt-get dist-upgrade

Последнее, что увидел в консоли:

 936: systemd-boot-efi-1:249.5-alt2     ################################# [ 33%]
 937: systemd-services-1:249.5-alt2     ################################# [ 33%]
 938: systemd-sysvinit-1:249.5-alt2     ################################# [ 33%]
 939: systemd-1:249.5-alt2              ################################# [ 33%]
[ 1058.381277] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[ 1058.388959] CPU: 4 PID: 1 Comm: systemd Not tainted 5.10.81-un-def-alt1 #1
[ 1058.395847] Hardware name: Edelweiss TF307-MB-S-D/BM1BM1-D, BIOS 5.3 09/09/2021
[ 1058.395851] Call trace:
[ 1058.395861]  dump_backtrace+0x0/0x1e8
[ 1058.395866]  show_stack+0x20/0x30
[ 1058.395874]  dump_stack+0xd8/0x134
[ 1058.395878]  panic+0x16c/0x37c
[ 1058.395883]  do_exit+0xa94/0xab0
[ 1058.395886]  do_group_exit+0x4c/0xb0
[ 1058.395890]  __wake_up_parent+0x0/0x38
[ 1058.395896]  el0_svc_common.constprop.4+0x94/0x188
[ 1058.395900]  do_el0_svc+0x2c/0x98
[ 1058.395905]  el0_svc+0x20/0x30
[ 1058.395909]  el0_sync_handler+0x90/0xb8
[ 1058.395914]  el0_sync+0x164/0x180
[ 1058.395928] SMP: stopping secondary CPUs
[ 1058.395938] Kernel Offset: disabled
[ 1058.395942] CPU features: 0x0240022,21002008
[ 1058.395945] Memory Limit: none
[ 1058.531712] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---
Comment 1 Alexey Sheplyakov 2021-11-26 15:51:33 MSK
При последующей перезагрузке снова получаю segfault при попытке запуска systemd:

[    8.398611] Moving filesystem [/dev]:                               [ DONE ]
[    8.516405] Moving filesystem [/run]:                               [ DONE ]
[    8.662697] Unmounting filesystem [/sys]:                           [ DONE ]
[    8.844277] Stopping shell service:  stopped rdshell (pid 183)
                                                                       [ DONE ]
[    9.042572] Asking all remaining processes to terminate:            [ DONE ]
[    9.112627] Killing all remaining processes:                        [PASSED]
[    9.212526] INIT: Running init (/sbin/init)
/sbin/init: erro[    9.876621] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[    9.885645] CPU: 0 PID: 1 Comm: init Not tainted 5.10.81-un-def-alt1 #1
[    9.892273] Hardware name: Edelweiss TF307-MB-S-D/BM1BM1-D, BIOS 5.3 09/09/2021
[    9.899595] Call trace:
[    9.902056]  dump_backtrace+0x0/0x1e8
[    9.905727]  show_stack+0x20/0x30
[    9.909054]  dump_stack+0xd8/0x134
[    9.912465]  panic+0x16c/0x37c
[    9.915529]  do_exit+0xa94/0xab0
[    9.918765]  do_group_exit+0x4c/0xb0
[    9.922348]  __wake_up_parent+0x0/0x38
[    9.926107]  el0_svc_common.constprop.4+0x94/0x188
[    9.930909]  do_el0_svc+0x2c/0x98
[    9.934232]  el0_svc+0x20/0x30
[    9.937296]  el0_sync_handler+0x90/0xb8
[    9.941141]  el0_sync+0x164/0x180
[    9.944474] SMP: stopping secondary CPUs
[    9.948414] Kernel Offset: disabled
[    9.951912] CPU features: 0x0240022,21002008
[    9.956190] Memory Limit: none
[    9.959258] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---
error while loading shared libraries: libsystemd-shared-249.so: cannot open shared object file: No such file or directory
Comment 2 Антон Мидюков 2021-11-26 16:08:47 MSK
У меня такое же было две недели назад на x86_64. Celeron J1900.
Comment 3 Alexey Sheplyakov 2021-11-26 16:12:40 MSK
libsystemd-shared-249.so находится в пакете systemd-utils.
В ходе dist-upgrade пакет systemd обновляется *до* обновления systemd-utils.
После обновления происходит попытка перезапуска systemd (systemctl daemon-reload), которая завершается неудачно из-за того, что не хватает библиотеки libsystemd-shared-249.so. 

Падение init приводит к kernel panic, в результате чего повреждаются другие библиотеки (привет тем, кто забывает вызывать fsync), в том  числе libblake2,
необходимая для работы rpm и apt:

ls -l /usr/lib64/libblake2.so.*
-rw-r--r-- 1 root root  0 Aug  5 11:42 /usr/lib64/libblake2.so.0.0.0

Починить систему в этом состоянии - задача не для слабонервных.
Comment 4 Alexey Sheplyakov 2021-11-26 16:22:41 MSK
Created attachment 9983 [details]
Лог обновления
Comment 5 Alexey Sheplyakov 2021-11-26 16:34:51 MSK
(In reply to Антон Мидюков from comment #2)
> У меня такое же было две недели назад на x86_64. Celeron J1900
Comment 6 Alexey Sheplyakov 2021-11-26 19:33:07 MSK
Зависимости циклические:

systemd -> systemd-utils;
systemd-utils -> systemd-sysctl-common;
systemd-sysctl-common -> startup;
startup -> systemd-utils;
startup -> systemd-sysvinit;
systemd-sysvinit -> systemd;

Интересно, как apt разрывает такие циклы. (Судя по результату - "не стреляйте в пианиста - играет, как умеет").
Comment 7 Alexey Sheplyakov 2021-11-26 19:42:13 MSK
libsystemd-shared-NNN.so - это неотъемлемая часть systemd, паковать её в отдельный пакет (systemd-utils) - очень ненадёжно.
Comment 8 Alexey Shabalin 2021-11-26 20:46:29 MSK
Вот и пришла пора слить все подпакеты в один пакет systemd.
Comment 9 Артём 2021-11-26 21:39:56 MSK
У меня такая же ерунда на всех компьютерах в лаборатории. И ноутбуках и моноблоках и на интерактивной доске.
Удалось обновиться загрузив LiveCD и там через чрут.
Comment 10 Anton Farygin 2021-11-27 10:54:17 MSK
Надеюсь вы не забыли перед обновление поправить priority_distbranch ?
Comment 11 Антон Мидюков 2021-11-27 17:00:54 MSK
(Ответ для Anton Farygin на комментарий #10)
> Надеюсь вы не забыли перед обновление поправить priority_distbranch ?

Я делал
apt-repo set p10

Артём тоже.
Comment 12 Alexey Shabalin 2021-11-27 23:31:18 MSK
Для p10 таск #290888.
Смержил пакет utils и services в основой systemd.
Comment 13 Speccyfighter 2021-12-02 06:28:34 MSK
(Ответ для Alexey Shabalin на комментарий #12)
> Для p10 таск #290888.
> Смержил пакет utils и services в основой systemd.

Такой мерж вреден для систем на sysv.
Иначе вместо не более семидесяти файлов, в системе на sysv будет болтаться больше 650-ти файлов ненужного и бесполезного мусора:

$ rpm -qpvl ./systemd-249.7-alt4.x86_64.rpm | grep -v '^drwx' | wc -l 
731

$ rpm -qpvl ./systemd-249.5-alt2.x86_64.rpm | grep -v ^drwx | wc -l
558

$ rpm -qpvl ./systemd-services-249.5-alt2.x86_64.rpm | grep -v ^drwx | wc -l
111

$ echo '731-558-111' | bc
62


Лучше мержить эти пакеты, - в системах на sysv, их установка блокируется пакетом apt-conf-ignore-systemd:

$ cat /etc/apt/apt.conf.d/ignore-systemd.conf 
/*
 * This is the apt configuration file for systems on sysvinit,
 * to ignore the installation of systemd packages,
 * see http://apt-rpm.org/tricks.shtml for details.
 */


RPM
{
    Ignore {
    // systemd packages.
    "systemd";
    "systemd-services";
    "systemd-sysvinit";
    };
};


systemd-utils мержить с systemd нельзя.
Иначе система на sysv сильно забьётся мусором:

 apt-cache rdepends systemd-utils | grep 'startup\|udev'
  udev
  startup
  udev
  startup-rescue


Текущее в системе на sysv:

$ rpm -qa | grep systemd
libsystemd-246.16-alt1.x86_64
systemd-utils-246.16-alt1.x86_64
apt-conf-ignore-systemd-0.1-alt2.noarch

$ grep -r systemd-tmpfiles /etc/ 2>/dev/null 
/etc/rc.d/init.d/udevd:systemd_tmpfiles=/sbin/systemd-tmpfiles
/etc/rc.d/scripts/cleanup:systemd-tmpfiles --clean
/etc/rc.d/scripts/cleanup:systemd-tmpfiles --remove --create --boot --exclude-prefix=/dev

# rpm -qf $(which systemd-tmpfiles)
systemd-utils-246.16-alt1.x86_64
Comment 14 Антон Мидюков 2021-12-02 07:04:32 MSK
(Ответ для Speccyfighter на комментарий #13)
> (Ответ для Alexey Shabalin на комментарий #12)
> > Для p10 таск #290888.
> > Смержил пакет utils и services в основой systemd.
> 
> Такой мерж вреден для систем на sysv.
> Иначе вместо не более семидесяти файлов, в системе на sysv будет болтаться
> больше 650-ти файлов ненужного и бесполезного мусора:

Всё гораздо хуже, при условии, что в системе на sysv установлен, systemd-utils. При обновлении установится systemd, а это приводит к поломке авторизации пользователей, кроме root. Чинится установкой systemd-utils-standalone и удалением пакетов systemd, pam_systemd, libnss-systemd.

Если же вместо systemd-utils на sysv установлен systemd-utils-standalone, то всё будет хорошо. В выпущенных стартеркитах p10 на sysv systemd-utils-standalone установлен вместо systemd-utils. Так что проблема будет только у тех, кто обновляется с p9 или уже обновился до p10.

А при установленном apt-conf-ignore-systemd systemd-utils заменится systemd-utils-standalone и проблемы не будет вообще.
Comment 15 Alexey Sheplyakov 2021-12-02 10:50:17 MSK
(In reply to Speccyfighter from comment #13)
> (Ответ для Alexey Shabalin на комментарий #12)
> > Для p10 таск #290888.
> > Смержил пакет utils и services в основой systemd.
> 
> Такой мерж вреден для систем на sysv.
> Иначе вместо не более семидесяти файлов, в системе на sysv будет болтаться
> больше 650-ти файлов ненужного и бесполезного мусора:

Система с sysv - сама по себе "ненужный бесполезный мусор".
Comment 16 Alexey Sheplyakov 2021-12-02 11:09:58 MSK
> Лучше мержить эти пакеты, - в системах на sysv, их установка блокируется
> пакетом apt-conf-ignore-systemd:
 
А в чём смысл? Ещё раз поясню суть проблемы.Бинарник /lib/systemd/systemd и "библиотека" /lib/systemd/libsystemd-shared-NNN.so - единое целое, и должны быть в одном пакете.
В этом же пакете должны быть и другие бинарники, которые используют libsystemd-shared-NNN.so (systemd-logind, systemd-resolved, и т.п.).
Потому и придётся прекратить дробить единое целое на куски.

> systemd-utils мержить с systemd нельзя.

Нужно. Потому что иное не поддерживается. Хотите сделать поддержку - ждём Ваших патчей здесь: https://github.com/systemd/systemd
Comment 17 Speccyfighter 2021-12-03 05:10:13 MSK
(Ответ для Alexey Sheplyakov на комментарий #15)
> (In reply to Speccyfighter from comment #13)
> > Такой мерж вреден для систем на sysv.
> > Иначе вместо не более семидесяти файлов, в системе на sysv будет болтаться
> > больше 650-ти файлов ненужного и бесполезного мусора:
> 
> Система с sysv - сама по себе "ненужный бесполезный мусор".

Интересное утверждение.
Я лишь сказал, что бинарники, которые не могут быть использованы в системе даже теоретически, считются как минимум бесполезными. Независимо от того, на чём базируется система. И от них в системе нужно избавляться. И для чистоты системы, и для надёжности, и для безопасности.
Comment 18 Sergey Y. Afonin 2021-12-16 12:38:25 MSK
(In reply to Alexey Sheplyakov from comment #15)

> Система с sysv - сама по себе "ненужный бесполезный мусор".

На самом деле мусор - это система с systemd, как минимум в серверном сегменте, но apt-conf-ignore-systemd вариант приемлимый.
Comment 19 Антон Мидюков 2022-02-20 07:26:07 MSK
Починили:
https://git.altlinux.org/tasks/archive/done/_284/290888/
* Sat Nov 27 2021 Alexey Shabalin <shaba@altlinux.org> 1:249.7-alt3
- Merge services files to main systemd package.
- Merge utils files to main systemd package.
Comment 20 AEN 2022-02-20 08:51:53 MSK
(Ответ для Антон Мидюков на комментарий #19)
> Починили:
> https://git.altlinux.org/tasks/archive/done/_284/290888/
> * Sat Nov 27 2021 Alexey Shabalin <shaba@altlinux.org> 1:249.7-alt3
> - Merge services files to main systemd package.
> - Merge utils files to main systemd package.

Спасибо!