rr-debugger / rr

Record and Replay Framework
http://rr-project.org/
Other
9.15k stars 584 forks source link

ALSA Support #3803

Open lane-s opened 1 month ago

lane-s commented 1 month ago

I'd like to debug an application under rr which uses an ALSA backend. It seems that many of the system calls related to audio (ioctls prefixed with SNDRV_...) are not yet supported.

I tried to add the calls used by my application, following the procedure of adding them to record_syscall.cc and the related parameter types to kernel_abi.h, but I assume that I did something wrong, because rr hangs when I try to initialize an audio device in the application. The callstack during the hang after atttaching gdb:

__libc_open64 at open64.c:47
rr::ScopedFd::ScopedFd at ScopedFd.h:24
rr::should_copy_mmap_region at util.cc:703
rr::TraceWriter::write_mapped_region at TraceStream.cc:1023
rr::process_mmap at record_syscall.cc:6085
rr::rec_process_syscall_arch<rr::X64Arch> at record_syscall.cc:6695
rr::rec_process_syscall_internal at record_syscall.cc:7206
rr::RecordSession::syscall_state_changed at RecordSession.cc:1315
rr::RecordSession::record_step at RecordSession.c:2695
rr::record at RecordCommand.cc:711
rr::RecordComand::run at RecordCommand.cc:874
main at main.cc:278

It doesn't seem to be immediately related to the code I changed, but I'll admit I have very little knowledge of most of this stuff- I'm mostly an application developer.

Is ALSA support planned? What would need to be done?

rocallahan commented 1 month ago

IIRC ALSA was a problem because it required sharing memory with kernel drivers in a way that doesn't work with rr. If you can find some documentation for exactly what the kernel/user interface for ALSA looks like we could think about supporting it, but we deny opening alsa.conf for a reason (in 2013!).