Bug 40991 - ruby 2.7.4-alt1 не пересобирает сам себя
Summary: ruby 2.7.4-alt1 не пересобирает сам себя
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: ruby (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: majioa@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-09-23 06:58 MSK by ilyakurdyukov
Modified: 2021-09-23 15:08 MSK (History)
11 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ilyakurdyukov 2021-09-23 06:58:03 MSK
http://git.altlinux.org/tasks/285728/logs/events.1.1.log

Падает на всех архитектурах. Надо или чинить, или вернуться к старой версии.

[00:02:38] [BUG] Segmentation fault at 0x0000000000000018
[00:02:38] ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]

Мне нужно рабочую версию для починки бутстрапа. Чтобы потом через бутстрап обновить ruby на Эльбрусе.
Comment 1 ilyakurdyukov 2021-09-23 08:42:19 MSK
При пересборке ruby-2.7.3-alt1.3 через починенный бутстрап. По адресу сегфолта очень похоже на обращение к структуре по нулевому указателю. И если не работает даже предыдущая версия, то это наводка из какого-то пакета что подгружается при сборке ruby?

./ext/extmk.rb:525: [BUG] Segmentation fault at 0x0000000000000018
ruby 2.7.3p183 (2021-04-05 revision 647ee6f091) [x86_64-linux]
Comment 2 ilyakurdyukov 2021-09-23 10:09:39 MSK
Что же такого делали в Альте недавно... включили LTO.

Ошибки сборочницы от чего были исправлены в ruby 2.7.4:

%{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}

И ruby 2.7.4 собрался (через старый 2.7.3 собранный без LTO, потому что ruby собирается рекурсивно). Вот только это сломало ruby. И чтобы работало, нужно отключать LTO полностью:

%define optflags_lto %nil

P.S.: Мне теперь приходится чинить LTO у половины пакетов, просто чтобы внести правки для Эльбруса.
Comment 3 ilyakurdyukov 2021-09-23 12:42:05 MSK
Исправлено в ruby 2.7.4-alt2 (with bootstrap) -> ruby 2.7.4-alt2.1 (without bootstrap).

Бутстраппинг починен в этих коммитах (делается через noarch пакет ruby-miniruby-src взятый с другой архитектуры, где ruby уже собирался).
Comment 4 Gleb F-Malinovskiy 2021-09-23 14:27:50 MSK
Зачем при сборке делать анализ сломавшихся пакетов и отправлять его результаты в devel@, если потом никто не читает?

https://lore.altlinux.org/devel/YUpSZVRiieC7B%2FnK@glebfm.cloud.tilaa.com/
Comment 5 ilyakurdyukov 2021-09-23 14:40:41 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #4)
> Зачем при сборке делать анализ сломавшихся пакетов и отправлять его
> результаты в devel@, если потом никто не читает?
> 
> https://lore.altlinux.org/devel/YUpSZVRiieC7B%2FnK@glebfm.cloud.tilaa.com/

Так это из-за обновления GCC было? Я два раза перепроверил, что лечится отключением LTO (если только в GCC чего с LTO не наделали в новой версии).
Comment 6 Gleb F-Malinovskiy 2021-09-23 14:55:04 MSK
(In reply to ilyakurdyukov from comment #5)
> Так это из-за обновления GCC было? Я два раза перепроверил, что лечится
> отключением LTO (если только в GCC чего с LTO не наделали в новой версии).

Я не пробовал выключать LTO, но очевидно, что эта регрессия из-за обновления gcc вылезает только при включённом LTO.  На самом деле, если бы вы посмотрели в результаты тестовой пересборки, вы бы увидели, когда именно перестал пересобираться ruby.

Я проверял, что применение патча, на который я ссылаюсь в письме (там в нашей старой версии ruby есть только одно место, в котором используется такая конструкция) к ruby-2.7.4-alt1 и он успешно собирался с помощью ruby-2.7.4-alt1 из репозитория.

Я другой стороны, я так понимаю, что вы починили bootstrap, что может пригодиться кому-нибудь. :)
Comment 7 ilyakurdyukov 2021-09-23 15:08:40 MSK
Значит можно вернуть LTO когда дойдёт до версии где это исправили. Но для верности после этого надо второй раз пересобрать для проверки, чтобы удостовериться что обновлённая версия сама себя пересоберёт.

Бутстрап еще есть куда улучшать, текущий руби устанавливается по каким-то зависимостям, хотя в спеке явно не указан.