From: Aleksei Nikiforov <darktemplar@altlinux.org>
To: devel@lists.altlinux.org
Subject: Re: [devel] [SCM] packages/apt: tags/0.5.15lorg2-alt74
Date: Fri, 25 Oct 2019 10:23:00 +0300
Message-ID: <0d4b342b-5219-d3f6-1efd-9407e78170a3@altlinux.org> (raw)
In-Reply-To: <20191024195417.2675b868736b9939c003880b@altlinux.org>
24.10.2019 19:54, Andrey Savchenko пишет:
> On Thu, 24 Oct 2019 19:01:11 +0300 Aleksei Nikiforov wrote:
>> 24.10.2019 18:50, Andrey Savchenko пишет:
>>>> Да, но в таком случае как минимум можно указать на конкретный проблемный
>>>> участок кода, который содержит UB, и в чём это UB заключается. Как и
>>>> ошибки, которые складываются.
>>>
>>> Так ldv это и сделал в письме выше.
>>>
>>
>> Я, наверно, в этом потоке сообщений где-то это пропустил. Как минимум
>> ничего кроме общих слов не видел. Можешь повторить этот фрагмент,
>> пожалуйста?
>
> https://lists.altlinux.org/pipermail/devel/2019-October/208756.html
>
>>> Этот патч увеличивает расход оперативной памяти apt'ом в среднем в полтора
>>> раза, но не исправляет UB с арифметикой указателей, поскольку MMap::Base
>>> как был невыровненным, так и остался невыровненным. В отличие от Debian,
>>> между прочим, где по умолчанию MMap::Base выровнен на начало страницы.
>>>
>> Я не вижу разницы в адресе MMap::Base на Debian и у нас - в обоих
>> случаях он выровнен на начало страницы.
>
> У Алексея:
>
> void *tmp_base = realloc(Base, newSize);
>
> if (debug_grow)
> _error->Warning(_("DynamicMMap::Grow: realloc from %llu to
> %llu, result: %s"), WorkSpace, newSize, (tmp_base == n
>
> if (tmp_base == NULL)
> return false;
>
> Base = tmp_base;
>
> В Debian по умолчанию:
>
> #ifdef MREMAP_MAYMOVE
>
> if ((Flags & Moveable) == Moveable)
> Base = mremap(Base, WorkSpace, newSize,
> MREMAP_MAYMOVE); else
> #endif
> Base = mremap(Base, WorkSpace, newSize, 0);
>
> if(Base == MAP_FAILED)
> return false;
>
> Всё ещё не видно разницы?
>
Как раз тот случай, когда был написан бред.
https://lists.altlinux.org/pipermail/devel/2019-October/208777.html
Далее цитирую:
Предлагаю посмотреть внимательнее. Вот мой код:
if (Fd != 0)
{
void *tmp_base = MAP_FAILED;
#ifdef MREMAP_MAYMOVE
if ((this->Flags & Moveable) == Moveable)
tmp_base = mremap(Base, WorkSpace, newSize, MREMAP_MAYMOVE);
else
#endif
tmp_base = mremap(Base, WorkSpace, newSize, 0);
if (debug_grow)
_error->Warning(_("DynamicMMap::Grow: mremap from %llu to
%llu, result: %s"), WorkSpace, newSize, (tmp_base == MAP_FAILED) ?
_("Fail") : _("Success"));
if (tmp_base == MAP_FAILED)
return false;
Base = tmp_base;
} else {
if ((this->Flags & Moveable) != Moveable)
return false;
void *tmp_base = realloc(Base, newSize);
if (debug_grow)
_error->Warning(_("DynamicMMap::Grow: realloc from %llu to
%llu, result: %s"), WorkSpace, newSize, (tmp_base == nullptr) ?
_("Fail") : _("Success"));
if (tmp_base == NULL)
return false;
Base = tmp_base;
/* Set new memory to 0 */
memset((char*)Base + WorkSpace, 0, newSize - WorkSpace);
}
А вот код из Debian:
if ((Flags & Fallback) != Fallback) {
#if defined(_POSIX_MAPPED_FILES) && defined(__linux__)
#ifdef MREMAP_MAYMOVE
if ((Flags & Moveable) == Moveable)
Base = mremap(Base, WorkSpace, newSize, MREMAP_MAYMOVE);
else
#endif
Base = mremap(Base, WorkSpace, newSize, 0);
if(Base == MAP_FAILED)
return false;
#else
return false;
#endif
} else {
if ((Flags & Moveable) != Moveable)
return false;
Base = realloc(Base, newSize);
if (Base == NULL)
return false;
else
/* Set new memory to 0 */
memset((char*)Base + WorkSpace, 0, newSize - WorkSpace);
}
Конец цитаты.
Если думаешь что код работает не аналогично, предлагаю ещё тебе
самостоятельно продебажить apt и убедиться в том, как ты не прав.
Дополнительно процитирую Ивана:
https://lists.altlinux.org/pipermail/devel/2019-October/208759.html
Цитирую:
Проблема с попорченными адресами на e2k проявлялась одинаково и при
использовании mremap, и при realloc.
Конец цитаты.
next prev parent reply other threads:[~2019-10-25 7:23 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-21 23:42 ` Dmitry V. Levin
2019-10-22 0:01 ` Michael Shigorin
2019-10-22 8:32 ` Dmitry V. Levin
2019-10-22 12:28 ` Anton Farygin
2019-10-22 12:46 ` Anton Farygin
2019-10-22 15:32 ` Dmitry V. Levin
2019-10-22 15:51 ` Anton Farygin
2019-10-22 16:52 ` Ivan Zakharyaschev
2019-10-24 13:59 ` Aleksei Nikiforov
2019-10-24 15:10 ` Andrey Savchenko
2019-10-24 15:29 ` Aleksei Nikiforov
2019-10-24 15:50 ` Andrey Savchenko
2019-10-24 16:01 ` Aleksei Nikiforov
2019-10-24 16:54 ` Andrey Savchenko
2019-10-25 7:23 ` Aleksei Nikiforov [this message]
2019-10-22 4:06 ` Anton Farygin
2019-10-22 15:35 ` Alexey Tourbin
2019-10-23 12:46 ` Dmitry V. Levin
2019-10-24 13:58 ` Aleksei Nikiforov
2019-10-24 15:20 ` Ivan Zakharyaschev
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=0d4b342b-5219-d3f6-1efd-9407e78170a3@altlinux.org \
--to=darktemplar@altlinux.org \
--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