Skip to content

Instantly share code, notes, and snippets.

@guitarrapc
Last active February 9, 2026 09:11
Show Gist options
  • Select an option

  • Save guitarrapc/50d30f171ea1af6aa935bd268b954026 to your computer and use it in GitHub Desktop.

Select an option

Save guitarrapc/50d30f171ea1af6aa935bd268b954026 to your computer and use it in GitHub Desktop.
strace C# JIT

Summary

$ dotnet --list-sdks
10.0.102

Build and Run

dotnet publish -o publish -r linux-x64 -c Release
cp publish/hello_csharp ~/. && cd ~
strace -c ./hello_csharp

How to find your icu versions. You have 74 for following case.

$ ldconfig -p | grep -E 'libicu(uc|i18n)\.so' | head -n 50
        libicuuc.so.74 (libc6,x86-64) => /lib/x86_64-linux-gnu/libicuuc.so.74
        libicui18n.so.74 (libc6,x86-64) => /lib/x86_64-linux-gnu/libicui18n.so.74

Reference

https://dev.classmethod.jp/articles/strace-c-go-rust-python-node-js-hello-world/

Native AOT

https://gist.github.com/guitarrapc/ff3f3c8713ca34aa0853c5947579d3e0

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
</PropertyGroup>
</Project>
Console.WriteLine("Hello, C#!");
# syscalls
```shell
$ strace -c ./hello_csharp
Hello, World
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ------------------
46.49 0.002176 6 343 mprotect
18.44 0.000863 5 161 mmap
9.25 0.000433 2 163 92 openat
4.10 0.000192 5 37 munmap
3.18 0.000149 3 38 34 readlink
2.88 0.000135 6 21 pread64
2.67 0.000125 1 67 fstat
2.63 0.000123 5 22 fcntl
2.22 0.000104 6 15 rt_sigprocmask
1.60 0.000075 8 9 stat
1.30 0.000061 1 61 close
1.22 0.000057 8 7 clone3
1.03 0.000048 2 24 rt_sigaction
0.58 0.000027 0 58 read
0.43 0.000020 3 6 6 access
0.41 0.000019 1 11 brk
0.34 0.000016 8 2 pipe2
0.28 0.000013 1 9 futex
0.26 0.000012 3 4 ioctl
0.21 0.000010 2 5 getpid
0.19 0.000009 1 8 write
0.19 0.000009 0 23 madvise
0.11 0.000005 5 1 lseek
0.00 0.000000 0 1 socket
0.00 0.000000 0 1 bind
0.00 0.000000 0 1 listen
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 ftruncate
0.00 0.000000 0 5 2 unlink
0.00 0.000000 0 1 fchmod
0.00 0.000000 0 2 sysinfo
0.00 0.000000 0 1 getsid
0.00 0.000000 0 2 sigaltstack
0.00 0.000000 0 2 statfs
0.00 0.000000 0 1 arch_prctl
0.00 0.000000 0 1 gettid
0.00 0.000000 0 4 sched_getaffinity
0.00 0.000000 0 2 getdents64
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 1 get_mempolicy
0.00 0.000000 0 2 mknodat
0.00 0.000000 0 16 12 newfstatat
0.00 0.000000 0 1 set_robust_list
0.00 0.000000 0 10 prlimit64
0.00 0.000000 0 1 getrandom
0.00 0.000000 0 1 memfd_create
0.00 0.000000 0 4 membarrier
0.00 0.000000 0 1 rseq
------ ----------- ----------- --------- --------- ------------------
100.00 0.004681 4 1159 146 total
```
# Why so many openat (loader)?
```shell
$ strace -f -e trace=openat,newfstatat,access -s 200 ./hello_csharp 2>&1 | head -n 200
$ strace -f -e trace=openat,newfstatat,access -s 200 ./hello_csharp 2>&1 | head -n 200
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
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=32768, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=32768, ...}, 0) = 0
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/", 0x7ffc45b9df00, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
access("", F_OK) = -1 ENOENT (No such file or directory)
access("opt/coreservicing", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
access("", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 3
openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY) = 3
strace: Process 3066 attached
[pid 3065] openat(AT_FDCWD, "/sys/fs/cgroup/init.scope/cpu.max", O_RDONLY) = 8
[pid 3065] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_CLOEXEC) = 9
[pid 3065] openat(AT_FDCWD, "/proc/3065/stat", O_RDONLY) = 10
strace: Process 3067 attached
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 11
[pid 3065] openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 11
[pid 3065] openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY) = 11
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/node", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 11
[pid 3065] openat(AT_FDCWD, "/proc/3065/stat", O_RDONLY) = 11
[pid 3065] openat(AT_FDCWD, "/proc/3065/stat", O_RDONLY) = 11
strace: Process 3068 attached
strace: Process 3069 attached
[pid 3068] openat(AT_FDCWD, "/tmp/clr-debug-pipe-3065-346605-in", O_RDONLY <unfinished ...>
[pid 3065] openat(AT_FDCWD, "/proc/3065/stat", O_RDONLY) = 14
[pid 3065] openat(AT_FDCWD, "/dev/shm/sem.clrst00000bf900000000000549ed", O_RDWR|O_NOFOLLOW|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/sys/fs/cgroup/init.scope/memory.max", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index0/size", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index0/level", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index1/size", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index1/level", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index2/size", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index2/level", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index3/size", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index3/level", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index4/size", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/proc/meminfo", O_RDONLY) = 12
[pid 3065] openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 12
[pid 3065] openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 12
strace: Process 3070 attached
[pid 3065] openat(AT_FDCWD, "/proc/self/task/3070/comm", O_RDWR) = 14
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 12
strace: Process 3071 attached
[pid 3065] openat(AT_FDCWD, "/proc/self/task/3071/comm", O_RDWR) = 16
[pid 3065] access("", F_OK) = -1 ENOENT (No such file or directory)
[pid 3065] access("opt/corebreadcrumbs", F_OK) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 14
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 16
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 18
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 20
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 22
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.90", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.90", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.90", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.90", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.89", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.89", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.89", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.89", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.88", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.88", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.88", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.88", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.87", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.87", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.87", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.87", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.86", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.86", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.86", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.86", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.85", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.85", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.85", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.85", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.84", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.84", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.84", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.84", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.83", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.83", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.83", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.83", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.82", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.82", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.82", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.82", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.81", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.81", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.81", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.81", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.80", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.80", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.80", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.80", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.79", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.79", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.79", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.79", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.78", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.78", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.78", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.78", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.77", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.77", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.77", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.77", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.76", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.76", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.76", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.76", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.75", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libicuuc.so.75", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/libicuuc.so.75", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/lib/libicuuc.so.75", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.74", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicudata.so.74", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicui18n.so.74", O_RDONLY|O_CLOEXEC) = 25
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 25
strace: Process 3072 attached
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/.terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/.terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/etc/terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/lib/terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3065] openat(AT_FDCWD, "/usr/share/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = 29
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 30
[pid 3065] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 32
Hello, World
[pid 3068] <... openat resumed>) = ?
[pid 3071] +++ exited with 0 +++
[pid 3070] +++ exited with 0 +++
[pid 3069] +++ exited with 0 +++
[pid 3068] +++ exited with 0 +++
[pid 3066] +++ exited with 0 +++
```
# ldd
How many dependencies?
```shell
$ ldd ./hello_csharp
linux-vdso.so.1 (0x00007ffc25da9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007c471f9a0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007c471f99b000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007c471f96d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007c471f968000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007c471f87f000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007c471e800000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007c471e400000)
/lib64/ld-linux-x86-64.so.2 (0x00007c471f9ad000)
```
# syscalls
Specifing ICU version significantly reduce openat while uging ICU.
```shell
$ DOTNET_ICU_VERSION_OVERRIDE=74 strace -c ./hello_csharp
Hello, World
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ------------------
41.16 0.002622 7 343 mprotect
13.80 0.000879 6 145 mmap
6.11 0.000389 4 83 28 openat
5.73 0.000365 6 60 read
4.21 0.000268 29 9 futex
2.68 0.000171 3 51 fstat
2.62 0.000167 4 38 34 readlink
2.50 0.000159 7 21 pread64
2.24 0.000143 6 22 fcntl
2.21 0.000141 6 23 madvise
2.06 0.000131 6 21 munmap
1.99 0.000127 2 45 close
1.76 0.000112 16 7 clone3
1.73 0.000110 13 8 write
1.43 0.000091 3 24 rt_sigaction
1.40 0.000089 5 15 rt_sigprocmask
1.24 0.000079 8 9 stat
1.15 0.000073 18 4 ioctl
1.13 0.000072 14 5 2 unlink
1.05 0.000067 6 11 brk
0.41 0.000026 2 10 prlimit64
0.38 0.000024 6 4 sched_getaffinity
0.31 0.000020 3 6 6 access
0.31 0.000020 4 5 getpid
0.24 0.000015 7 2 pipe2
0.16 0.000010 10 1 lseek
0.00 0.000000 0 1 socket
0.00 0.000000 0 1 bind
0.00 0.000000 0 1 listen
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 ftruncate
0.00 0.000000 0 1 fchmod
0.00 0.000000 0 2 sysinfo
0.00 0.000000 0 1 getsid
0.00 0.000000 0 2 sigaltstack
0.00 0.000000 0 2 statfs
0.00 0.000000 0 1 arch_prctl
0.00 0.000000 0 1 gettid
0.00 0.000000 0 2 getdents64
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 1 get_mempolicy
0.00 0.000000 0 2 mknodat
0.00 0.000000 0 16 12 newfstatat
0.00 0.000000 0 1 set_robust_list
0.00 0.000000 0 1 getrandom
0.00 0.000000 0 1 memfd_create
0.00 0.000000 0 4 membarrier
0.00 0.000000 0 1 rseq
------ ----------- ----------- --------- --------- ------------------
100.00 0.006370 6 1017 82 total
```
## Why so many openat (loader)?
Specifying ICU version stop searching each ICU version.
```shell
$ DOTNET_ICU_VERSION_OVERRIDE=74 strace -f -e trace=openat,newfstatat,access -s 200 ./hello_csharp 2>&1 | head -n 200
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
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=32768, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=32768, ...}, 0) = 0
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/", 0x7ffe96d54fe0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
access("", F_OK) = -1 ENOENT (No such file or directory)
access("opt/coreservicing", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
access("", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 3
openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY) = 3
strace: Process 3693 attached
[pid 3692] openat(AT_FDCWD, "/sys/fs/cgroup/init.scope/cpu.max", O_RDONLY) = 8
[pid 3692] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_CLOEXEC) = 9
[pid 3692] openat(AT_FDCWD, "/proc/3692/stat", O_RDONLY) = 10
strace: Process 3694 attached
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 11
[pid 3692] openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 11
[pid 3692] openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY) = 11
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/node", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 11
[pid 3692] openat(AT_FDCWD, "/proc/3692/stat", O_RDONLY) = 11
[pid 3692] openat(AT_FDCWD, "/proc/3692/stat", O_RDONLY) = 11
strace: Process 3695 attached
[pid 3695] openat(AT_FDCWD, "/tmp/clr-debug-pipe-3692-739319-in", O_RDONLYstrace: Process 3696 attached
<unfinished ...>
[pid 3692] openat(AT_FDCWD, "/proc/3692/stat", O_RDONLY) = 14
[pid 3692] openat(AT_FDCWD, "/dev/shm/sem.clrst00000e6c00000000000b47f7", O_RDWR|O_NOFOLLOW|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/sys/fs/cgroup/init.scope/memory.max", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index0/size", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index0/level", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index1/size", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index1/level", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index2/size", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index2/level", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index3/size", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index3/level", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index4/size", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/proc/meminfo", O_RDONLY) = 12
[pid 3692] openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 12
[pid 3692] openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 12
strace: Process 3697 attached
[pid 3692] openat(AT_FDCWD, "/proc/self/task/3697/comm", O_RDWR) = 14
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 12
strace: Process 3698 attached
[pid 3692] openat(AT_FDCWD, "/proc/self/task/3698/comm", O_RDWR) = 16
[pid 3692] access("", F_OK) = -1 ENOENT (No such file or directory)
[pid 3692] access("opt/corebreadcrumbs", F_OK) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 14
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 16
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 18
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 20
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 22
[pid 3692] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3692] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicuuc.so.74", O_RDONLY|O_CLOEXEC) = 25
[pid 3692] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicudata.so.74", O_RDONLY|O_CLOEXEC) = 25
[pid 3692] openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 25
[pid 3692] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicui18n.so.74", O_RDONLY|O_CLOEXEC) = 25
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 25
strace: Process 3699 attached
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/.terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/.terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/etc/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/etc/terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/lib/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/lib/terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3692] openat(AT_FDCWD, "/usr/share/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = 29
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 30
[pid 3692] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 32
Hello, World
[pid 3695] <... openat resumed>) = ?
[pid 3698] +++ exited with 0 +++
[pid 3697] +++ exited with 0 +++
[pid 3696] +++ exited with 0 +++
[pid 3695] +++ exited with 0 +++
[pid 3694] +++ exited with 0 +++
[pid 3693] +++ exited with 0 +++
[pid 3699] +++ exited with 0 +++
+++ exited with 0 +++
```
# ldd
How many dependencies?
```shell
$ DOTNET_ICU_VERSION_OVERRIDE=74 ldd ./hello_csharp
linux-vdso.so.1 (0x00007fff8c9f6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007c2a11d0a000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007c2a11d05000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007c2a11cd7000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007c2a11cd2000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007c2a11be9000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007c2a10c00000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007c2a10800000)
/lib64/ld-linux-x86-64.so.2 (0x00007c2a11d17000)
```
# syscalls
Without ICU significantly reduce openat.
```shell
$ DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 strace -c ./hello_csharp
Hello, World
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ------------------
32.64 0.002355 6 337 mprotect
11.45 0.000826 6 129 mmap
8.41 0.000607 11 55 read
8.19 0.000591 7 78 28 openat
6.39 0.000461 57 8 futex
3.37 0.000243 16 15 rt_sigprocmask
3.22 0.000232 5 46 fstat
2.99 0.000216 5 40 close
2.74 0.000198 28 7 clone3
2.44 0.000176 7 23 madvise
2.34 0.000169 8 19 munmap
2.07 0.000149 7 21 pread64
1.59 0.000115 3 38 34 readlink
1.58 0.000114 22 5 2 unlink
1.54 0.000111 5 22 fcntl
1.46 0.000105 13 8 write
1.03 0.000074 3 24 rt_sigaction
0.89 0.000064 64 1 bind
0.79 0.000057 5 10 brk
0.68 0.000049 5 9 stat
0.61 0.000044 22 2 mknodat
0.50 0.000036 9 4 ioctl
0.50 0.000036 3 10 prlimit64
0.44 0.000032 6 5 getpid
0.39 0.000028 7 4 sched_getaffinity
0.30 0.000022 11 2 getdents64
0.24 0.000017 17 1 socket
0.22 0.000016 4 4 membarrier
0.17 0.000012 6 2 statfs
0.15 0.000011 5 2 sysinfo
0.15 0.000011 5 2 pipe2
0.14 0.000010 10 1 listen
0.14 0.000010 10 1 fchmod
0.12 0.000009 9 1 get_mempolicy
0.11 0.000008 8 1 lseek
0.00 0.000000 0 6 6 access
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 ftruncate
0.00 0.000000 0 1 getsid
0.00 0.000000 0 2 sigaltstack
0.00 0.000000 0 1 arch_prctl
0.00 0.000000 0 1 gettid
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 16 12 newfstatat
0.00 0.000000 0 1 set_robust_list
0.00 0.000000 0 1 getrandom
0.00 0.000000 0 1 memfd_create
0.00 0.000000 0 1 rseq
------ ----------- ----------- --------- --------- ------------------
100.00 0.007214 7 971 82 total
```
# Why so many openat (loader)?
```shell
$ DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 strace -f -e trace=openat,newfstatat,access -s 200 ./hello_csharp 2>&1 | head -n 200
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
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=32768, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=32768, ...}, 0) = 0
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/", 0x7ffc130180a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/liblttng-ust-tracepoint.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
access("", F_OK) = -1 ENOENT (No such file or directory)
access("opt/coreservicing", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 3
access("", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 3
openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY) = 3
strace: Process 3142 attached
[pid 3141] openat(AT_FDCWD, "/sys/fs/cgroup/init.scope/cpu.max", O_RDONLY) = 8
[pid 3141] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_CLOEXEC) = 9
[pid 3141] openat(AT_FDCWD, "/proc/3141/stat", O_RDONLY) = 10
strace: Process 3143 attached
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 11
[pid 3141] openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 11
[pid 3141] openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY) = 11
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/node", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 11
[pid 3141] openat(AT_FDCWD, "/proc/3141/stat", O_RDONLY) = 11
[pid 3141] openat(AT_FDCWD, "/proc/3141/stat", O_RDONLY) = 11
strace: Process 3144 attached
strace: Process 3145 attached
[pid 3144] openat(AT_FDCWD, "/tmp/clr-debug-pipe-3141-379987-in", O_RDONLY <unfinished ...>
[pid 3141] openat(AT_FDCWD, "/proc/3141/stat", O_RDONLY) = 14
[pid 3141] openat(AT_FDCWD, "/dev/shm/sem.clrst00000c45000000000005cc53", O_RDWR|O_NOFOLLOW|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/sys/fs/cgroup/init.scope/memory.max", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index0/size", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index0/level", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index1/size", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index1/level", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index2/size", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index2/level", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index3/size", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index3/level", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/cache/index4/size", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/proc/meminfo", O_RDONLY) = 12
[pid 3141] openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 12
[pid 3141] openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 12
strace: Process 3146 attached
[pid 3141] openat(AT_FDCWD, "/proc/self/task/3146/comm", O_RDWR) = 14
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 12
strace: Process 3147 attached
[pid 3141] openat(AT_FDCWD, "/proc/self/task/3147/comm", O_RDWR) = 16
[pid 3141] access("", F_OK) = -1 ENOENT (No such file or directory)
[pid 3141] access("opt/corebreadcrumbs", F_OK) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 14
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 16
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 18
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 20
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 22
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 25
strace: Process 3148 attached
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/.terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/.terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/etc/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/etc/terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/lib/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/lib/terminfo/78/xterm-256color", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3141] openat(AT_FDCWD, "/usr/share/terminfo/x/xterm-256color", O_RDONLY|O_CLOEXEC) = 29
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 30
[pid 3141] openat(AT_FDCWD, "/home/guitarrapc/hello_csharp", O_RDONLY) = 32
Hello, World
[pid 3144] <... openat resumed>) = ?
[pid 3148] +++ exited with 0 +++
[pid 3147] +++ exited with 0 +++
[pid 3146] +++ exited with 0 +++
[pid 3145] +++ exited with 0 +++
[pid 3144] +++ exited with 0 +++
[pid 3143] +++ exited with 0 +++
[pid 3142] +++ exited with 0 +++
+++ exited with 0 +++
```
# ldd
How many dependencies?
```shell
$ DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 ldd ./hello_csharp
linux-vdso.so.1 (0x00007ffd7ddf0000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x000076028b420000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x000076028b41b000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000076028b3ed000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x000076028b3e8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000076028a717000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000076028a400000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000076028a000000)
/lib64/ld-linux-x86-64.so.2 (0x000076028b42d000)
```
Console pass `DECCKM: cursor keys mode` to PTY (terminal), then write `Hello, World`.
```shell
$ DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 strace -f -ttt -e write ./hello_csharp
strace: Process 3624 attached
strace: Process 3625 attached
strace: Process 3626 attached
strace: Process 3627 attached
[pid 3623] 1770616287.010252 write(13, "*", 1) = 1
strace: Process 3628 attached
[pid 3623] 1770616287.017529 write(14, ".NET Finalizer", 14) = 14
[pid 3623] 1770616287.017689 write(13, "*", 1) = 1
strace: Process 3629 attached
[pid 3623] 1770616287.028914 write(16, ".NET Tiered Com", 15) = 15
[pid 3623] 1770616287.029080 write(15, "*", 1) = 1
strace: Process 3630 attached
[pid 3623] 1770616287.062171 write(1, "\33[?1h\33=", 7) = 7
[pid 3623] 1770616287.062694 write(24, "Hello, World\n", 13Hello, World
) = 13
[pid 3623] 1770616287.064042 write(4, "\1", 1) = 1
[pid 3630] 1770616287.064973 +++ exited with 0 +++
[pid 3629] 1770616287.064992 +++ exited with 0 +++
[pid 3628] 1770616287.065005 +++ exited with 0 +++
[pid 3627] 1770616287.065017 +++ exited with 0 +++
[pid 3625] 1770616287.065031 +++ exited with 0 +++
[pid 3624] 1770616287.065043 +++ exited with 0 +++
[pid 3626] 1770616287.066875 +++ exited with 0 +++
1770616287.066897 +++ exited with 0 +++
```
```shell
$ DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 strace -f -ttt -e trace=write,writev -s 200 -yy -xx ./hello_csharp
strace: Process 3527 attached
strace: Process 3528 attached
strace: Process 3529 attached
strace: Process 3530 attached
[pid 3526] 1770615419.560672 write(13<\x70\x69\x70\x65\x3a\x5b\x37\x32\x37\x30\x35\x5d>, "\x2a", 1) = 1
strace: Process 3531 attached
[pid 3526] 1770615419.567528 write(14<\x2f\x70\x72\x6f\x63\x2f\x33\x35\x32\x36\x2f\x74\x61\x73\x6b\x2f\x33\x35\x33\x31\x2f\x63\x6f\x6d\x6d>, "\x2e\x4e\x45\x54\x20\x46\x69\x6e\x61\x6c\x69\x7a\x65\x72", 14) = 14
[pid 3526] 1770615419.567705 write(13<\x70\x69\x70\x65\x3a\x5b\x36\x36\x34\x38\x31\x5d>, "\x2a", 1) = 1
strace: Process 3532 attached
[pid 3526] 1770615419.588870 write(16<\x2f\x70\x72\x6f\x63\x2f\x33\x35\x32\x36\x2f\x74\x61\x73\x6b\x2f\x33\x35\x33\x32\x2f\x63\x6f\x6d\x6d>, "\x2e\x4e\x45\x54\x20\x54\x69\x65\x72\x65\x64\x20\x43\x6f\x6d", 15) = 15
[pid 3526] 1770615419.589054 write(15<\x70\x69\x70\x65\x3a\x5b\x36\x36\x34\x38\x32\x5d>, "\x2a", 1) = 1
strace: Process 3533 attached
[pid 3526] 1770615419.643025 write(1<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, "\x1b\x5b\x3f\x31\x68\x1b\x3d", 7) = 7
[pid 3526] 1770615419.643679 write(24<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, "\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x0a", 13Hello, World
) = 13
[pid 3526] 1770615419.645259 write(4<\x70\x69\x70\x65\x3a\x5b\x37\x30\x30\x33\x30\x5d>, "\x01", 1) = 1
[pid 3533] 1770615419.647213 +++ exited with 0 +++
[pid 3532] 1770615419.647241 +++ exited with 0 +++
[pid 3531] 1770615419.647261 +++ exited with 0 +++
[pid 3530] 1770615419.647279 +++ exited with 0 +++
[pid 3528] 1770615419.647297 +++ exited with 0 +++
[pid 3527] 1770615419.647314 +++ exited with 0 +++
[pid 3529] 1770615419.649074 +++ exited with 0 +++
1770615419.649095 +++ exited with 0 +++
```
## 1st write
`\x1b` = ESC
`\x1b\x5b\x3f\x31\x68` = `ESC [ ? 1 h` = DEC Private Mode Set 1(DECCKM: cursor keys mode)
`\x1b\x3d` = `ESC` = = DECKPAM(Keypad Application Mode)
```
write(1</dev/pts/4>, "\x1b\x5b\x3f\x31\x68\x1b\x3d", 7) = 7
```
## 2nd write
Characters and NewLine at once.
`fd=3` = `/dev/pts/4` = not using `stdout(1)` directly.
```
write(3</dev/pts/4>, "Hello, World\n", 13) = 13
```
## Why fd=3?
fd=3 is clone of `stdout(1)` (with CLOEXEC)
```
$ DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 strace -f -ttt -e trace=dup,dup2,dup3,fcntl,openat,close,write -s 200 -yy -xx ./hello_csharp
1770615713.847249 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65", O_RDONLY|O_CLOEXEC) = 3<\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65>
1770615713.847606 close(3<\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65>) = 0
1770615713.847707 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x2e\x32", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x2e\x32>
1770615713.848164 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x2e\x32>) = 0
1770615713.848253 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x72\x74\x2e\x73\x6f\x2e\x31", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x72\x74\x2e\x73\x6f\x2e\x31>
1770615713.848676 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x72\x74\x2e\x73\x6f\x2e\x31>) = 0
1770615713.848764 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x67\x63\x63\x5f\x73\x2e\x73\x6f\x2e\x31", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x67\x63\x63\x5f\x73\x2e\x73\x6f\x2e\x31>
1770615713.849179 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x67\x63\x63\x5f\x73\x2e\x73\x6f\x2e\x31>) = 0
1770615713.849262 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x70\x74\x68\x72\x65\x61\x64\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x70\x74\x68\x72\x65\x61\x64\x2e\x73\x6f\x2e\x30>
1770615713.849687 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x70\x74\x68\x72\x65\x61\x64\x2e\x73\x6f\x2e\x30>) = 0
1770615713.849774 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6d\x2e\x73\x6f\x2e\x36", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6d\x2e\x73\x6f\x2e\x36>
1770615713.850195 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6d\x2e\x73\x6f\x2e\x36>) = 0
1770615713.850281 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x73\x74\x64\x63\x2b\x2b\x2e\x73\x6f\x2e\x36", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x73\x74\x64\x63\x2b\x2b\x2e\x73\x6f\x2e\x36\x2e\x30\x2e\x33\x33>
1770615713.850816 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x73\x74\x64\x63\x2b\x2b\x2e\x73\x6f\x2e\x36\x2e\x30\x2e\x33\x33>) = 0
1770615713.850908 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36", O_RDONLY|O_CLOEXEC) = 3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36>
1770615713.851541 close(3<\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36>) = 0
1770615713.853792 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65", O_RDONLY|O_CLOEXEC) = 3<\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65>
1770615713.854018 close(3<\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65>) = 0
1770615713.854115 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x34\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.854286 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x33\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.854451 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x32\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.854595 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.854763 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x34\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.854928 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x33\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.855088 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x32\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.855244 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.855410 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x34\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.855571 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x33\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.855719 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x32\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.855879 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.856030 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x34\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.856185 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x33\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.856331 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x67\x6c\x69\x62\x63\x2d\x68\x77\x63\x61\x70\x73\x2f\x78\x38\x36\x2d\x36\x34\x2d\x76\x32\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.856480 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.856696 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65", O_RDONLY|O_CLOEXEC) = 3<\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65>
1770615713.856897 close(3<\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x73\x6f\x2e\x63\x61\x63\x68\x65>) = 0
1770615713.856984 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.857084 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x78\x38\x36\x5f\x36\x34\x2d\x6c\x69\x6e\x75\x78\x2d\x67\x6e\x75\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.857189 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.857346 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x6c\x69\x62\x6c\x74\x74\x6e\x67\x2d\x75\x73\x74\x2d\x74\x72\x61\x63\x65\x70\x6f\x69\x6e\x74\x2e\x73\x6f\x2e\x30", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1770615713.858026 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
1770615713.858245 close(3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>) = 0
1770615713.858571 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
1770615713.858789 close(3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>) = 0
1770615713.859028 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
1770615713.859249 close(3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>) = 0
1770615713.859547 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
1770615713.859753 close(3<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>) = 0
1770615713.860751 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x6d\x6f\x75\x6e\x74\x69\x6e\x66\x6f", O_RDONLY) = 3<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x6f\x75\x6e\x74\x69\x6e\x66\x6f>
1770615713.861317 close(3<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x6f\x75\x6e\x74\x69\x6e\x66\x6f>) = 0
1770615713.861401 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x63\x67\x72\x6f\x75\x70", O_RDONLY) = 3<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x63\x67\x72\x6f\x75\x70>
1770615713.861617 close(3<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x63\x67\x72\x6f\x75\x70>) = 0
strace: Process 3601 attached
[pid 3600] 1770615713.864344 fcntl(0<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, F_DUPFD_CLOEXEC, 0) = 5<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>
[pid 3600] 1770615713.864445 fcntl(1<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, F_DUPFD_CLOEXEC, 0) = 6<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>
[pid 3600] 1770615713.864553 fcntl(2<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, F_DUPFD_CLOEXEC, 0) = 7<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>
[pid 3600] 1770615713.864759 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x66\x73\x2f\x63\x67\x72\x6f\x75\x70\x2f\x69\x6e\x69\x74\x2e\x73\x63\x6f\x70\x65\x2f\x63\x70\x75\x2e\x6d\x61\x78", O_RDONLY) = 8<\x2f\x73\x79\x73\x2f\x66\x73\x2f\x63\x67\x72\x6f\x75\x70\x2f\x69\x6e\x69\x74\x2e\x73\x63\x6f\x70\x65\x2f\x63\x70\x75\x2e\x6d\x61\x78>
[pid 3600] 1770615713.864972 close(8<\x2f\x73\x79\x73\x2f\x66\x73\x2f\x63\x67\x72\x6f\x75\x70\x2f\x69\x6e\x69\x74\x2e\x73\x63\x6f\x70\x65\x2f\x63\x70\x75\x2e\x6d\x61\x78>) = 0
[pid 3600] 1770615713.865634 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x64\x65\x76\x2f\x75\x72\x61\x6e\x64\x6f\x6d", O_RDONLY|O_CLOEXEC) = 9<\x2f\x64\x65\x76\x2f\x75\x72\x61\x6e\x64\x6f\x6d<char 1:9>>
[pid 3600] 1770615713.865813 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74", O_RDONLY) = 10<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>
[pid 3600] 1770615713.866061 close(10<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>) = 0
strace: Process 3602 attached
[pid 3600] 1770615713.867921 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x6f\x6e\x6c\x69\x6e\x65", O_RDONLY|O_CLOEXEC) = 11<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x6f\x6e\x6c\x69\x6e\x65>
[pid 3600] 1770615713.868133 close(11<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x6f\x6e\x6c\x69\x6e\x65>) = 0
[pid 3600] 1770615713.868398 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x6d\x6f\x75\x6e\x74\x69\x6e\x66\x6f", O_RDONLY) = 11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x6f\x75\x6e\x74\x69\x6e\x66\x6f>
[pid 3600] 1770615713.868940 close(11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x6f\x75\x6e\x74\x69\x6e\x66\x6f>) = 0
[pid 3600] 1770615713.869035 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x63\x67\x72\x6f\x75\x70", O_RDONLY) = 11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x63\x67\x72\x6f\x75\x70>
[pid 3600] 1770615713.869268 close(11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x63\x67\x72\x6f\x75\x70>) = 0
[pid 3600] 1770615713.869510 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6e\x6f\x64\x65", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 11<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6e\x6f\x64\x65>
[pid 3600] 1770615713.869769 close(11<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6e\x6f\x64\x65>) = 0
[pid 3600] 1770615713.870382 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74", O_RDONLY) = 11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>
[pid 3600] 1770615713.870605 close(11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>) = 0
[pid 3600] 1770615713.870700 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74", O_RDONLY) = 11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>
[pid 3600] 1770615713.870954 close(11<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>) = 0
strace: Process 3603 attached
[pid 3603] 1770615713.872447 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x74\x6d\x70\x2f\x63\x6c\x72\x2d\x64\x65\x62\x75\x67\x2d\x70\x69\x70\x65\x2d\x33\x36\x30\x30\x2d\x36\x32\x34\x34\x34\x31\x2d\x69\x6e", O_RDONLYstrace: Process 3604 attached
<unfinished ...>
[pid 3600] 1770615713.873224 write(13<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x35\x5d>, "\x2a", 1) = 1
[pid 3600] 1770615713.873340 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74", O_RDONLY <unfinished ...>
[pid 3604] 1770615713.873383 close(12<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x35\x5d> <unfinished ...>
[pid 3600] 1770615713.873424 <... openat resumed>) = 14<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>
[pid 3604] 1770615713.873452 <... close resumed>) = 0
[pid 3604] 1770615713.873488 close(13<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x35\x5d>) = 0
[pid 3600] 1770615713.873591 close(14<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x73\x74\x61\x74>) = 0
[pid 3600] 1770615713.873682 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x64\x65\x76\x2f\x73\x68\x6d\x2f\x73\x65\x6d\x2e\x63\x6c\x72\x73\x74\x30\x30\x30\x30\x30\x65\x31\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x39\x38\x37\x33\x39", O_RDWR|O_NOFOLLOW|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.873809 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x66\x73\x2f\x63\x67\x72\x6f\x75\x70\x2f\x69\x6e\x69\x74\x2e\x73\x63\x6f\x70\x65\x2f\x6d\x65\x6d\x6f\x72\x79\x2e\x6d\x61\x78", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x66\x73\x2f\x63\x67\x72\x6f\x75\x70\x2f\x69\x6e\x69\x74\x2e\x73\x63\x6f\x70\x65\x2f\x6d\x65\x6d\x6f\x72\x79\x2e\x6d\x61\x78>
[pid 3600] 1770615713.874041 close(12<\x2f\x73\x79\x73\x2f\x66\x73\x2f\x63\x67\x72\x6f\x75\x70\x2f\x69\x6e\x69\x74\x2e\x73\x63\x6f\x70\x65\x2f\x6d\x65\x6d\x6f\x72\x79\x2e\x6d\x61\x78>) = 0
[pid 3600] 1770615713.874362 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x30\x2f\x73\x69\x7a\x65", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x30\x2f\x73\x69\x7a\x65>
[pid 3600] 1770615713.874597 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x30\x2f\x73\x69\x7a\x65>) = 0
[pid 3600] 1770615713.874694 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x30\x2f\x6c\x65\x76\x65\x6c", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x30\x2f\x6c\x65\x76\x65\x6c>
[pid 3600] 1770615713.874909 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x30\x2f\x6c\x65\x76\x65\x6c>) = 0
[pid 3600] 1770615713.875008 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x31\x2f\x73\x69\x7a\x65", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x31\x2f\x73\x69\x7a\x65>
[pid 3600] 1770615713.875223 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x31\x2f\x73\x69\x7a\x65>) = 0
[pid 3600] 1770615713.875321 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x31\x2f\x6c\x65\x76\x65\x6c", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x31\x2f\x6c\x65\x76\x65\x6c>
[pid 3600] 1770615713.875548 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x31\x2f\x6c\x65\x76\x65\x6c>) = 0
[pid 3600] 1770615713.875644 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x32\x2f\x73\x69\x7a\x65", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x32\x2f\x73\x69\x7a\x65>
[pid 3600] 1770615713.875876 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x32\x2f\x73\x69\x7a\x65>) = 0
[pid 3600] 1770615713.875975 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x32\x2f\x6c\x65\x76\x65\x6c", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x32\x2f\x6c\x65\x76\x65\x6c>
[pid 3600] 1770615713.876195 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x32\x2f\x6c\x65\x76\x65\x6c>) = 0
[pid 3600] 1770615713.876290 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x33\x2f\x73\x69\x7a\x65", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x33\x2f\x73\x69\x7a\x65>
[pid 3600] 1770615713.876495 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x33\x2f\x73\x69\x7a\x65>) = 0
[pid 3600] 1770615713.876587 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x33\x2f\x6c\x65\x76\x65\x6c", O_RDONLY) = 12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x33\x2f\x6c\x65\x76\x65\x6c>
[pid 3600] 1770615713.876814 close(12<\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x33\x2f\x6c\x65\x76\x65\x6c>) = 0
[pid 3600] 1770615713.876908 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x79\x73\x74\x65\x6d\x2f\x63\x70\x75\x2f\x63\x70\x75\x30\x2f\x63\x61\x63\x68\x65\x2f\x69\x6e\x64\x65\x78\x34\x2f\x73\x69\x7a\x65", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.877749 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x6d\x65\x6d\x69\x6e\x66\x6f", O_RDONLY) = 12<\x2f\x70\x72\x6f\x63\x2f\x6d\x65\x6d\x69\x6e\x66\x6f>
[pid 3600] 1770615713.877969 close(12<\x2f\x70\x72\x6f\x63\x2f\x6d\x65\x6d\x69\x6e\x66\x6f>) = 0
[pid 3600] 1770615713.878837 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x6d\x61\x70\x73", O_RDONLY|O_CLOEXEC) = 12<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x61\x70\x73>
[pid 3600] 1770615713.879618 close(12<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x61\x70\x73>) = 0
[pid 3600] 1770615713.879769 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x6d\x61\x70\x73", O_RDONLY|O_CLOEXEC) = 12<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x61\x70\x73>
[pid 3600] 1770615713.880503 close(12<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x6d\x61\x70\x73>) = 0
strace: Process 3605 attached
[pid 3600] 1770615713.881647 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x35\x2f\x63\x6f\x6d\x6d", O_RDWR) = 14<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x35\x2f\x63\x6f\x6d\x6d>
[pid 3600] 1770615713.881760 write(14<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x35\x2f\x63\x6f\x6d\x6d>, "\x2e\x4e\x45\x54\x20\x46\x69\x6e\x61\x6c\x69\x7a\x65\x72", 14) = 14
[pid 3600] 1770615713.881861 close(14<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x35\x2f\x63\x6f\x6d\x6d>) = 0
[pid 3600] 1770615713.881956 write(13<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x36\x5d>, "\x2a", 1) = 1
[pid 3605] 1770615713.882075 close(12<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x36\x5d>) = 0
[pid 3605] 1770615713.882186 close(13<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x36\x5d>) = 0
[pid 3600] 1770615713.882326 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 12<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.882426 fcntl(12<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.882511 fcntl(12<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 13<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
strace: Process 3606 attached
[pid 3600] 1770615713.893260 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x36\x2f\x63\x6f\x6d\x6d", O_RDWR) = 16<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x36\x2f\x63\x6f\x6d\x6d>
[pid 3600] 1770615713.893384 write(16<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x36\x2f\x63\x6f\x6d\x6d>, "\x2e\x4e\x45\x54\x20\x54\x69\x65\x72\x65\x64\x20\x43\x6f\x6d", 15) = 15
[pid 3600] 1770615713.893488 close(16<\x2f\x70\x72\x6f\x63\x2f\x33\x36\x30\x30\x2f\x74\x61\x73\x6b\x2f\x33\x36\x30\x36\x2f\x63\x6f\x6d\x6d>) = 0
[pid 3600] 1770615713.893582 write(15<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x37\x5d>, "\x2a", 1) = 1
[pid 3606] 1770615713.893697 close(14<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x37\x5d>) = 0
[pid 3606] 1770615713.893837 close(15<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x37\x5d>) = 0
[pid 3600] 1770615713.899887 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 14<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.899995 fcntl(14<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.900096 fcntl(14<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 15<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.900941 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 16<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.901051 fcntl(16<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.901154 fcntl(16<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 17<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.902456 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 18<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.902565 fcntl(18<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.902664 fcntl(18<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 19<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.903758 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 20<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.903880 fcntl(20<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.903978 fcntl(20<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 21<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.906836 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 22<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.906956 fcntl(22<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.907080 fcntl(22<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 23<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.908117 fcntl(1<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, F_DUPFD_CLOEXEC, 0) = 24<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>
[pid 3600] 1770615713.916165 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 25<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.916270 fcntl(25<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.916375 fcntl(25<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 26<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
strace: Process 3607 attached
[pid 3600] 1770615713.918169 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x2e\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x78\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.918682 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x2e\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x37\x38\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.918809 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x65\x74\x63\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x78\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.918922 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x65\x74\x63\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x37\x38\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.919031 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x78\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.919201 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x6c\x69\x62\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x37\x38\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 3600] 1770615713.919311 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x75\x73\x72\x2f\x73\x68\x61\x72\x65\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x78\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72", O_RDONLY|O_CLOEXEC) = 29<\x2f\x75\x73\x72\x2f\x73\x68\x61\x72\x65\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x78\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72>
[pid 3600] 1770615713.920031 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 30<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.920154 fcntl(30<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.920255 fcntl(30<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 31<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.921256 openat(AT_FDCWD<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63>, "\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70", O_RDONLY) = 32<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.921372 fcntl(32<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_SETFD, FD_CLOEXEC) = 0
[pid 3600] 1770615713.921464 fcntl(32<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>, F_DUPFD_CLOEXEC, 0) = 33<\x2f\x68\x6f\x6d\x65\x2f\x67\x75\x69\x74\x61\x72\x72\x61\x70\x63\x2f\x68\x65\x6c\x6c\x6f\x5f\x63\x73\x68\x61\x72\x70>
[pid 3600] 1770615713.925255 close(29<\x2f\x75\x73\x72\x2f\x73\x68\x61\x72\x65\x2f\x74\x65\x72\x6d\x69\x6e\x66\x6f\x2f\x78\x2f\x78\x74\x65\x72\x6d\x2d\x32\x35\x36\x63\x6f\x6c\x6f\x72>) = 0
[pid 3600] 1770615713.928083 write(1<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, "\x1b\x5b\x3f\x31\x68\x1b\x3d", 7) = 7
[pid 3600] 1770615713.928594 write(24<\x2f\x64\x65\x76\x2f\x70\x74\x73\x2f\x34<char 136:4>>, "\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x0a", 13Hello, World
) = 13
[pid 3600] 1770615713.929812 write(4<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x32\x5d>, "\x01", 1) = 1
[pid 3601] 1770615713.930036 close(4<\x70\x69\x70\x65\x3a\x5b\x37\x31\x31\x34\x32\x5d>) = 0
[pid 3603] 1770615713.930562 <... openat resumed>) = ?
[pid 3606] 1770615713.930683 +++ exited with 0 +++
[pid 3605] 1770615713.930697 +++ exited with 0 +++
[pid 3604] 1770615713.930703 +++ exited with 0 +++
[pid 3603] 1770615713.930715 +++ exited with 0 +++
[pid 3602] 1770615713.930722 +++ exited with 0 +++
[pid 3601] 1770615713.930740 +++ exited with 0 +++
[pid 3607] 1770615713.932484 +++ exited with 0 +++
1770615713.932504 +++ exited with 0 +++
```
dotnet indicate cloning `stdout` FD=1 to `FD=3` by `F_DUPFD_CLOEXEC`. This is aim to keep stdout safe handle for console output. stdout(1) can be modified by `close(1)`, `dup2` or redirected by application.
```
fcntl(1</dev/pts/4>, F_DUPFD_CLOEXEC, 0) = 3</dev/pts/4>
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment