ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <alexey.tourbin@gmail.com>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] versioned set-versions; was: Re: Qt5 и поломанные плагины
Date: Sat, 21 Apr 2018 00:45:04 +0300
Message-ID: <CA+qzenkH3faOjFQL2SbK4zXrJ=rQSnz2mgdTDLiTY0xHmWzpnA@mail.gmail.com> (raw)
In-Reply-To: <20180416182100.GA16649@portlab>

2018-04-16 21:21 GMT+03:00 Vladimir D. Seleznev <vseleznv@altlinux.org>:
> On Sat, Dec 30, 2017 at 06:51:42AM +0300, Alexey Tourbin wrote:
>> В данном случае разработчик как раз порезался своей опасной бритвой:
>> перенес символ из одного @ABI в другой, в результате чего ABI
>> изменился несовместимым образом. Разработчику надо повесить плакат над
>> рабочим местом: символ - это не бутерброд с колбасой, чтобы передавать
>> его из одного интерфейса в другой. Надо также отметить, что если бы
>> разработчик не делал вообще ничего, то проблемы бы не возникло.  (В
>> связи с этим возникают разные смешные вопросы: например, какова
>> производительность труда у этого разработчика?  Или же, выражаясь
>> словами Дреппера, можно ли подпускать его к клавиатуре?)
>>
>> Два механизма были сделаны ортогональными вовсе не по недомыслию, а и
>> из-за сложной и компромиссной семантики разрешения версионированных
>> символов.  Ясно, что неверсионированный символ может разрешаться в
>> версионированный: sym -> sym@ABI, при условии, что символ sym@ABI
>> дефолтный (так что когда в библиотеке впервые появляется
>> версионирование, старые программы остаются работать без пересборки).
>> Менее очевидно, что и версионированный символ можно разрешиться в
>> неверсионированный: sym@ABI -> sym, при условии, что @ABI существует
>> кое-где как самостоятельная единица, а символ sym неверсионированный
>> (такой компромисс требуется в частности для того, чтобы работало
>> переопределение функций через LD_PRELOAD).  Получается, что если мы
>> хотим требовать символ sym@ABI, то не понятно, что нам требовать:
>> требование sym@ABI оказывается достаточным, но не необходимым. То есть
>> мы суперимпозируем на ld.so какую-то более приятную нам логику
>> разрешения символов, чем она есть на самом деле.
>
> Поднимаю вопрос: согласны ли мы использовать более строгую логику
> разрешения символов, чем есть на самом деле?

Не согласны. :)
Критической массы выгоды мало, чтобы все переделывать и пересобирать,
а выгода будет - только обнаружение ситуаций sym@ABI1 != sym@ABI2,
каких только была одна за всю историю. Такие ситуации можно
обнаруживать и на уровне bad_elf_symbols.

>> Единственное разрешение, которое ld.so точно не допускает, это
>> sym@ABI1 -> sym@ABI2.
>>
>> Если все же накладывать на set-версии более приятную нам логику
>> разрешения символов, то можно было бы сделать следующее:
>>
>> 1) Требовать sym@ABI (требовать = хешировать как единый символ).
>> 2) Предоставлять два символа: sym@ABI и sym (кроме недефолтных
>> симолов, для которых предоставлять только sym@ABI).

  reply	other threads:[~2018-04-20 21:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-23 11:49 [devel] " Vladimir D. Seleznev
2017-10-23 15:08 ` Mikhail Efremov
2017-10-23 16:28   ` Vladimir D. Seleznev
2017-10-23 16:31     ` [devel] Qt5 и поломанные приложения Vladimir D. Seleznev
2017-10-23 16:59     ` [devel] Qt5 и поломанные плагины Vitaly Lipatov
2017-10-23 17:07       ` Vladimir D. Seleznev
2017-10-24  9:08         ` Vladimir D. Seleznev
2017-10-27  5:54           ` Vladimir D. Seleznev
2017-10-24  0:51   ` [devel] универсальный механизм проверки плагинов Dmitry V. Levin
2017-10-24  6:07     ` Михаил Радюк
2017-10-27  5:46     ` Vladimir D. Seleznev
2017-12-29 13:38 ` [devel] versioned set-versions; was: Re: Qt5 и поломанные плагины Ivan Zakharyaschev
2017-12-30  3:51   ` Alexey Tourbin
2017-12-30 12:17     ` [devel] versioned set-versions Dmitry V. Levin
2018-04-16 18:21     ` [devel] versioned set-versions; was: Re: Qt5 и поломанные плагины Vladimir D. Seleznev
2018-04-20 21:45       ` Alexey Tourbin [this message]
2017-12-30 12:26   ` Vladimir D. Seleznev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+qzenkH3faOjFQL2SbK4zXrJ=rQSnz2mgdTDLiTY0xHmWzpnA@mail.gmail.com' \
    --to=alexey.tourbin@gmail.com \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git