Bug 22281 - [Anolis23-6.6.88][aarch64]kernel-selftests测试perf_events/sigtrap_threads执行失败
Summary: [Anolis23-6.6.88][aarch64]kernel-selftests测试perf_events/sigtrap_threads执行失败
Status: NEW
Alias: None
Product: Antest
Classification: Infrastructures
Component: 测试用例 (show other bugs) 测试用例
Version: unspecified
Hardware: All Linux
: P3-Medium S3-normal
Target Milestone: ---
Assignee: yuki_syq
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-07-02 16:16 UTC by yunhe123
Modified: 2025-07-02 16:16 UTC (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description yunhe123 alibaba_cloud_group 2025-07-02 16:16:41 UTC
Description of problem:
kernel-selftests测试perf_events/sigtrap_threads执行失败,日志如下:
# ./sigtrap_threads
TAP version 13
1..5
# Starting 5 tests from 1 test cases.
#  RUN           sigtrap_threads.remain_disabled ...
#            OK  sigtrap_threads.remain_disabled
ok 1 sigtrap_threads.remain_disabled
#  RUN           sigtrap_threads.enable_event ...
# sigtrap_threads.c:171:enable_event:Expected ctx.signal_count (0) == NUM_THREADS (5)
# sigtrap_threads.c:172:enable_event:Expected ctx.tids_want_signal (59560) == 0 (0)
# sigtrap_threads.c:173:enable_event:Expected ctx.first_siginfo.si_addr (0) == &ctx.iterate_on (4327904)
# sigtrap_threads.c:174:enable_event:Expected ctx.first_siginfo.si_perf_type (0) == PERF_TYPE_BREAKPOINT (5)
# sigtrap_threads.c:175:enable_event:Expected ctx.first_siginfo.si_perf_data (0) == TEST_SIG_DATA(&ctx.iterate_on, 0) (18446744073705223711)
# sigtrap_threads.c:179:enable_event:Expected ctx.signal_count (0) == NUM_THREADS + 1 (6)
# enable_event: Test failed at step #13
#          FAIL  sigtrap_threads.enable_event
not ok 2 sigtrap_threads.enable_event
#  RUN           sigtrap_threads.modify_and_enable_event ...
# sigtrap_threads.c:190:modify_and_enable_event:Expected ctx.signal_count (0) == NUM_THREADS (5)
# sigtrap_threads.c:191:modify_and_enable_event:Expected ctx.tids_want_signal (59590) == 0 (0)
# sigtrap_threads.c:192:modify_and_enable_event:Expected ctx.first_siginfo.si_addr (0) == &ctx.iterate_on (4327904)
# sigtrap_threads.c:193:modify_and_enable_event:Expected ctx.first_siginfo.si_perf_type (0) == PERF_TYPE_BREAKPOINT (5)
# sigtrap_threads.c:194:modify_and_enable_event:Expected ctx.first_siginfo.si_perf_data (0) == TEST_SIG_DATA(&ctx.iterate_on, 42) (18446744073705223753)
# sigtrap_threads.c:198:modify_and_enable_event:Expected ctx.signal_count (0) == NUM_THREADS + 1 (6)
# modify_and_enable_event: Test failed at step #13
#          FAIL  sigtrap_threads.modify_and_enable_event
not ok 3 sigtrap_threads.modify_and_enable_event
#  RUN           sigtrap_threads.signal_stress ...
# sigtrap_threads.c:210:signal_stress:Expected ctx.signal_count (7) == NUM_THREADS * ctx.iterate_on (15000)
# sigtrap_threads.c:211:signal_stress:Expected ctx.tids_want_signal (178776530) == 0 (0)
# signal_stress: Test failed at step #13
#          FAIL  sigtrap_threads.signal_stress
not ok 4 sigtrap_threads.signal_stress
#  RUN           sigtrap_threads.signal_stress_with_disable ...
#            OK  sigtrap_threads.signal_stress_with_disable
ok 5 sigtrap_threads.signal_stress_with_disable
# FAILED: 2 / 5 tests passed.
# Totals: pass:2 fail:3 xfail:0 xpass:0 skip:0 error:0



strace跟踪日志如下:
execve("./sigtrap_threads", ["./sigtrap_threads"], 0xffffe4b5de70 /* 30 vars */) = 0
brk(NULL)                               = 0x5738000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff814fa000
faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=18483, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 18483, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffff814f5000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\20y\2\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2637392, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 2199040, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_DENYWRITE, -1, 0) = 0xffff812a8000
mmap(0xffff812b0000, 2133504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xffff812b0000
munmap(0xffff812a8000, 32768)           = 0
munmap(0xffff814b9000, 32256)           = 0
mprotect(0xffff8143c000, 69632, PROT_NONE) = 0
mmap(0xffff8144d000, 413696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18d000) = 0xffff8144d000
mmap(0xffff814b2000, 28160, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffff814b2000
close(3)                                = 0
set_tid_address(0xffff814faed0)         = 11952
set_robust_list(0xffff814faee0, 24)     = 0
rseq(0xffff814fb520, 0x20, 0, 0xd428bc00) = 0
mprotect(0xffff8144d000, 405504, PROT_READ) = 0
mprotect(0x41f000, 4096, PROT_READ)     = 0
mprotect(0xffff814ff000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0xffff814f5000, 18483)           = 0
mmap(NULL, 1024, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0) = 0xffff814f9000
newfstatat(1, "", {st_mode=S_IFREG|0600, st_size=1928, ...}, AT_EMPTY_PATH) = 0
getrandom("\x71\x0e\x2b\x77\x6f\xa0\xa0\xcf", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x5738000
brk(0x5759000)                          = 0x5759000
write(1, "TAP version 13\n", 15TAP version 13
)        = 15
write(1, "1..5\n", 51..5
)                   = 5
write(1, "# Starting 5 tests from 1 test c"..., 38# Starting 5 tests from 1 test cases.
) = 38
write(1, "#  RUN           sigtrap_threads"..., 53#  RUN           sigtrap_threads.remain_disabled ...
) = 53
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xffff814faed0) = 11953
rt_sigaction(SIGALRM, {sa_handler=0x401a40, sa_mask=[], sa_flags=SA_SIGINFO}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=30, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}) = 0
wait4(11953, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 11953
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11953, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=29, tv_usec=969925}}) = 0
rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
write(1, "#            OK  sigtrap_threads"..., 49#            OK  sigtrap_threads.remain_disabled
) = 49
write(1, "ok 1 sigtrap_threads.remain_disa"..., 37ok 1 sigtrap_threads.remain_disabled
) = 37
write(1, "#  RUN           sigtrap_threads"..., 50#  RUN           sigtrap_threads.enable_event ...
) = 50
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xffff814faed0) = 11959
rt_sigaction(SIGALRM, {sa_handler=0x401a40, sa_mask=[], sa_flags=SA_SIGINFO}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=30, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}) = 0
wait4(11959, # sigtrap_threads.c:171:enable_event:Expected ctx.signal_count (0) == NUM_THREADS (5)
# sigtrap_threads.c:172:enable_event:Expected ctx.tids_want_signal (59810) == 0 (0)
# sigtrap_threads.c:173:enable_event:Expected ctx.first_siginfo.si_addr (0) == &ctx.iterate_on (4327904)
# sigtrap_threads.c:174:enable_event:Expected ctx.first_siginfo.si_perf_type (0) == PERF_TYPE_BREAKPOINT (5)
# sigtrap_threads.c:175:enable_event:Expected ctx.first_siginfo.si_perf_data (0) == TEST_SIG_DATA(&ctx.iterate_on, 0) (18446744073705223711)
# sigtrap_threads.c:179:enable_event:Expected ctx.signal_count (0) == NUM_THREADS + 1 (6)
[{WIFEXITED(s) && WEXITSTATUS(s) == 13}], 0, NULL) = 11959
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11959, si_uid=0, si_status=13, si_utime=0, si_stime=0} ---
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=29, tv_usec=996571}}) = 0
rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
write(2, "# enable_event: Test failed at s"..., 40# enable_event: Test failed at step #13
) = 40
write(1, "#          FAIL  sigtrap_threads"..., 46#          FAIL  sigtrap_threads.enable_event
) = 46
write(1, "not ok 2 sigtrap_threads.enable_"..., 38not ok 2 sigtrap_threads.enable_event
) = 38
write(1, "#  RUN           sigtrap_threads"..., 61#  RUN           sigtrap_threads.modify_and_enable_event ...
) = 61
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xffff814faed0) = 11965
rt_sigaction(SIGALRM, {sa_handler=0x401a40, sa_mask=[], sa_flags=SA_SIGINFO}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=30, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}) = 0
wait4(11965, # sigtrap_threads.c:190:modify_and_enable_event:Expected ctx.signal_count (0) == NUM_THREADS (5)
# sigtrap_threads.c:191:modify_and_enable_event:Expected ctx.tids_want_signal (59840) == 0 (0)
# sigtrap_threads.c:192:modify_and_enable_event:Expected ctx.first_siginfo.si_addr (0) == &ctx.iterate_on (4327904)
# sigtrap_threads.c:193:modify_and_enable_event:Expected ctx.first_siginfo.si_perf_type (0) == PERF_TYPE_BREAKPOINT (5)
# sigtrap_threads.c:194:modify_and_enable_event:Expected ctx.first_siginfo.si_perf_data (0) == TEST_SIG_DATA(&ctx.iterate_on, 42) (18446744073705223753)
# sigtrap_threads.c:198:modify_and_enable_event:Expected ctx.signal_count (0) == NUM_THREADS + 1 (6)
[{WIFEXITED(s) && WEXITSTATUS(s) == 13}], 0, NULL) = 11965
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11965, si_uid=0, si_status=13, si_utime=0, si_stime=0} ---
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=29, tv_usec=996295}}) = 0
rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
write(2, "# modify_and_enable_event: Test "..., 51# modify_and_enable_event: Test failed at step #13
) = 51
write(1, "#          FAIL  sigtrap_threads"..., 57#          FAIL  sigtrap_threads.modify_and_enable_event
) = 57
write(1, "not ok 3 sigtrap_threads.modify_"..., 49not ok 3 sigtrap_threads.modify_and_enable_event
) = 49
write(1, "#  RUN           sigtrap_threads"..., 51#  RUN           sigtrap_threads.signal_stress ...
) = 51
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xffff814faed0) = 11971
rt_sigaction(SIGALRM, {sa_handler=0x401a40, sa_mask=[], sa_flags=SA_SIGINFO}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=30, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}) = 0
wait4(11971, # sigtrap_threads.c:210:signal_stress:Expected ctx.signal_count (14) == NUM_THREADS * ctx.iterate_on (15000)
# sigtrap_threads.c:211:signal_stress:Expected ctx.tids_want_signal (179442363) == 0 (0)
[{WIFEXITED(s) && WEXITSTATUS(s) == 13}], 0, NULL) = 11971
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11971, si_uid=0, si_status=13, si_utime=0, si_stime=2} ---
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=29, tv_usec=991946}}) = 0
rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
write(2, "# signal_stress: Test failed at "..., 41# signal_stress: Test failed at step #13
) = 41
write(1, "#          FAIL  sigtrap_threads"..., 47#          FAIL  sigtrap_threads.signal_stress
) = 47
write(1, "not ok 4 sigtrap_threads.signal_"..., 39not ok 4 sigtrap_threads.signal_stress
) = 39
write(1, "#  RUN           sigtrap_threads"..., 64#  RUN           sigtrap_threads.signal_stress_with_disable ...
) = 64
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xffff814faed0) = 11977
rt_sigaction(SIGALRM, {sa_handler=0x401a40, sa_mask=[], sa_flags=SA_SIGINFO}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=30, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}) = 0
wait4(11977, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 11977
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11977, si_uid=0, si_status=0, si_utime=15, si_stime=29} ---
setitimer(ITIMER_REAL, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=0, tv_usec=0}}, {it_interval={tv_sec=0, tv_usec=0}, it_value={tv_sec=29, tv_usec=876462}}) = 0
rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
write(1, "#            OK  sigtrap_threads"..., 60#            OK  sigtrap_threads.signal_stress_with_disable
) = 60
write(1, "ok 5 sigtrap_threads.signal_stre"..., 48ok 5 sigtrap_threads.signal_stress_with_disable
) = 48
munmap(0xffff814f9000, 1024)            = 0
write(1, "# FAILED: 2 / 5 tests passed.\n", 30# FAILED: 2 / 5 tests passed.
) = 30
write(1, "# Totals: pass:2 fail:3 xfail:0 "..., 55# Totals: pass:2 fail:3 xfail:0 xpass:0 skip:0 error:0
) = 55
exit_group(1)                           = ?
+++ exited with 1 +++


How reproducible:
必现


Steps to Reproduce:
wget 内核对应src.rpm包
rpm -ivh xxx.src.rpm 默认安装到/root下
yum install yum-utils
yum-builddep -y /root/rpmbuild/SPECS/kernel.spec 自动安装前置依赖包 需要yum-utils
rpmbuild -bp /root/rpmbuild/SPECS/kernel.spec # 这个步骤会打相关的patch, 解压缩tar包,生成BUILD目录
cd /root/rpmbuild/BUILD/kernel-*/linux-*
make -C tools/testing/selftests/
cd /root/rpmbuild/BUILD/kernel-*/linux-*/tools/testing/selftests/perf_events
make
./sigtrap_threads



Actual results:
用例执行fail

Expected results:
用例执行通过

Additional info:
[环境信息] ECS

# uname -r
6.6.88-cbp.git.8c112c479.an23.aarch64

# free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       884Mi       8.2Gi       7.2Mi       6.2Gi        14Gi
Swap:             0B          0B          0B


# lscpu
Architecture:             aarch64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          48 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   4
  On-line CPU(s) list:    0-3
Vendor ID:                ARM
  BIOS Vendor ID:         Alibaba Cloud
  Model name:             Neoverse-N1
    BIOS Model name:      virt-rhel7.6.0  CPU @ 2.0GHz
    BIOS CPU family:      1
    Model:                1
    Thread(s) per core:   1
    Core(s) per cluster:  4
    Socket(s):            1
    Cluster(s):           1
    Stepping:             r3p1
    BogoMIPS:             50.00
    Flags:                fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
NUMA:
  NUMA node(s):           1
  NUMA node0 CPU(s):      0-3
Vulnerabilities:
  Gather data sampling:   Not affected
  Itlb multihit:          Not affected
  L1tf:                   Not affected
  Mds:                    Not affected
  Meltdown:               Not affected
  Mmio stale data:        Not affected
  Reg file data sampling: Not affected
  Retbleed:               Not affected
  Spec rstack overflow:   Not affected
  Spec store bypass:      Not affected
  Spectre v1:             Mitigation; __user pointer sanitization
  Spectre v2:             Mitigation; CSV2, but not BHB
  Srbds:                  Not affected
  Tsx async abort:        Not affected