]> sourceware.org Git - systemtap.git/commit
PR20672 prime: prevent python $var infinitely recursive expansion
authorFrank Ch. Eigler <fche@redhat.com>
Thu, 26 Jan 2017 13:10:53 +0000 (08:10 -0500)
committerFrank Ch. Eigler <fche@redhat.com>
Thu, 26 Jan 2017 13:16:01 +0000 (08:16 -0500)
commitf90352b660c4f23d5e36160f1e10339a9b407a8e
tree39bb9744e5a7f557db7145120adbb2469f6c779a
parente81970274b46cf3e20586751bf58195258f31518
PR20672 prime: prevent python $var infinitely recursive expansion

The new python expanding visitors take probe-python bodies and intend
to generate probe-process bodies, expanding python $var references to
uprobe marker $var ones.  During the expansion process however, the
code can get confused as to whether the new $arg3 is fish or foul.
If asked, it will map $arg3 -> foo($arg3, "arg3"), then recurse,
which is a recipe for stack exhaustion.

So now we map the generated $arg3 with a new hacky target_symbol flag,
"synthetic", to prevent infinite recursion there.  (Note that using
the recently added abort_provide() response from the expander is not
enough, because an outer relaxation loop would then trigger infinite
looping rather than infinite recursion.)

A better solution could be to have a *not-in-place* rewriting visitor,
so that the output tree is never reprocessed by the invoking visitor.
staptree.h
tapset-python.cxx
This page took 0.028013 seconds and 5 git commands to generate.