The following snippet crashes with the above error when it comes across a system call that passes the filter.
import traceback
import ptracer
import re
import os
def callback(syscall):
print(syscall.name, syscall.result.raw_value)
flt = [
ptracer.SysCallPattern(
name='openat',
args=[
re.compile(b'/tmp/.*'),
lambda arg: arg.value & os.O_WRONLY
],
result=lambda res: res.value > 0
)
]
with ptracer.context(callback, filter=flt):
open('/tmp/domf', mode='w')
Here's the error stack.
$ py a.py
Traceback (most recent call last):
File "/home/shubham/workspace/tracer/a.py", line 21, in <module>
open('/tmp/domf', mode='w')
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/__init__.py", line 106, in __exit__
_context.disable()
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/__init__.py", line 92, in disable
raise error
ptracer._ptracer.PtracerError: Unhandled exception in ptrace process
Traceback (most recent call last):
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/_ptracer.py", line 276, in _debugger_thread
_debugger_thread_inner(main_pid, dbgproc_started, dbgthread_stop,
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/_ptracer.py", line 405, in _debugger_thread_inner
elif filter_ is None or filter_(syscall):
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/_ptracer.py", line 294, in <lambda>
filter_ = lambda sc: any(m.match(sc) for m in syscall_filter)
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/_ptracer.py", line 294, in <genexpr>
filter_ = lambda sc: any(m.match(sc) for m in syscall_filter)
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/_syscall.py", line 52, in match
return all(m[1](m[0](syscall)) for m in self.matcher)
File "/home/shubham/workspace/tracer/venv/lib/python3.9/site-packages/ptracer/_syscall.py", line 52, in <genexpr>
return all(m[1](m[0](syscall)) for m in self.matcher)
TypeError: cannot use a bytes pattern on a string-like object