ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Ivan Zakharyaschev <imz@altlinux.org>
To: devel@lists.altlinux.org, community@lists.altlinux.org
Cc: sotor@altlinux.org
Subject: Re: [devel] I: rpm in p8 had problems reading *.rpm files
Date: Thu, 11 Jul 2019 22:23:46 +0300 (MSK)
Message-ID: <alpine.LFD.2.20.1907112215100.15309@imap.altlinux.org> (raw)
In-Reply-To: <alpine.LFD.2.20.1907111746360.15309@imap.altlinux.org>

[-- Attachment #1: Type: text/plain, Size: 13724 bytes --]

On Thu, 11 Jul 2019, Ivan Zakharyaschev wrote:

> Из отдела тестирования сообщили, что в Workstation 8.2 i586 наблюдаются 
> проблемы при чтении пакетов из репозитория p8, смонтированного по NFS.
> 
> # /usr/lib/rpm/rpmq -q -i --list --verbose --package -q --qf "[* %{CHANGELOGNAME}\n %{CHANGELOGTEXT}\n]" /mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm
> ошибка: ошибка запроса /mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm
>
> С обновлённым rpm-4.0.4-alt101.M80P.5.5 такой проблемы нет.
> 
> Я примерно понял, какой код там выполняется, а какой с обновлённым rpm, 
> когда ошибки нет. (Они идут разным путём.)

Проверил у себя на i586 обе версии rpm -- из Workstation 8.2 и 
обновлённую: rpm-4.0.4-alt101.M80P.1 и rpm-4.0.4-alt101.M80P.5.5.

Разницы по strace в этом месте не видно. Проблема не воспроизводится. Как 
можно объяснить, я тоже не знаю. (То, что я написал, тоже не так -- исходя 
из вывода strace.) Странно, что у них она воспроизводится стабильно.
 
> Когда ошибка случается, вывод strace -fy -s1000 перед этим такой:
> 
> open("/mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm", 
> O_RDONLY) = 
> 3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>
> fcntl64(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
> F_SETFD, FD_CLOEXEC) = 0
> gettimeofday({tv_sec=1562834023, tv_usec=224425}, NULL) = 0
> fstat64(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
> {st_mode=S_IFREG|0644, st_size=122129, ...}) = 0
> _newselect(4, 
> [3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
> NULL, NULL, {tv_sec=1, tv_usec=0}) = 1 (in [3], left {tv_sec=0, 
> tv_usec=999999})
> gettimeofday({tv_sec=1562834023, tv_usec=224634}, NULL) = 0
> read(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
> "\355\253\356\333\3\0\0\0\0\1sssd-ad-1.16.4-alt1.M80P.1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 
> 96) = 96
> gettimeofday({tv_sec=1562834023, tv_usec=224766}, NULL) = 0
> _newselect(4, 
> [3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
> NULL, NULL, {tv_sec=1, tv_usec=0}) = 1 (in [3], left {tv_sec=0, 
> tv_usec=999999})
> gettimeofday({tv_sec=1562834023, tv_usec=224870}, NULL) = 0
> read(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
> "\216\255\350\1\0\0\0\0\0\0\0\5\0\0\0\230", 16) = 16
> gettimeofday({tv_sec=1562834023, tv_usec=224953}, NULL) = 0
> _newselect(4, 
> [3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
> NULL, NULL, {tv_sec=1, tv_usec=0}) = 1 (in [3], left {tv_sec=0, 
> tv_usec=999999})
> gettimeofday({tv_sec=1562834023, tv_usec=225069}, NULL) = 0
> read(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
> "\0\0\0>\0\0\0\7\0\0\0\210\0\0\0\20\0\0\1\r\0\0\0\6\0\0\0\0\0\0\0\1\0\0\3\350\0\0\0\4\0\0\0,\0\0\0\1\0\0\3\354\0\0\0\7\0\0\0000\0\0\0\20\0\0\3\355\0\0\0\7\0\0\0@\0\0\0H7ce3371ed3cb8e8bcea5a341a029ac364173f7ab\0\0\0\0\0\1\333\271\271v\nq\244\1\271&VY\242\257RH\260\220\210F\4\0\21\2\0\6\5\2]\33\225b\0\n\t\20\334\236\225\302#\21\24\263GF\0\237`,L\375\226t\370s\35\206\202\"\265k\364s:\206\v\31\0\240\256VMa\356w*M\352\36\374!Z^J\277\16\356\256?\0\0\0>\0\0\0\7\377\377\377\260\0\0\0\20", 
> 232) = 232
> gettimeofday({tv_sec=1562834023, tv_usec=225146}, NULL) = 0
> fstat64(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
> {st_mode=S_IFREG|0644, st_size=122129, ...}) = 0
> gettimeofday({tv_sec=1562834023, tv_usec=225226}, NULL) = 0
> close(3</mnt/repo-nhcR/pub/distributions/ALTLinux/p8/branch/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>) 
> = 0
> 
> Когда ошибки нет, аналогичный кусок у меня (правда, на x86_64) такой:

> Обращает на себя внимание наличие при работе старого rpm вызовов 
> gettimeofday(), а в обновлённом -- просто select(). Это свидетельствует, 
> что в обновлённом rpm используется набор функций для работы с файлами 
> "ufdio", а в старом -- "fdio". Наверное, "fdio" глючный. Вероятно, выбор в 

Вот как это выглядит у меня с rpm из workstation 8.2 на i586

3016  open("/ALT/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm", 
O_RDONLY) = 
3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>
3016  
fcntl64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
F_SETFD, FD_CLOEXEC) = 0
3016  gettimeofday({1562871385, 345814}, NULL) = 0
3016  
fstat64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
{st_mode=S_IFREG|0644, st_size=122129, ...}) = 0
3016  
fadvise64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
0, 0, POSIX_FADV_RANDOM) = 0
3016  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999998})
3016  gettimeofday({1562871385, 345980}, NULL) = 0
3016  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\355\253\356\333\3\0\0\0\0\1sssd-ad-1.16.4-alt1.M8"..., 96) = 96
3016  gettimeofday({1562871385, 346037}, NULL) = 0
3016  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999998})
3016  gettimeofday({1562871385, 346102}, NULL) = 0
3016  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\216\255\350\1\0\0\0\0\0\0\0\5\0\0\0\230", 16) = 16
3016  gettimeofday({1562871385, 346155}, NULL) = 0
3016  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999999})
3016  gettimeofday({1562871385, 346223}, NULL) = 0
3016  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\0\0\0>\0\0\0\7\0\0\0\210\0\0\0\20\0\0\1\r\0\0\0\6\0\0\0\0\0\0\0\1"..., 
232) = 232
3016  gettimeofday({1562871385, 346276}, NULL) = 0
3016  
fstat64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
{st_mode=S_IFREG|0644, st_size=122129, ...}) = 0
3016  open("/usr/share/locale/ru_RU.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = 
-1 ENOENT (No such file or directory)
3016  open("/usr/share/locale/ru_RU.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = 
-1 ENOENT (No such file or directory)
3016  open("/usr/share/locale/ru_RU/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 
ENOENT (No such file or directory)
3016  open("/usr/share/locale/ru.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 
ENOENT (No such file or directory)
3016  open("/usr/share/locale/ru.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 
ENOENT (No such file or directory)
3016  open("/usr/share/locale/ru/LC_MESSAGES/rpm.mo", O_RDONLY) = 
4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>
3016  fstat64(4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>, 
{st_mode=S_IFREG|0644, st_size=94761, ...}) = 0
3016  mmap2(NULL, 94761, PROT_READ, MAP_PRIVATE, 
4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>, 0) = 0xb7028000
3016  close(4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>) = 0
3016  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999998})
3016  gettimeofday({1562871385, 346750}, NULL) = 0
3016  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\216\255\350\1\0\0\0\0\0\0\0004\0\0*`", 16) = 16
3016  gettimeofday({1562871385, 346803}, NULL) = 0
3016  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999998})
3016  gettimeofday({1562871385, 346870}, NULL) = 0
3016  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\0\0\0?\0\0\0\7\0\0*P\0\0\0\20\0\0\0d\0\0\0\10\0\0\0\0\0\0\0\1"..., 
11680) = 11680
3016  gettimeofday({1562871385, 346930}, NULL) = 0
3016  
fadvise64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
0, 0, POSIX_FADV_NORMAL) = 0
3016  sysinfo({uptime=2981, loads=[3584, 1920, 320], totalram=2118459392, 
freeram=1635254272, sharedram=4005888, bufferram=32104448, 
totalswap=2117070848, freeswap=2117070848, procs=208, 
totalhigh=1216208896, freehigh=958918656, mem_unit=1}) = 0
3016  gettimeofday({1562871385, 347074}, NULL) = 0
3016  
close(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>) 
= 0

И вот как с обновлённым rpm:

3435  open("/ALT/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm", 
O_RDONLY|O_LARGEFILE) = 
3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>
3435  
fcntl64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
F_SETFD, FD_CLOEXEC) = 0
3435  gettimeofday({1562871641, 593028}, NULL) = 0
3435  
fstat64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
{st_mode=S_IFREG|0644, st_size=122129, ...}) = 0
3435  
fadvise64_64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
0, 0, POSIX_FADV_RANDOM) = 0
3435  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999998})
3435  gettimeofday({1562871641, 593193}, NULL) = 0
3435  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\355\253\356\333\3\0\0\0\0\1sssd-ad-1.16.4-alt1.M8"..., 96) = 96
3435  gettimeofday({1562871641, 593272}, NULL) = 0
3435  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999999})
3435  gettimeofday({1562871641, 593327}, NULL) = 0
3435  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\216\255\350\1\0\0\0\0\0\0\0\5\0\0\0\230", 16) = 16
3435  gettimeofday({1562871641, 593369}, NULL) = 0
3435  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999999})
3435  gettimeofday({1562871641, 593423}, NULL) = 0
3435  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\0\0\0>\0\0\0\7\0\0\0\210\0\0\0\20\0\0\1\r\0\0\0\6\0\0\0\0\0\0\0\1"..., 
232) = 232
3435  gettimeofday({1562871641, 593466}, NULL) = 0
3435  
fstat64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
{st_mode=S_IFREG|0644, st_size=122129, ...}) = 0
3435  open("/usr/share/locale/ru_RU.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = 
-1 ENOENT (No such file or directory)
3435  open("/usr/share/locale/ru_RU.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = 
-1 ENOENT (No such file or directory)
3435  open("/usr/share/locale/ru_RU/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 
ENOENT (No such file or directory)
3435  open("/usr/share/locale/ru.UTF-8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 
ENOENT (No such file or directory)
3435  open("/usr/share/locale/ru.utf8/LC_MESSAGES/rpm.mo", O_RDONLY) = -1 
ENOENT (No such file or directory)
3435  open("/usr/share/locale/ru/LC_MESSAGES/rpm.mo", O_RDONLY) = 
4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>
3435  fstat64(4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>, 
{st_mode=S_IFREG|0644, st_size=94761, ...}) = 0
3435  mmap2(NULL, 94761, PROT_READ, MAP_PRIVATE, 
4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>, 0) = 0xb706a000
3435  close(4</usr/share/locale/ru/LC_MESSAGES/rpm.mo>) = 0
3435  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999999})
3435  gettimeofday({1562871641, 593858}, NULL) = 0
3435  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\216\255\350\1\0\0\0\0\0\0\0004\0\0*`", 16) = 16
3435  gettimeofday({1562871641, 593900}, NULL) = 0
3435  _newselect(4, 
[3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>], 
NULL, NULL, {1, 0}) = 1 (in [3], left {0, 999999})
3435  gettimeofday({1562871641, 593964}, NULL) = 0
3435  
read(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
"\0\0\0?\0\0\0\7\0\0*P\0\0\0\20\0\0\0d\0\0\0\10\0\0\0\0\0\0\0\1"..., 
11680) = 11680
3435  gettimeofday({1562871641, 594014}, NULL) = 0
3435  
fadvise64_64(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>, 
0, 0, POSIX_FADV_NORMAL) = 0
3435  sysinfo({uptime=3237, loads=[21632, 11008, 3840], 
totalram=2118459392, freeram=1432961024, sharedram=4022272, 
bufferram=32686080, totalswap=2117070848, freeswap=2117070848, procs=208, 
totalhigh=1216208896, freehigh=840957952, mem_unit=1}) = 0
3435  gettimeofday({1562871641, 594145}, NULL) = 0
3435  
close(3</space/mirror/p8/files/i586/RPMS/sssd-ad-1.16.4-alt1.M80P.1.i586.rpm>) 
= 0

Разницы в том, что возвращает read, нет (и существенной разницы в 
результатах прочих вызовов). Во всех трёх случаях. У них, когда ошибка 
случается, времени на последний read уходит побольше, чем у меня. Почему 
это сказаывается на поведении rpm, непонятно.


> пользу "ufdio" поменялся в серии патчей Алексея Турбина at@ про Large File 
> Support.
> 
> Вряд ли пакеты из репозитория как-то плохо сформированы, да этот пример 
> вроде и не очень большого файла пакета.
> 
> Так что могу посоветовать всем пользователям p8 обновить сначала rpm, 
> чтобы избегать таких проблем.
> 
> -- 
> Best regards,
> Ivan

  reply	other threads:[~2019-07-11 19:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-11 15:00 Ivan Zakharyaschev
2019-07-11 19:23 ` Ivan Zakharyaschev [this message]
2019-07-12 14:48 ` 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=alpine.LFD.2.20.1907112215100.15309@imap.altlinux.org \
    --to=imz@altlinux.org \
    --cc=community@lists.altlinux.org \
    --cc=devel@lists.altlinux.org \
    --cc=sotor@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