But Jato is special there (it's a special execution machine with its own symbol
space) - and most apps that generate trace events are not such.
Also, while it's not a big deal to not get symbols, it's a big deal to not get trace
events _exactly when they are needed most_: when the app crashes or corrupts itself.
I.e. the kernel does us a real and useful service of extracting and then protecting
data.
I agree that a prctl() isnt particularly nice - a new syscall would be nicer, if it
wasnt such a PITA to get new syscalls supported by widely available libraries like
glibc.
But i disagree that there should be pending buffers in the tracee context. Having
app-side data buffering introduces the sorts of problems i outlined, that the data
can be lost or corrupted when we need _reliable_ (and non-corrupted) trace data the
most.
We could use the vDSO approach for super-fast and super-voluminous tracing needs,
although i really doubt that it's the common case.
Availability is the biggest issue by far - and availability is inverse proportional
to deployment complexity.
Yes but i dont want complex interfaces at all - i want rich trace data from many
apps, so that tracing tools start to make sense.
Well, it covers about 80-90% of the needs, so it was the first thing i considered.
Thanks,
Ingo
--