Bug 4815 - [Anolis 23][CI][aarch64/x86] yum 安装卸载时概率会出现yum进程卡住的情况
Summary: [Anolis 23][CI][aarch64/x86] yum 安装卸载时概率会出现yum进程卡住的情况
Status: NEW
Alias: None
Product: Anolis OS 23
Classification: Anolis OS
Component: BaseOS Packages (show other bugs) BaseOS Packages
Version: 23.0
Hardware: All Linux
: P2-High S2-major
Target Milestone: ---
Assignee: happy_orange
QA Contact: bolong_tbl
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-04-23 16:54 UTC by yunmeng365524
Modified: 2023-05-04 10:51 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description yunmeng365524 2023-04-23 16:54:56 UTC
Description of problem:
yum 安装卸载时概率会出现yum进程卡住的情况

Version-Release number of selected component (if applicable):
[root@iZbp1dwhn7l4aqmj3qlj91Z ~]# cat /etc/os-release
NAME="Anolis OS"
VERSION="23"
ID="anolis"
VERSION_ID="23"
PLATFORM_ID="platform:an23"
PRETTY_NAME="Anolis OS 23"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"
BUG_REPORT_URL="https://bugzilla.openanolis.cn/"

[root@iZbp1dwhn7l4aqmj3qlj91Z ~]# yum repoinfo
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 3:14:56 ago on Sun Apr 23 13:17:05 2023.
Repo-id            : AppStream
Repo-name          : AnolisOS-23 - AppStream
Repo-revision      : 1679310402
Repo-updated       : Mon Mar 20 19:06:42 2023
Repo-pkgs          : 11926
Repo-available-pkgs: 11926
Repo-size          : 14 G
Repo-baseurl       : http://mirrors.cloud.aliyuncs.com/anolis/23/AppStream/aarch64/os
Repo-expire        : 172800 second(s) (last: Sun Apr 23 13:17:05 2023)
Repo-filename      : /etc/yum.repos.d/AnolisOS.repo

Repo-id            : BaseOS
Repo-name          : AnolisOS-23 - BaseOS
Repo-revision      : 1679310362
Repo-updated       : Mon Mar 20 19:06:02 2023
Repo-pkgs          : 1495
Repo-available-pkgs: 1495
Repo-size          : 1.9 G
Repo-baseurl       : http://mirrors.cloud.aliyuncs.com/anolis/23/BaseOS/aarch64/os
Repo-expire        : 172800 second(s) (last: Sun Apr 23 13:17:05 2023)
Repo-filename      : /etc/yum.repos.d/AnolisOS.repo

How reproducible:

类似于这个CI任务
https://tone.openanolis.cn/ws/e6fkf2o4/test_result/65206?tab=1
1、下载并安装tone-cli
git clone --single-branch --branch master https://gitee.com/anolis/tone-cli /tmp/tone
cd /tmp/tone
rm -f /usr/local/bin/tone
make install
#link of python would be deleted by python-devel installation
if [ ! -f /usr/bin/python ]; then \
        if [ -f /usr/bin/python3 ]; then \
                ln -s /usr/bin/python3 /usr/bin/python; \
        elif [ -f /usr/bin/python2 ]; then \
                ln -s /usr/bin/python2 /usr/bin/python; \
        else \
                echo "Can Not find python in /usr/bin"; \
                exit 1; \
        fi; \
fi
echo "Done!"
Done!

2、准备CI测试工程
tone fetch anolis-ci-test && tone install anolis-ci-test && tone list anolis-ci-test

3、准备测试参数
打开测试任务链接
https://tone.openanolis.cn/ws/e6fkf2o4/test_result/65206?tab=1
点击“测试配置”选项,然后拷贝“全局变量的内容”,依此export


4、运行CI测试
tone run anolis-ci-test:group=rpm_test, repeat:1

这是其中一次卡住后,我gdb跟住卡死的地方:
(gdb) py-list
391            out.write(msg)
392        elif to == "flush':
393            out.flush()
394        elif tp == 'write_flush' :
395            out.write(msg)
>396           out. flush()
397        elif to == 'print':
398            print(msg, file=out)
399        else:
400            raise ValueError(*Unsupported type: ' + tp)
401    except I0Error as e:
(gdb) py-bt
Traceback (most recent call first):
File "/usr/lib/python3.10/site-packages/dnf/util.py"
line 396, in _terminal_messenger
out.flush()
File "/usr/lib/python3.10/site-packages/dnf/cli/output.py", line 2018, in _out_progress
dnf.util._terminal_messenger('write_flush', msg, sys.stdout)
File "/usr/lib/python3.10/site-packages/dnf/cli/output.py",line1994,inprogress
self._out_progress(ti_done, ti_total, ts_done, ts_total,
File "/sr/lib/python3.10/site-packages/dnf/yum/rpmtrans.py", line 134, in verify_tsi_package
self.progress(pkg, dnf. transaction.PKG_VERIFY, 100, 100, count, total)
File "/usr/lib/python3.10/site-packages/dnf/yun/rpmtrans.py",line437,inverify_tsi_package
display.verify_tsi_package(pkg, count, total)
File "/usr/lib/python3.10/site-packages/dnf/base.py", line 1190, in display_banner
verify_pkg_cb(pkg, count, total)
File "/usr/lib/python3.10/site-packages/dnf/base.py", line 1215, in _verify_transaction
count - display_banner(tsi.pkg, count)
File "/usr/lib/python3.10/site-packages/dnf/base.py", line 1177, in _run_transaction
self._verify_transaction(cb.verify_tsi_package)
File "/usr/lib/python3.10/site-packages/dnf/base.py", line 1034, in do_transaction
tid=self._run_transaction(cb=cb)
File "/usr/lib/python3.10/site-packages/dnf/cli/cli.py", line 246, in do_transaction
tid = super(BaseCli, self).do_transaction(display)
File
"/usr/lib/python3.10/site-packages/dnf/cli/main.py",line176,inresolving
base.do_transaction(display=displays)
File
"/usr/lib/python3.10/site-packages/dnf/cli/main.py",line130,incli_run
ret = resolving(cli, base)
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py",line106,
in main
return cli_run(cli, base)
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py",
line 67, in main
return
_main(base, args, cli_class, option_parser_class)
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py", line 201, in user _main
errcode = main(args)
File "/usr/bin/yum", line 62, in module>
main.user_main(sys.argv[1:], exit_code=True)
(gab)


这是另外一个例子:
0x00007f333745079f in write () from /lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install python-unversioned-command-3.10.10-1
(adb) py-list
255    if trans:
256        # the post transaction summary is already written to log during
257        # Base.do_transaction) so here only print the messages to the
258        # user arranged in columns
259        print()
>260       print('In'.join(self.output.post_transaction_output(trans)))
261        print()
262        for tsi in trans:
263            if tsi. state == libdnf. transaction.TransactionItemState_ERROR:
264                raise dnf.exceptions.Error(_('Transaction failed'))
265
(gdb) py-bt
Traceback (most recent call first):
<built-in method write of _io.TextI0Wrapper object at remote 0x7f3337195150>
built-in method print of module object at remote 0x7f33371bc900>
File "/us/lib/python3.10/site-packages/dnf/cli/cli.py",line 260, in do_transaction
print('\n'.join(self.output.post_transaction_output(trans)))
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py", line 176, in resolving
base.do_transaction(display=displays)
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py",line130,incli_run
ret
= resolving(cli, base)
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py",line106,inmain
return cli_run(cli, base)
File "/ur/lib/python3.10/site-packages/dnf/cli/main.py",line67, in main
return _main(base, args, cli_class, option_parser_class)
File "/usr/lib/python3.10/site-packages/dnf/cli/main.py",line201,inuser_main
errcode = main(args)
File "/usr/bin/yum", line 62, in «module>
main.user_main(sys.argv[1:], exit_code=True)
(gdb) client_loop: send disconnect: Broken pipe


Actual results:
如上

Expected results:
yum安装卸载不会卡住

Additional info: