Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a performace-testing script #8

Open
joneschrisg opened this issue May 7, 2013 · 0 comments
Open

Implement a performace-testing script #8

joneschrisg opened this issue May 7, 2013 · 0 comments

Comments

@joneschrisg
Copy link
Contributor

Most basically, the script would run a workload, then run the same workload under rr and compare elapsed wall-clock time. Something like

$ ./script/measure.sh firefox --blah
'firefox --blah' took 10.3s
'rr --record firefox --blah' took 13.6s

Later on it might also be interesting to measure context switches, memory usage, and other such things that we find are important.

bernhardu added a commit to bernhardu/rr that referenced this issue Jun 23, 2021
These two tests are stuck:
  nested_detach-no-syscallbuf
  nested_detach-32-no-syscallbuf

For some reason just the no-syscallbuf variants get stuck,
the regular ones succeed.

$ bin/rr record -n bin/rr record --nested=detach bin/simple

PID 1305400 uses 100% CPU, until timeout kills all.

1305387    └─ bin/rr record -n bin/rr record --nested=detach bin/simple  12
1305399       ├─ bin/rr record --nested=detach bin/simple   1
1305400       └─ bin/rr record --nested=detach bin/simple   1

$ gdb -q --pid 1305400
(gdb) add-symbol-file /usr/lib/x86_64-linux-gnu/libasan.so.6.0.0 0x7f818ad37a60
(gdb) add-symbol-file .../x86_64_asan/obj/bin/rr 0x564caa04e830
(gdb) add-symbol-file .../x86_64_asan/obj/lib/rr/librrpreload.so 0x7f818ad030d0
(gdb) stepi
0x00007f818ad50339      4150      int res = REAL(pthread_mutex_lock)(m);
1: x/i $pc
=> 0x7f818ad50339 <__interceptor_pthread_mutex_lock(void*)+25>: jmp    *0xf4311(%rip)        # 0x7f818ae44650
(gdb) bt
#0  0x00007f818ad50339 in __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4150
rr-debugger#1  __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4146
rr-debugger#2  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#3  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
rr-debugger#4  0x0000564caa2b9ed2 in rr::RecordSession::RecordSession (this=0x619000003280, exe_path=..., argv=..., envp=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30, bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false) at .../rr/src/RecordSession.cc:2296
rr-debugger#5  0x0000564caa2b92ea in rr::RecordSession::create (argv=..., extra_env=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30 '\036', bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false, force_asan_active=false) at .../rr/src/RecordSession.cc:2261
rr-debugger#6  0x0000564caa29cd01 in rr::record (args=..., flags=...) at .../rr/src/RecordCommand.cc:632
rr-debugger#7  0x0000564caa29e90f in rr::RecordCommand::run (this=0x564caa956fe0, args=...) at .../rr/src/RecordCommand.cc:791
rr-debugger#8  0x0000564caa614909 in main (argc=4, argv=0x7ffd2a91dbe8) at .../rr/src/main.cc:271
...
(gdb) stepi
pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
24        mutex->__data.__kind &= ~PTHREAD_MUTEX_PRIO_INHERIT_NP;
1: x/i $pc
=> 0x7f818ad08660 <pthread_mutex_lock>: mov    0x4ba9(%rip),%rax        # 0x7f818ad0d210
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) stepi
74        return __pthread_mutex_lock(mutex);
1: x/i $pc
=> 0x7f818ad08678 <pthread_mutex_lock+24>:      jmp    0x7f818ad03070
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:74
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) print environ
$1 = (char **) 0x0

$ cat /proc/1305400/environ | tr '\0' '\n' | grep LD_PRELOAD
LD_PRELOAD=libasan.so.6:.../x86_64_asan/obj/bin/../lib/rr/librrpreload.so:::
bernhardu added a commit to bernhardu/rr that referenced this issue Jun 24, 2021
These two tests are stuck:
  nested_detach-no-syscallbuf
  nested_detach-32-no-syscallbuf

For some reason just the no-syscallbuf variants get stuck,
the regular ones succeed.

$ bin/rr record -n bin/rr record --nested=detach bin/simple

PID 1305400 uses 100% CPU, until timeout kills all.

1305387    └─ bin/rr record -n bin/rr record --nested=detach bin/simple  12
1305399       ├─ bin/rr record --nested=detach bin/simple   1
1305400       └─ bin/rr record --nested=detach bin/simple   1

$ gdb -q --pid 1305400
(gdb) add-symbol-file /usr/lib/x86_64-linux-gnu/libasan.so.6.0.0 0x7f818ad37a60
(gdb) add-symbol-file .../x86_64_asan/obj/bin/rr 0x564caa04e830
(gdb) add-symbol-file .../x86_64_asan/obj/lib/rr/librrpreload.so 0x7f818ad030d0
(gdb) stepi
0x00007f818ad50339      4150      int res = REAL(pthread_mutex_lock)(m);
1: x/i $pc
=> 0x7f818ad50339 <__interceptor_pthread_mutex_lock(void*)+25>: jmp    *0xf4311(%rip)        # 0x7f818ae44650
(gdb) bt
#0  0x00007f818ad50339 in __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4150
rr-debugger#1  __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4146
rr-debugger#2  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#3  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
rr-debugger#4  0x0000564caa2b9ed2 in rr::RecordSession::RecordSession (this=0x619000003280, exe_path=..., argv=..., envp=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30, bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false) at .../rr/src/RecordSession.cc:2296
rr-debugger#5  0x0000564caa2b92ea in rr::RecordSession::create (argv=..., extra_env=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30 '\036', bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false, force_asan_active=false) at .../rr/src/RecordSession.cc:2261
rr-debugger#6  0x0000564caa29cd01 in rr::record (args=..., flags=...) at .../rr/src/RecordCommand.cc:632
rr-debugger#7  0x0000564caa29e90f in rr::RecordCommand::run (this=0x564caa956fe0, args=...) at .../rr/src/RecordCommand.cc:791
rr-debugger#8  0x0000564caa614909 in main (argc=4, argv=0x7ffd2a91dbe8) at .../rr/src/main.cc:271
...
(gdb) stepi
pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
24        mutex->__data.__kind &= ~PTHREAD_MUTEX_PRIO_INHERIT_NP;
1: x/i $pc
=> 0x7f818ad08660 <pthread_mutex_lock>: mov    0x4ba9(%rip),%rax        # 0x7f818ad0d210
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) stepi
74        return __pthread_mutex_lock(mutex);
1: x/i $pc
=> 0x7f818ad08678 <pthread_mutex_lock+24>:      jmp    0x7f818ad03070
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:74
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) print environ
$1 = (char **) 0x0

$ cat /proc/1305400/environ | tr '\0' '\n' | grep LD_PRELOAD
LD_PRELOAD=libasan.so.6:.../x86_64_asan/obj/bin/../lib/rr/librrpreload.so:::
bernhardu added a commit to bernhardu/rr that referenced this issue Jun 25, 2021
These two tests are stuck:
  nested_detach-no-syscallbuf
  nested_detach-32-no-syscallbuf

For some reason just the no-syscallbuf variants get stuck,
the regular ones succeed.

$ bin/rr record -n bin/rr record --nested=detach bin/simple

PID 1305400 uses 100% CPU, until timeout kills all.

1305387    └─ bin/rr record -n bin/rr record --nested=detach bin/simple  12
1305399       ├─ bin/rr record --nested=detach bin/simple   1
1305400       └─ bin/rr record --nested=detach bin/simple   1

$ gdb -q --pid 1305400
(gdb) add-symbol-file /usr/lib/x86_64-linux-gnu/libasan.so.6.0.0 0x7f818ad37a60
(gdb) add-symbol-file .../x86_64_asan/obj/bin/rr 0x564caa04e830
(gdb) add-symbol-file .../x86_64_asan/obj/lib/rr/librrpreload.so 0x7f818ad030d0
(gdb) stepi
0x00007f818ad50339      4150      int res = REAL(pthread_mutex_lock)(m);
1: x/i $pc
=> 0x7f818ad50339 <__interceptor_pthread_mutex_lock(void*)+25>: jmp    *0xf4311(%rip)        # 0x7f818ae44650
(gdb) bt
#0  0x00007f818ad50339 in __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4150
rr-debugger#1  __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4146
rr-debugger#2  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#3  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
rr-debugger#4  0x0000564caa2b9ed2 in rr::RecordSession::RecordSession (this=0x619000003280, exe_path=..., argv=..., envp=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30, bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false) at .../rr/src/RecordSession.cc:2296
rr-debugger#5  0x0000564caa2b92ea in rr::RecordSession::create (argv=..., extra_env=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30 '\036', bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false, force_asan_active=false) at .../rr/src/RecordSession.cc:2261
rr-debugger#6  0x0000564caa29cd01 in rr::record (args=..., flags=...) at .../rr/src/RecordCommand.cc:632
rr-debugger#7  0x0000564caa29e90f in rr::RecordCommand::run (this=0x564caa956fe0, args=...) at .../rr/src/RecordCommand.cc:791
rr-debugger#8  0x0000564caa614909 in main (argc=4, argv=0x7ffd2a91dbe8) at .../rr/src/main.cc:271
...
(gdb) stepi
pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
24        mutex->__data.__kind &= ~PTHREAD_MUTEX_PRIO_INHERIT_NP;
1: x/i $pc
=> 0x7f818ad08660 <pthread_mutex_lock>: mov    0x4ba9(%rip),%rax        # 0x7f818ad0d210
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) stepi
74        return __pthread_mutex_lock(mutex);
1: x/i $pc
=> 0x7f818ad08678 <pthread_mutex_lock+24>:      jmp    0x7f818ad03070
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:74
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) print environ
$1 = (char **) 0x0

$ cat /proc/1305400/environ | tr '\0' '\n' | grep LD_PRELOAD
LD_PRELOAD=libasan.so.6:.../x86_64_asan/obj/bin/../lib/rr/librrpreload.so:::
bernhardu added a commit to bernhardu/rr that referenced this issue Jun 25, 2021
These two tests are stuck:
  nested_detach-no-syscallbuf
  nested_detach-32-no-syscallbuf

For some reason just the no-syscallbuf variants get stuck,
the regular ones succeed.

$ bin/rr record -n bin/rr record --nested=detach bin/simple

PID 1305400 uses 100% CPU, until timeout kills all.

1305387    └─ bin/rr record -n bin/rr record --nested=detach bin/simple  12
1305399       ├─ bin/rr record --nested=detach bin/simple   1
1305400       └─ bin/rr record --nested=detach bin/simple   1

$ gdb -q --pid 1305400
(gdb) add-symbol-file /usr/lib/x86_64-linux-gnu/libasan.so.6.0.0 0x7f818ad37a60
(gdb) add-symbol-file .../x86_64_asan/obj/bin/rr 0x564caa04e830
(gdb) add-symbol-file .../x86_64_asan/obj/lib/rr/librrpreload.so 0x7f818ad030d0
(gdb) stepi
0x00007f818ad50339      4150      int res = REAL(pthread_mutex_lock)(m);
1: x/i $pc
=> 0x7f818ad50339 <__interceptor_pthread_mutex_lock(void*)+25>: jmp    *0xf4311(%rip)        # 0x7f818ae44650
(gdb) bt
#0  0x00007f818ad50339 in __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4150
rr-debugger#1  __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4146
rr-debugger#2  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#3  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
rr-debugger#4  0x0000564caa2b9ed2 in rr::RecordSession::RecordSession (this=0x619000003280, exe_path=..., argv=..., envp=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30, bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false) at .../rr/src/RecordSession.cc:2296
rr-debugger#5  0x0000564caa2b92ea in rr::RecordSession::create (argv=..., extra_env=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30 '\036', bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false, force_asan_active=false) at .../rr/src/RecordSession.cc:2261
rr-debugger#6  0x0000564caa29cd01 in rr::record (args=..., flags=...) at .../rr/src/RecordCommand.cc:632
rr-debugger#7  0x0000564caa29e90f in rr::RecordCommand::run (this=0x564caa956fe0, args=...) at .../rr/src/RecordCommand.cc:791
rr-debugger#8  0x0000564caa614909 in main (argc=4, argv=0x7ffd2a91dbe8) at .../rr/src/main.cc:271
...
(gdb) stepi
pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
24        mutex->__data.__kind &= ~PTHREAD_MUTEX_PRIO_INHERIT_NP;
1: x/i $pc
=> 0x7f818ad08660 <pthread_mutex_lock>: mov    0x4ba9(%rip),%rax        # 0x7f818ad0d210
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) stepi
74        return __pthread_mutex_lock(mutex);
1: x/i $pc
=> 0x7f818ad08678 <pthread_mutex_lock+24>:      jmp    0x7f818ad03070
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:74
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) print environ
$1 = (char **) 0x0

$ cat /proc/1305400/environ | tr '\0' '\n' | grep LD_PRELOAD
LD_PRELOAD=libasan.so.6:.../x86_64_asan/obj/bin/../lib/rr/librrpreload.so:::
bernhardu added a commit to bernhardu/rr that referenced this issue Jul 5, 2021
These two tests are stuck:
  nested_detach-no-syscallbuf
  nested_detach-32-no-syscallbuf

For some reason just the no-syscallbuf variants get stuck,
the regular ones succeed.

$ bin/rr record -n bin/rr record --nested=detach bin/simple

PID 1305400 uses 100% CPU, until timeout kills all.

1305387    └─ bin/rr record -n bin/rr record --nested=detach bin/simple  12
1305399       ├─ bin/rr record --nested=detach bin/simple   1
1305400       └─ bin/rr record --nested=detach bin/simple   1

$ gdb -q --pid 1305400
(gdb) add-symbol-file /usr/lib/x86_64-linux-gnu/libasan.so.6.0.0 0x7f818ad37a60
(gdb) add-symbol-file .../x86_64_asan/obj/bin/rr 0x564caa04e830
(gdb) add-symbol-file .../x86_64_asan/obj/lib/rr/librrpreload.so 0x7f818ad030d0
(gdb) stepi
0x00007f818ad50339      4150      int res = REAL(pthread_mutex_lock)(m);
1: x/i $pc
=> 0x7f818ad50339 <__interceptor_pthread_mutex_lock(void*)+25>: jmp    *0xf4311(%rip)        # 0x7f818ae44650
(gdb) bt
#0  0x00007f818ad50339 in __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4150
rr-debugger#1  __interceptor_pthread_mutex_lock (m=<optimized out>) at ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4146
rr-debugger#2  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#3  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
rr-debugger#4  0x0000564caa2b9ed2 in rr::RecordSession::RecordSession (this=0x619000003280, exe_path=..., argv=..., envp=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30, bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false) at .../rr/src/RecordSession.cc:2296
rr-debugger#5  0x0000564caa2b92ea in rr::RecordSession::create (argv=..., extra_env=..., disable_cpuid_features=..., syscallbuf=rr::RecordSession::ENABLE_SYSCALL_BUF, syscallbuf_desched_sig=30 '\036', bind_cpu=rr::BIND_CPU, output_trace_dir=..., trace_id=0x0, use_audit=false, unmap_vdso=false, force_asan_active=false) at .../rr/src/RecordSession.cc:2261
rr-debugger#6  0x0000564caa29cd01 in rr::record (args=..., flags=...) at .../rr/src/RecordCommand.cc:632
rr-debugger#7  0x0000564caa29e90f in rr::RecordCommand::run (this=0x564caa956fe0, args=...) at .../rr/src/RecordCommand.cc:791
rr-debugger#8  0x0000564caa614909 in main (argc=4, argv=0x7ffd2a91dbe8) at .../rr/src/main.cc:271
...
(gdb) stepi
pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
24        mutex->__data.__kind &= ~PTHREAD_MUTEX_PRIO_INHERIT_NP;
1: x/i $pc
=> 0x7f818ad08660 <pthread_mutex_lock>: mov    0x4ba9(%rip),%rax        # 0x7f818ad0d210
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:24
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) stepi
74        return __pthread_mutex_lock(mutex);
1: x/i $pc
=> 0x7f818ad08678 <pthread_mutex_lock+24>:      jmp    0x7f818ad03070
(gdb) bt
#0  pthread_mutex_lock (mutex=0x6110000002c8) at .../rr/src/preload/overrides.c:74
rr-debugger#1  0x0000564caa0e2ddc in rr::CompressedWriter::CompressedWriter (this=0x6110000002c0, filename=..., block_size=1048576, num_threads=1) at .../rr/src/CompressedWriter.cc:62
rr-debugger#2  0x0000564caa5a9453 in rr::TraceWriter::TraceWriter (this=0x619000003380, file_name=..., output_trace_dir=..., ticks_semantics_=rr::TICKS_RETIRED_CONDITIONAL_BRANCHES) at .../rr/src/TraceStream.cc:1307
...
(gdb) print environ
$1 = (char **) 0x0

$ cat /proc/1305400/environ | tr '\0' '\n' | grep LD_PRELOAD
LD_PRELOAD=libasan.so.6:.../x86_64_asan/obj/bin/../lib/rr/librrpreload.so:::
bernhardu added a commit to bernhardu/rr that referenced this issue Apr 7, 2023
…aks=0.

==2156196==Running thread 2156188 was not suspended. False leaks are possible.

=================================================================
==2156193==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 10525163 byte(s) in 11 object(s) allocated from:
    #0 0x7f41d28b94c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    rr-debugger#1 0x55c53c6587a4 in std::__new_allocator<unsigned char>::allocate(unsigned long, void const*) /usr/include/c++/12/bits/new_allocator.h:137
    rr-debugger#2 0x55c53c6587a4 in std::allocator_traits<std::allocator<unsigned char> >::allocate(std::allocator<unsigned char>&, unsigned long) /usr/include/c++/12/bits/alloc_traits.h:464
    rr-debugger#3 0x55c53c6587a4 in std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate(unsigned long) /usr/include/c++/12/bits/stl_vector.h:378
    rr-debugger#4 0x55c53c6587a4 in std::vector<unsigned char, std::allocator<unsigned char> >::_M_default_append(unsigned long) /usr/include/c++/12/bits/vector.tcc:650
    rr-debugger#5 0x55c53c69370b in std::vector<unsigned char, std::allocator<unsigned char> >::resize(unsigned long) /usr/include/c++/12/bits/stl_vector.h:1011
    rr-debugger#6 0x55c53c69370b in rr::CompressedWriter::compression_thread() /home/bernhard/data/entwicklung/2023/rr/2022-09-11/rr/src/CompressedWriter.cc:162
    rr-debugger#7 0x55c53c693908 in rr::CompressedWriter::compression_thread_callback(void*) /home/bernhard/data/entwicklung/2023/rr/2022-09-11/rr/src/CompressedWriter.cc:29
    rr-debugger#8 0x7f41d22a7fd3 in start_thread nptl/pthread_create.c:442

SUMMARY: AddressSanitizer: 10525163 byte(s) leaked in 11 allocation(s).
bernhardu added a commit to bernhardu/rr that referenced this issue Apr 20, 2023
Related: 7ffb7d6
See issue 3504.

$ bin/rr record -n bin/pid_ns_kill_child

Error message:
  [FATAL src/Task.cc:2167:did_waitpid() errno: EDOM]
   (task 285229 (rec:285229) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7fffb7babb70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056012f0b167d in rr::Task::did_waitpid (this=this@entry=0x56012f9d4640, status=...) at rr/src/Task.cc:2167
rr-debugger#8  0x000056012f086ac7 in rr::Scheduler::reschedule (this=this@entry=0x56012f9c4188, switchable=<optimized out>) at rr/src/Scheduler.cc:882
rr-debugger#9  0x000056012eff4607 in rr::RecordSession::record_step (this=0x56012f9c3f40) at rr/src/RecordSession.cc:2497
rr-debugger#10 0x000056012efe8664 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56012f207a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056012ef4800f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278

With change in Task.cc:
Error message:
  [FATAL src/Task.cc:3894:did_handle_ptrace_exit_event()]
   (task 308641 (rec:308641) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7ffe5e4cdf70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056265d0981b7 in rr::Task::did_handle_ptrace_exit_event (this=this@entry=0x56265dde3640) at rr/src/Task.cc:3894
rr-debugger#8  0x000056265cfdb110 in rr::handle_ptrace_exit_event (t=t@entry=0x56265dde3640) at rr/src/RecordSession.cc:279
rr-debugger#9  0x000056265cfe272b in rr::RecordSession::record_step (this=0x56265ddd2f40) at rr/src/RecordSession.cc:2535
rr-debugger#10 0x000056265cfd6674 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56265d1f5a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056265cf3601f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278
bernhardu added a commit to bernhardu/rr that referenced this issue Apr 21, 2023
Related: 7ffb7d6
See issue 3504.

$ bin/rr record -n bin/pid_ns_kill_child

Error message:
  [FATAL src/Task.cc:2167:did_waitpid() errno: EDOM]
   (task 285229 (rec:285229) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7fffb7babb70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056012f0b167d in rr::Task::did_waitpid (this=this@entry=0x56012f9d4640, status=...) at rr/src/Task.cc:2167
rr-debugger#8  0x000056012f086ac7 in rr::Scheduler::reschedule (this=this@entry=0x56012f9c4188, switchable=<optimized out>) at rr/src/Scheduler.cc:882
rr-debugger#9  0x000056012eff4607 in rr::RecordSession::record_step (this=0x56012f9c3f40) at rr/src/RecordSession.cc:2497
rr-debugger#10 0x000056012efe8664 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56012f207a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056012ef4800f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278

With change in Task.cc:
Error message:
  [FATAL src/Task.cc:3894:did_handle_ptrace_exit_event()]
   (task 308641 (rec:308641) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7ffe5e4cdf70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056265d0981b7 in rr::Task::did_handle_ptrace_exit_event (this=this@entry=0x56265dde3640) at rr/src/Task.cc:3894
rr-debugger#8  0x000056265cfdb110 in rr::handle_ptrace_exit_event (t=t@entry=0x56265dde3640) at rr/src/RecordSession.cc:279
rr-debugger#9  0x000056265cfe272b in rr::RecordSession::record_step (this=0x56265ddd2f40) at rr/src/RecordSession.cc:2535
rr-debugger#10 0x000056265cfd6674 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56265d1f5a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056265cf3601f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278
bernhardu added a commit to bernhardu/rr that referenced this issue Apr 21, 2023
Related: 7ffb7d6
See issue 3504.

$ bin/rr record -n bin/pid_ns_kill_child

Error message:
  [FATAL src/Task.cc:2167:did_waitpid() errno: EDOM]
   (task 285229 (rec:285229) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7fffb7babb70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056012f0b167d in rr::Task::did_waitpid (this=this@entry=0x56012f9d4640, status=...) at rr/src/Task.cc:2167
rr-debugger#8  0x000056012f086ac7 in rr::Scheduler::reschedule (this=this@entry=0x56012f9c4188, switchable=<optimized out>) at rr/src/Scheduler.cc:882
rr-debugger#9  0x000056012eff4607 in rr::RecordSession::record_step (this=0x56012f9c3f40) at rr/src/RecordSession.cc:2497
rr-debugger#10 0x000056012efe8664 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56012f207a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056012ef4800f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278

With change in Task.cc:
Error message:
  [FATAL src/Task.cc:3894:did_handle_ptrace_exit_event()]
   (task 308641 (rec:308641) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7ffe5e4cdf70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056265d0981b7 in rr::Task::did_handle_ptrace_exit_event (this=this@entry=0x56265dde3640) at rr/src/Task.cc:3894
rr-debugger#8  0x000056265cfdb110 in rr::handle_ptrace_exit_event (t=t@entry=0x56265dde3640) at rr/src/RecordSession.cc:279
rr-debugger#9  0x000056265cfe272b in rr::RecordSession::record_step (this=0x56265ddd2f40) at rr/src/RecordSession.cc:2535
rr-debugger#10 0x000056265cfd6674 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56265d1f5a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056265cf3601f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278
bernhardu added a commit to bernhardu/rr that referenced this issue Apr 22, 2023
Related: 7ffb7d6
See issue 3504.

$ bin/rr record -n bin/pid_ns_kill_child

Error message:
  [FATAL src/Task.cc:2167:did_waitpid() errno: EDOM]
   (task 285229 (rec:285229) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7fffb7babb70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056012f0b167d in rr::Task::did_waitpid (this=this@entry=0x56012f9d4640, status=...) at rr/src/Task.cc:2167
rr-debugger#8  0x000056012f086ac7 in rr::Scheduler::reschedule (this=this@entry=0x56012f9c4188, switchable=<optimized out>) at rr/src/Scheduler.cc:882
rr-debugger#9  0x000056012eff4607 in rr::RecordSession::record_step (this=0x56012f9c3f40) at rr/src/RecordSession.cc:2497
rr-debugger#10 0x000056012efe8664 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56012f207a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056012ef4800f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278

With change in Task.cc:
Error message:
  [FATAL src/Task.cc:3894:did_handle_ptrace_exit_event()]
   (task 308641 (rec:308641) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7ffe5e4cdf70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056265d0981b7 in rr::Task::did_handle_ptrace_exit_event (this=this@entry=0x56265dde3640) at rr/src/Task.cc:3894
rr-debugger#8  0x000056265cfdb110 in rr::handle_ptrace_exit_event (t=t@entry=0x56265dde3640) at rr/src/RecordSession.cc:279
rr-debugger#9  0x000056265cfe272b in rr::RecordSession::record_step (this=0x56265ddd2f40) at rr/src/RecordSession.cc:2535
rr-debugger#10 0x000056265cfd6674 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56265d1f5a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056265cf3601f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278
bernhardu added a commit to bernhardu/rr that referenced this issue Apr 25, 2023
Related: 7ffb7d6
See issue 3504.

$ bin/rr record -n bin/pid_ns_kill_child

Error message:
  [FATAL src/Task.cc:2167:did_waitpid() errno: EDOM]
   (task 285229 (rec:285229) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7fffb7babb70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056012f0b167d in rr::Task::did_waitpid (this=this@entry=0x56012f9d4640, status=...) at rr/src/Task.cc:2167
rr-debugger#8  0x000056012f086ac7 in rr::Scheduler::reschedule (this=this@entry=0x56012f9c4188, switchable=<optimized out>) at rr/src/Scheduler.cc:882
rr-debugger#9  0x000056012eff4607 in rr::RecordSession::record_step (this=0x56012f9c3f40) at rr/src/RecordSession.cc:2497
rr-debugger#10 0x000056012efe8664 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56012f207a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056012ef4800f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278

With change in Task.cc:
Error message:
  [FATAL src/Task.cc:3894:did_handle_ptrace_exit_event()]
   (task 308641 (rec:308641) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7ffe5e4cdf70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056265d0981b7 in rr::Task::did_handle_ptrace_exit_event (this=this@entry=0x56265dde3640) at rr/src/Task.cc:3894
rr-debugger#8  0x000056265cfdb110 in rr::handle_ptrace_exit_event (t=t@entry=0x56265dde3640) at rr/src/RecordSession.cc:279
rr-debugger#9  0x000056265cfe272b in rr::RecordSession::record_step (this=0x56265ddd2f40) at rr/src/RecordSession.cc:2535
rr-debugger#10 0x000056265cfd6674 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56265d1f5a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056265cf3601f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278
bernhardu added a commit to bernhardu/rr that referenced this issue Jul 10, 2023
Related: 7ffb7d6
See issue 3504.

$ bin/rr record -n bin/pid_ns_kill_child

Error message:
  [FATAL src/Task.cc:2167:did_waitpid() errno: EDOM]
   (task 285229 (rec:285229) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7fffb7babb70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056012f0b167d in rr::Task::did_waitpid (this=this@entry=0x56012f9d4640, status=...) at rr/src/Task.cc:2167
rr-debugger#8  0x000056012f086ac7 in rr::Scheduler::reschedule (this=this@entry=0x56012f9c4188, switchable=<optimized out>) at rr/src/Scheduler.cc:882
rr-debugger#9  0x000056012eff4607 in rr::RecordSession::record_step (this=0x56012f9c3f40) at rr/src/RecordSession.cc:2497
rr-debugger#10 0x000056012efe8664 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56012f207a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056012ef4800f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278

With change in Task.cc:
Error message:
  [FATAL src/Task.cc:3894:did_handle_ptrace_exit_event()]
   (task 308641 (rec:308641) at time 269)
   -> Assertion `!handled_ptrace_exit_event' failed to hold.

rr-debugger#6  rr::EmergencyDebugOstream::~EmergencyDebugOstream (this=this@entry=0x7ffe5e4cdf70, __in_chrg=<optimized out>) at rr/src/log.cc:484
rr-debugger#7  0x000056265d0981b7 in rr::Task::did_handle_ptrace_exit_event (this=this@entry=0x56265dde3640) at rr/src/Task.cc:3894
rr-debugger#8  0x000056265cfdb110 in rr::handle_ptrace_exit_event (t=t@entry=0x56265dde3640) at rr/src/RecordSession.cc:279
rr-debugger#9  0x000056265cfe272b in rr::RecordSession::record_step (this=0x56265ddd2f40) at rr/src/RecordSession.cc:2535
rr-debugger#10 0x000056265cfd6674 in rr::record (flags=..., args=...) at rr/src/RecordCommand.cc:697
rr-debugger#11 rr::RecordCommand::run (this=0x56265d1f5a40 <rr::RecordCommand::singleton>, args=...) at rr/src/RecordCommand.cc:860
rr-debugger#12 0x000056265cf3601f in main (argc=<optimized out>, argv=<optimized out>) at rr/src/main.cc:278
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant