Summary: | systemd: segfault при dist-upgrade до p10 | ||||||
---|---|---|---|---|---|---|---|
Product: | Branch p10 | Reporter: | Alexey Sheplyakov <asheplyakov> | ||||
Component: | systemd | Assignee: | 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
Alexey Sheplyakov
2021-11-26 15:46:36 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 У меня такое же было две недели назад на x86_64. Celeron J1900. 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 Починить систему в этом состоянии - задача не для слабонервных. Created attachment 9983 [details]
Лог обновления
(In reply to Антон Мидюков from comment #2) > У меня такое же было две недели назад на x86_64. Celeron J1900 Зависимости циклические: systemd -> systemd-utils; systemd-utils -> systemd-sysctl-common; systemd-sysctl-common -> startup; startup -> systemd-utils; startup -> systemd-sysvinit; systemd-sysvinit -> systemd; Интересно, как apt разрывает такие циклы. (Судя по результату - "не стреляйте в пианиста - играет, как умеет"). libsystemd-shared-NNN.so - это неотъемлемая часть systemd, паковать её в отдельный пакет (systemd-utils) - очень ненадёжно. Вот и пришла пора слить все подпакеты в один пакет systemd. У меня такая же ерунда на всех компьютерах в лаборатории. И ноутбуках и моноблоках и на интерактивной доске. Удалось обновиться загрузив LiveCD и там через чрут. Надеюсь вы не забыли перед обновление поправить priority_distbranch ? (Ответ для Anton Farygin на комментарий #10) > Надеюсь вы не забыли перед обновление поправить priority_distbranch ? Я делал apt-repo set p10 Артём тоже. Для p10 таск #290888. Смержил пакет utils и services в основой systemd. (Ответ для 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 (Ответ для 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 и проблемы не будет вообще. (In reply to Speccyfighter from comment #13) > (Ответ для Alexey Shabalin на комментарий #12) > > Для p10 таск #290888. > > Смержил пакет utils и services в основой systemd. > > Такой мерж вреден для систем на sysv. > Иначе вместо не более семидесяти файлов, в системе на sysv будет болтаться > больше 650-ти файлов ненужного и бесполезного мусора: Система с sysv - сама по себе "ненужный бесполезный мусор". > Лучше мержить эти пакеты, - в системах на 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 (Ответ для Alexey Sheplyakov на комментарий #15) > (In reply to Speccyfighter from comment #13) > > Такой мерж вреден для систем на sysv. > > Иначе вместо не более семидесяти файлов, в системе на sysv будет болтаться > > больше 650-ти файлов ненужного и бесполезного мусора: > > Система с sysv - сама по себе "ненужный бесполезный мусор". Интересное утверждение. Я лишь сказал, что бинарники, которые не могут быть использованы в системе даже теоретически, считются как минимум бесполезными. Независимо от того, на чём базируется система. И от них в системе нужно избавляться. И для чистоты системы, и для надёжности, и для безопасности. (In reply to Alexey Sheplyakov from comment #15) > Система с sysv - сама по себе "ненужный бесполезный мусор". На самом деле мусор - это система с systemd, как минимум в серверном сегменте, но apt-conf-ignore-systemd вариант приемлимый. Починили: 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. (Ответ для Антон Мидюков на комментарий #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. Спасибо! |