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

Redirect replayed output to stdout/stderr by default #3

Merged
merged 1 commit into from
May 8, 2013

Conversation

joneschrisg
Copy link
Contributor

This patch flips the --redirect_output option on by default, and changes the runtime flag to --no_redirect_output.

The current behavior caught me by surprise. I think it's possible in theory for redirecting to affect the integrity of the replay, but IMHO the slim odds of that arising are outweighed by the unexpectedness of the current behavior. Or from another perspective, folks who are doing things that crazy should know how to disable redirecting. Let me know if you disagree! :)

andreasgal added a commit that referenced this pull request May 8, 2013
Redirect replayed output to stdout/stderr by default
@andreasgal andreasgal merged commit 7e6c3ed into rr-debugger:master May 8, 2013
@bgirard bgirard mentioned this pull request Jul 24, 2015
@silkvine silkvine mentioned this pull request Aug 20, 2020
bernhardu added a commit to bernhardu/rr that referenced this pull request Jun 7, 2021
Visible in `rr record simple` with asan enabled rr build.


==647542==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 19 byte(s) in 1 object(s) allocated from:
    #0 0x7fe6e70187a7 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:102
    rr-debugger#1 0x55a421ec5ca1 in simple_to_lower /home/bernhard/data/entwicklung/2021/rr/2021-04-25/rr/src/log.cc:62
    rr-debugger#2 0x55a421ec6f3b in get_log_level /home/bernhard/data/entwicklung/2021/rr/2021-04-25/rr/src/log.cc:191
    rr-debugger#3 0x55a421ec7766 in get_log_module /home/bernhard/data/entwicklung/2021/rr/2021-04-25/rr/src/log.cc:224
...
bernhardu added a commit to bernhardu/rr that referenced this pull request 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 pull request 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 pull request 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 pull request 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 pull request 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 pull request 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).
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

Successfully merging this pull request may close these issues.

2 participants