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
Add -record_syscall feature to record syscall parameters in drmemtrace #6344
Comments
derekbruening
added a commit
that referenced
this issue
Oct 5, 2023
Adds a new option -record_sysall to drmemtrace which records the parameter and success values for the given system call numbers. Just like with -record_function, the user must specify the parameter count. SYS_futex is left as traced by default, but it can be disabled. Adds documentation and a test. Further manual testing: --------------------------------------------------------------------------- $ rm -rf drmemtrace.*.dir; bin64/drrun -t drcachesim -offline -record_syscall '1|-3&12|4&9|2' -record_syscall '12|2&158|4' -- suite/tests/bin/simple_app && bin64/drrun -t drcachesim -indir drmemtrace.*.dir -simulator_type view 2>&1 | egrep 'system call |function' Error: -record_syscall invalid parameter count -3 --------------------------------------------------------------------------- --------------------------------------------------------------------------- $ rm -rf drmemtrace.*.dir; bin64/drrun -t drcachesim -offline -record_syscall '1|-3&12|4&9|2' -record_syscall '12|2&158|4' -- suite/tests/bin/simple_app && bin64/drrun -t drcachesim -indir drmemtrace.*.dir -simulator_type view 2>&1 | egrep 'system call |function' <Application simple_app (484125) DynamoRIO usage error : invalid system call parameter number> --------------------------------------------------------------------------- --------------------------------------------------------------------------- $ rm -rf drmemtrace.*.dir; bin64/drrun -t drcachesim -offline -record_syscall '1|3&12|4&9|2' -record_syscall '12|2&158|4' -- suite/tests/bin/simple_app && bin64/drrun -t drcachesim -indir drmemtrace.*.dir -simulator_type view 2>&1 | egrep 'system call |function' ... Hello, world! <Stopping application simple_app (484049)> 32411 26808: 484049 <marker: system call 12> 32412 26808: 484049 <marker: function==syscall #12> 32413 26808: 484049 <marker: function argument 0x0> 32414 26808: 484049 <marker: function argument 0x7ffc87c52d4c> 32415 26808: 484049 <marker: function==syscall #12> 32416 26808: 484049 <marker: function return value 0x1> 50436 41126: 484049 <marker: system call 9> 50437 41126: 484049 <marker: function==syscall #9> 50438 41126: 484049 <marker: function argument 0x0> 50439 41126: 484049 <marker: function argument 0x2000> 50440 41126: 484049 <marker: function==syscall #9> 50441 41126: 484049 <marker: function return value 0x1> 50980 41485: 484049 <marker: system call 21> 52193 42391: 484049 <marker: system call 257> 52223 42409: 484049 <marker: system call 262> 52253 42430: 484049 <marker: system call 9> 52254 42430: 484049 <marker: function==syscall #9> 52255 42430: 484049 <marker: function argument 0x0> 52256 42430: 484049 <marker: function argument 0x1b5c7> 52257 42430: 484049 <marker: function==syscall #9> 52258 42430: 484049 <marker: function return value 0x1> 52274 42439: 484049 <marker: system call 3> 54224 44056: 484049 <marker: system call 257> 54252 44074: 484049 <marker: system call 0> 54329 44130: 484049 <marker: system call 17> 54455 44208: 484049 <marker: system call 262> 54988 44591: 484049 <marker: system call 17> 55653 45105: 484049 <marker: system call 9> 55654 45105: 484049 <marker: function==syscall #9> 55655 45105: 484049 <marker: function argument 0x0> 55656 45105: 484049 <marker: function argument 0x1e1f50> 55657 45105: 484049 <marker: function==syscall #9> 55658 45105: 484049 <marker: function return value 0x1> ... --------------------------------------------------------------------------- Fixes #6344
derekbruening
added a commit
that referenced
this issue
Oct 5, 2023
Adds a new option -record_sysall to drmemtrace which records the parameter and success values for the given system call numbers. Just like with -record_function, the user must specify the parameter count. SYS_futex is left as traced by default, but it can be disabled. Adds documentation and a test. Further manual testing: ``` --------------------------------------------------------------------------- $ rm -rf drmemtrace.*.dir; bin64/drrun -t drcachesim -offline -record_syscall '1|-3&12|4&9|2' -record_syscall '12|2&158|4' -- suite/tests/bin/simple_app && bin64/drrun -t drcachesim -indir drmemtrace.*.dir -simulator_type view 2>&1 | egrep 'system call |function' Error: -record_syscall invalid parameter count -3 --------------------------------------------------------------------------- --------------------------------------------------------------------------- $ rm -rf drmemtrace.*.dir; bin64/drrun -t drcachesim -offline -record_syscall '1|-3&12|4&9|2' -record_syscall '12|2&158|4' -- suite/tests/bin/simple_app && bin64/drrun -t drcachesim -indir drmemtrace.*.dir -simulator_type view 2>&1 | egrep 'system call |function' <Application simple_app (484125) DynamoRIO usage error : invalid system call parameter number> --------------------------------------------------------------------------- --------------------------------------------------------------------------- $ rm -rf drmemtrace.*.dir; bin64/drrun -t drcachesim -offline -record_syscall '1|3&12|4&9|2' -record_syscall '12|2&158|4' -- suite/tests/bin/simple_app && bin64/drrun -t drcachesim -indir drmemtrace.*.dir -simulator_type view 2>&1 | egrep 'system call |function' ... Hello, world! <Stopping application simple_app (484049)> 32411 26808: 484049 <marker: system call 12> 32412 26808: 484049 <marker: function==syscall #12> 32413 26808: 484049 <marker: function argument 0x0> 32414 26808: 484049 <marker: function argument 0x7ffc87c52d4c> 32415 26808: 484049 <marker: function==syscall #12> 32416 26808: 484049 <marker: function return value 0x1> 50436 41126: 484049 <marker: system call 9> 50437 41126: 484049 <marker: function==syscall #9> 50438 41126: 484049 <marker: function argument 0x0> 50439 41126: 484049 <marker: function argument 0x2000> 50440 41126: 484049 <marker: function==syscall #9> 50441 41126: 484049 <marker: function return value 0x1> 50980 41485: 484049 <marker: system call 21> 52193 42391: 484049 <marker: system call 257> 52223 42409: 484049 <marker: system call 262> 52253 42430: 484049 <marker: system call 9> 52254 42430: 484049 <marker: function==syscall #9> 52255 42430: 484049 <marker: function argument 0x0> 52256 42430: 484049 <marker: function argument 0x1b5c7> 52257 42430: 484049 <marker: function==syscall #9> 52258 42430: 484049 <marker: function return value 0x1> 52274 42439: 484049 <marker: system call 3> 54224 44056: 484049 <marker: system call 257> 54252 44074: 484049 <marker: system call 0> 54329 44130: 484049 <marker: system call 17> 54455 44208: 484049 <marker: system call 262> 54988 44591: 484049 <marker: system call 17> 55653 45105: 484049 <marker: system call 9> 55654 45105: 484049 <marker: function==syscall #9> 55655 45105: 484049 <marker: function argument 0x0> 55656 45105: 484049 <marker: function argument 0x1e1f50> 55657 45105: 484049 <marker: function==syscall #9> 55658 45105: 484049 <marker: function return value 0x1> ... --------------------------------------------------------------------------- ``` Fixes #6344
derekbruening
added a commit
that referenced
this issue
Oct 19, 2023
Changes what the drmemtrace -record_syscall feature does with system call returns to record the actual value instead of the success boolean. Adds a new TRACE_MARKER_TYPE_SYSCALL_FAILED to indicate failure. Adds a sanity test to allasm-repstr (and updates other tests that have hardcoded counts for this app). Adds documentation on the change. Issue: #6344
derekbruening
added a commit
that referenced
this issue
Oct 19, 2023
…6378) Changes what the drmemtrace -record_syscall feature does with system call returns to record the actual value instead of the success boolean. Adds a new TRACE_MARKER_TYPE_SYSCALL_FAILED to indicate failure. Adds a sanity test to allasm-repstr (and updates other tests that have hardcoded counts for this app). Adds documentation on the change. Issue: #6344
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For #5843, PR #6132 added hardcoded recording of SYS_futex parameters. This is a feature request to generalize that to support recording parameters for arbitrary syscalls, specified by a new option
-record_syscall
which would look like-record_function
where the function name is the syscall number. We don't want to record all syscall parameters with no way to disable as that could be undesirable in workloads where values other than neutral addresses may pose privacy concerns (though syscall parameters are generally not problematic as opposed to function parameter values).The text was updated successfully, but these errors were encountered: