utrace/ptrace mutual exclusion

Roland McGrath roland at redhat.com
Mon Jan 12 02:37:06 UTC 2009


I've added a change (only in git) so that with CONFIG_UTRACE=y and
CONFIG_UTRACE_PTRACE=n, ptrace and utrace are mutually exclusive on each
task.  The utrace_attach or PTRACE_ATTACH call fails with a characteristic
EBUSY so that the failure looks new and unusual in an obvious way.

It would be useful if people could try that configuration and see how
annoying it is when e.g. using systemtap with utrace/uprobes stuff.
It will make any "trace everything for a while" kinds of uses annoying,
since they will cause you to be unable to use strace or gdb while the stap
script is running (unless the debugging session is already going first).

It's occurred to me that since the CONFIG_UTRACE_PTRACE code is so abysmal,
it might be easier and better to merge utrace upstream alone, with the
mutual exclusion safety feature, and whatever pure-utrace things we have to
merge.  The proper ptrace cooperation is important, but the mutual
exclusion makes it a safe limitation rather than a destabilizer to work on
utrace things without it.

Anyway, it's worth figuring out how annoying this configuration is now
before trying to decide about that.


Thanks,
Roland




More information about the utrace-devel mailing list