vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Берем большой-большой проект на C++, назвыается plv8. ТО есть сам plv8 не такой уж большой, но он тащит и линкует статически v8 engine - интерпретатор javascipt от Гугля, это более тысячи файлов на C++. Собираем его в дебиановский пакет под ubuntu 20.04, 22.04, debian 10, 11, 12 - работает. В куче rpm-based дистрибутивов тоже работает. Даже в AltLinux 11 и то работает.

Собираем его в Ubuntu 23.10 или 24.04 - с тем же rules-файлом, сводящимся к

make v8
make all PG_CONFIG=где-там-у-нас-сегодня-постгрес/bin/pg_config

При попытке загрузить в постгрес ругается

ERROR: could not load library "/opt/pgpro/std-15/lib/plv8-3.2.2.so": /opt/pgpro/std-15/lib/plv8-3.2.2.so: undefined symbol: _ZTVN2v88internal32WeakCollectionsBuiltinsAssemblerE

Берем so-шку (вернее даже пакет) скомпилированный в Ubuntu 22.04, ставим в 24.04 к собранному в нем постгресу - работает. То есть не просто грузится, а весь regression test suite проходит.

Почему я специально выделил выше AltLinux 11? ДА потому что в Ubuntu 23.10 и 24.04 gcc 13.2.0, в AltLinux 11 - 13.2.1, а во всех прочих поддерживаемых дистрибутивах нечто более старое. Ну 12.2.0, ну 11.4.0 или что-то такое.

Впрочем в Ubuntu 24.04 есть gcc-12. Попробовал прописать в rules CC=gcc-12 CXX=g++-12. После некоторых пинков заработало. Но лучше не стало. То есть дело тут не в версии компилятора. А скорее всего в каких-то его флагах, которые ubuntu по умолчанию подставляет при сборке пакета. Подозревал -fno-rtti. Но явное добавление -frtti не помогло.

Upd: [livejournal.com profile] permea_kra подкинул ссылку на баг в gcc 13 который, возможно, имеет отношение к проблеме. А, возможно, не имеет.

Upd2: Оказывается в Ubuntu noble есть не только gcc-12, но и gcc-14. Вот после сборки v8 им все работает.

Date: 2024-08-16 07:52 am (UTC)
From: [personal profile] eagleivg
Возможно, проблема в линкере, году так в 2018-м натыкался, дефолтный src собирал код без ошибок, тогда как gold ругался на undefined.

Date: 2024-08-16 08:20 am (UTC)
nataraj: (Default)
From: [personal profile] nataraj

А будущий Debian 13?

Я конечно понимаю, что поиск проблемы методом деления пополам версии _дистрибутива_ это для очень сильных духом... Но возможно это самый простой путь...

Или у нас нет возможности с Debian testing откатиться до снепшота на определенную дату?

Edited Date: 2024-08-16 08:21 am (UTC)

Date: 2024-08-16 08:35 am (UTC)
nataraj: (Default)
From: [personal profile] nataraj

Я не уверен что это конкретная версия компилятора... Скорее всего какая-то максимально неочивидная комбинация странных факторов.

Почему я спросил про дебиан, потому что с ним в теории многие вещи должны быть сильно проще. При этом весьма вероятно что оно сломалось и в testing'е тоже.


А вот не сделать ли нам (или в данном случае скорее вам) на будущее автоматическое копирование

https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-bd/

?

Возможно это в будущем позволит более просто и автоматично понять в какой момент что-то пошло не так и локализовать подобную не очевидную проблему...

Edited Date: 2024-08-16 08:35 am (UTC)

Date: 2024-08-16 11:23 am (UTC)
nataraj: (Default)
From: [personal profile] nataraj

Ага... Это хорошо.

Но там не только на удаление... А вообще фиксировать текущее состояние кмк.

Date: 2024-08-18 03:08 pm (UTC)
nataraj: (Default)
From: [personal profile] nataraj

Ага...

Крайне любопытно...

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 23 4 56 7
89 1011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2025 09:16 am
Powered by Dreamwidth Studios
OSZAR »