On Jan 12, 2008, at 12:26 PM, Adam Leventhal wrote:
On Fri, Jan 11, 2008 at 06:12:57PM -0800, Roman Shaposhnik wrote:
My main beef with stack helpers is that they have to be executed
inside the kernel and are subject to the usual DTrace restrictions.
I would like to see a possibility of offloading more work to user
space in a generic fashion. For example, we have a libcollector.so
facility that is capable of reconstructing stacks under the most
challenging of situations (inside the function preamble, etc.) it is
way more accurate in what it reports back than ustack() it is also
capable of more stack unwinding than jstack(). Of course, it runs in
user space.
All respect to libcollector.so, but the conditions under which
DTrace must
gather a stack are far more constrained than those of a user-land
program.
The DTrace code from probe context can't do I/O or block -- it can
only
load and store. Even looping is a bit of a stretch.
I don't disagree at all! And I'm not trying to say that *stack()
should be replaced.
I'm merely trying to explore whether the best of both worlds approach
is doable.
What we've done for Project D-Light clearly shows that for some
applications
it is doable. At this point I really would like to explore whether
something like
that could be generalized. See my earlier email to Eric. I understand
his
argument perfectly well. But I'm still not convinced that it makes
the idea
void. If convincing me is perceived as a waste of time -- that's ok.
I guess
I should get back to you when I earn my Solaris kernel guru
degree :-) If
on the other hand, I'm not explaining what I want clearly -- I can
try again.
Thanks,
Roman.