Bug 26514

Summary: posttrans-filetriggers loops indefinitely when %_tmppath is unreachable
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: rpmAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: at, glebfm, imz, iv, ldv, lex.shen, n3npq, placeholder, vt
Version: unstable   
Hardware: all   
OS: Linux   

Description Michael Shigorin 2011-10-27 17:46:22 MSK
В контейнере с i586 t6/branch (rpm-4.0.4-alt100.27, также воспроизводится на alt100.24 и alt100.40) поймано следующее:

0 cheusov>sudo apt-get install perl-podlators
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
 perl-Encode perl-Pod-Escapes perl-Pod-Parser perl-Pod-Simple
 perl-Term-ANSIColor perl-Term-Cap
The following NEW packages will be installed:
 perl-Encode perl-Pod-Escapes perl-Pod-Parser perl-Pod-Simple
 perl-Term-ANSIColor perl-Term-Cap perl-podlators
0 upgraded, 7 newly installed, 0 removed and 0 not upgraded.
Need to get 391kB of archives.
After unpacking 1459kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 ftp://ftp.linux.kiev.ua i586/classic perl-Encode 2.42-alt1 [139kB]
Get:2 ftp://ftp.linux.kiev.ua noarch/classic perl-Pod-Escapes 1.04-alt3 [9343B]
Get:3 ftp://ftp.linux.kiev.ua noarch/classic perl-Pod-Simple 3.16-alt1 [102kB]
Get:4 ftp://ftp.linux.kiev.ua noarch/classic perl-Term-ANSIColor 3.00-alt1 [16.6kB]
Get:5 ftp://ftp.linux.kiev.ua noarch/classic perl-Term-Cap 1.12-alt1 [10.1kB]
Get:6 ftp://ftp.linux.kiev.ua noarch/classic perl-podlators 2.4.0-alt1 [52.1kB]
Get:7 ftp://ftp.linux.kiev.ua noarch/classic perl-Pod-Parser 1.38-alt1 [62.0kB]
Fetched 391kB in 0s (822kB/s) 
Committing changes...
Preparing... ##################################################### [100%]
1: perl-Encode ##################################################### [ 14%]
2: perl-Term-Cap ##################################################### [ 28%]
3: perl-Term-ANSIColor ##################################################### [ 42%]
4: perl-Pod-Escapes ##################################################### [ 57%]
5: perl-Pod-Simple ##################################################### [ 71%]
6: perl-Pod-Parser ##################################################### [ 85%]
7: perl-podlators ##################################################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Done.
rpmdb: /root/RPMtmp: No such file or directory
rpmdb: unable to create temporary backing file
rpmdb: /root/RPMtmp: No such file or directory
rpmdb: unable to create temporary backing file
rpmdb: /root/RPMtmp: No such file or directory
rpmdb: unable to create temporary backing file
rpmdb: /root/RPMtmp: No such file or directory
rpmdb: unable to create temporary backing file
rpmdb: /root/RPMtmp: No such file or directory
rpmdb: unable to create temporary backing file
[...в цикле с некоторой задержкой...]

Под рутом имени vzctl enter либо sudo -s _не_ воспроизводится.

Фрагмент вывода strace `pidof apt-get`:
stat64("/root/RPMtmp", 0xbfc580e0)      = -1 ENOENT (No such file or directory)
write(2, "rpmdb", 5)                    = 5
write(2, ": ", 2)                       = 2
write(2, "/root/RPMtmp", 12)            = 12
write(2, ": No such file or directory", 27) = 27
write(2, "\n", 1)                       = 1
write(2, "rpmdb", 5)                    = 5
write(2, ": ", 2)                       = 2
write(2, "unable to create temporary backi"..., 39) = 39
write(2, "\n", 1)                       = 1
stat64("/root/RPMtmp", 0xbfc580e0)      = -1 ENOENT (No such file or directory)

$SHELL == bash
Comment 1 Michael Shigorin 2011-11-05 10:57:04 MSK
Виноват, отвлёкся на днях и забыл отписаться по второму туру.
В ~/.rpmmacros пользователя оказались следующие настройки:

%_topdir %homedir/RPMtop
%_tmppath %homedir/RPMtmp

<cheusov> Я где-то взял инструкуцию по сборке пакетов в 2009-м и по ней все делал

Непонятны две вещи (переформулировал багу сообразно IMHO более релевантной):
1) почему posttrans-filetriggers или кто-то выше не проверяет наличие и доступность на запись %_tmppath (с предупреждением и фолбэком на $TMPDIR, $TMP, /tmp);
2) что надо сделать, чтобы настройки одного пользователя не оказывали такого влияния на работу от имени другого пользователя (сходу в голову приходит разве что сверка EUID с UID перед зачитыванием ~/.rpmmacros).
Comment 2 Dmitry V. Levin 2011-11-05 13:24:57 MSK
(In reply to comment #1)
> Непонятны две вещи (переформулировал багу сообразно IMHO более релевантной):
> 1) почему posttrans-filetriggers или кто-то выше не проверяет наличие и
> доступность на запись %_tmppath (с предупреждением и фолбэком на $TMPDIR, $TMP,
> /tmp);

В код не смотрел, но, наверное, rpm просто доверяет сисадмину в этом вопросе.

> 2) что надо сделать, чтобы настройки одного пользователя не оказывали такого
> влияния на работу от имени другого пользователя (сходу в голову приходит разве
> что сверка EUID с UID перед зачитыванием ~/.rpmmacros).

Не использовать su без -l и sudo без env_reset+always_set_home.
Comment 3 Jeff Johnson 2012-01-03 02:56:44 MSK
tracked at https://bugs.launchpad.net/rpm/+bug/911019
Comment 4 Michael Shigorin 2013-04-16 17:43:13 MSK
BTW подобное ловится и на обычном hsh у пользователя, которому ещё не создали удалённый из etcskel ~/tmp вручную.
Comment 5 Michael Shigorin 2016-08-02 17:39:34 MSK
На это продолжают напарываться пользователи:
http://forum.russ2.com/index.php?s=&showtopic=3500&view=findpost&p=47148
Comment 6 ashen 2017-10-22 21:12:23 MSK
Сегодня сам её поймал на текущем сизифе.
И как с этим бороться?