Add cgroupv1 support to available_parallelism by the8472 · Pull Request #97925 · rust-lang/rust (original) (raw)

Here's the strace output:

strace

execve("./a", ["./a"], 0x7fff26161280 /* 11 vars /) = 0 brk(NULL) = 0x5596e2a81000 access("/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 fstat(3, {st_mode=S_IFREG|0644, st_size=31066, ...}) = 0 mmap(NULL, 31066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f94941be000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=100736, ...}) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f94941bc000 mmap(NULL, 103496, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f94941a2000 mmap(0x7f94941a5000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f94941a5000 mmap(0x7f94941b6000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f94941b6000 mmap(0x7f94941ba000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f94941ba000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 |\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=149520, ...}) = 0 mmap(NULL, 136304, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f9494180000 mmap(0x7f9494187000, 65536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f9494187000 mmap(0x7f9494197000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f9494197000 mmap(0x7f949419c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f949419c000 mmap(0x7f949419e000, 13424, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f949419e000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\21\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=18688, ...}) = 0 mmap(NULL, 20752, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f949417a000 mmap(0x7f949417b000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f949417b000 mmap(0x7f949417d000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f949417d000 mmap(0x7f949417e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f949417e000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/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>\0\1\0\0\0@n\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1839792, ...}) = 0 mmap(NULL, 1852680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f9493fb5000 mprotect(0x7f9493fda000, 1662976, PROT_NONE) = 0 mmap(0x7f9493fda000, 1355776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f9493fda000 mmap(0x7f9494125000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x170000) = 0x7f9494125000 mmap(0x7f9494170000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ba000) = 0x7f9494170000 mmap(0x7f9494176000, 13576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f9494176000 close(3) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9493fb3000 arch_prctl(ARCH_SET_FS, 0x7f9493fb3bc0) = 0 mprotect(0x7f9494170000, 12288, PROT_READ) = 0 mprotect(0x7f949417e000, 4096, PROT_READ) = 0 mprotect(0x7f949419c000, 4096, PROT_READ) = 0 mprotect(0x7f94941ba000, 4096, PROT_READ) = 0 mprotect(0x5596e18bc000, 16384, PROT_READ) = 0 mprotect(0x7f94941f0000, 4096, PROT_READ) = 0 munmap(0x7f94941be000, 31066) = 0 set_tid_address(0x7f9493fb3e90) = 40 set_robust_list(0x7f9493fb3ea0, 24) = 0 rt_sigaction(SIGRTMIN, {sa_handler=0x7f9494187690, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f9494194140}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {sa_handler=0x7f9494187730, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f9494194140}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=81921024, rlim_max=RLIM64_INFINITY}) = 0 poll([{fd=0, events=0}, {fd=1, events=0}, {fd=2, events=0}], 3, 0) = 0 (Timeout) rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f9493ff0d60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGSEGV, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGSEGV, {sa_handler=0x5596e1888de0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_SIGINFO, sa_restorer=0x7f9494194140}, NULL, 8) = 0 rt_sigaction(SIGBUS, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGBUS, {sa_handler=0x5596e1888de0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_SIGINFO, sa_restorer=0x7f9494194140}, NULL, 8) = 0 sigaltstack(NULL, {ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}) = 0 mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f94941c3000 mprotect(0x7f94941c3000, 4096, PROT_NONE) = 0 sigaltstack({ss_sp=0x7f94941c4000, ss_flags=0, ss_size=8192}, NULL) = 0 brk(NULL) = 0x5596e2a81000 brk(0x5596e2aa2000) = 0x5596e2aa2000 openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 3 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(3, "5596e1868000-5596e186e000 r--p 0"..., 1024) = 1024 read(3, " /lib/x86_64-linux-gnu/"..., 1024) = 1024 read(3, "568 /lib/x86"..., 1024) = 1024 read(3, " 00:00 0 \n7f94941c6000-7f94941c7"..., 1024) = 830 close(3) = 0 sched_getaffinity(40, 32, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]) = 32 openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY|O_CLOEXEC) = 3 statx(0, NULL, AT_STATX_SYNC_AS_STAT, STATX_ALL, NULL) = -1 EFAULT (Bad address) statx(3, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0444, stx_size=0, ...}) = 0 lseek(3, 0, SEEK_CUR) = 0 read(3, "14:name=systemd:/docker/1f9c571e"..., 128) = 128 read(3, "a20d7b64b28f723a1d55c6de88c390dc", 32) = 32 read(3, "6c16df635a726784be6\n11:hugetlb:/"..., 96) = 96 read(3, "6784be6\n10:net_prio:/docker/1f9c"..., 256) = 256 read(3, "84be6\n7:freezer:/docker/1f9c571e"..., 512) = 512 read(3, "r/1f9c571e3d897a20d7b64b28f723a1"..., 1024) = 72 read(3, "", 952) = 0 close(3) = 0 statx(AT_FDCWD, "/sys/fs/cgroup/cpu/docker/1f9c571e3d897a20d7b64b28f723a1d55c6de88c390dc6c16df635a726784be6", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe3b9bee90) = -1 ENOENT (No such file or directory) statx(AT_FDCWD, "/sys/fs/cgroup/cpu,cpuacct/docker/1f9c571e3d897a20d7b64b28f723a1d55c6de88c390dc6c16df635a726784be6", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe3b9bee90) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY|O_CLOEXEC) = 3 read(3, "1069 916 0:168 / / rw,relatime m"..., 8192) = 3872 read(3, "1092 1069 8:48 /version-pack-dat"..., 8192) = 1521 read(3, "", 8192) = 0 close(3) = 0 sched_getaffinity(0, 128, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]) = 32 write(1, "32\n", 3) = 3 32 sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=8192}, NULL) = 0 munmap(0x7f94941c3000, 12288) = 0 exit_group(0) = ? +++ exited with 0 +++

From what I can tell, in https://github.com/rust-lang/rust/blob/d41e4c8b779344412f07c8edc6c2326e7cb2a369/library/std/src/sys/unix/thread.rs#L517-L527

the call to try_exists always fails (because it unconditionally has the group_path on the end) which prevents it following through to the while loop below.