fche changed the topic of #systemtap to: http://sourceware.org/systemtap; email systemtap@sourceware.org if answers here not timely, conversations may be logged
wyang123 has joined #systemtap
_whitelogger has joined #systemtap
orivej has quit [Ping timeout: 240 seconds]
slowfranklin has joined #systemtap
mjw has joined #systemtap
sscox has quit [Ping timeout: 246 seconds]
orivej has joined #systemtap
sscox has joined #systemtap
wyang123 has quit [Quit: wyang123]
wyang123 has joined #systemtap
brolley has joined #systemtap
tromey has joined #systemtap
fche has quit [Remote host closed the connection]
fche has joined #systemtap
wyang123 has quit [Quit: wyang123]
slowfranklin has quit [Quit: slowfranklin]
slowfranklin has joined #systemtap
wcohen has joined #systemtap
slowfranklin has quit [Quit: slowfranklin]
agentzh has joined #systemtap
<agentzh> fche: thanks for the tip on debug_print()
<agentzh> one sad thing is that the expression nodes do not have a pointer to point to their parent nodes.
<agentzh> it makes debugging harder.
<agentzh> i already tried dumping the current expression nodes but the output do not make much sense, seems to be some placeholder nodes. so i need to traverse to its ancestor nodes to get a bigger picture.
<fche> backtrace
<fche> and print from a higher level visitor
<fche> frame
<agentzh> okay, i'll try it. thanks.
<agentzh> the visitor mode does not use recursive descent, so i guess i'll only get the root node instead of near ancestors?
<fche> hm, recursive descent is almost all we do though
<fche> double-indirect dispatch makes the backtrace a little depeer
<fche> but it should all be there
<agentzh> ah, my mistake then :)
<agentzh> fche: btw, can we allow the various stack/uwnind tapset functions take a variant that accepts user-specified IP and SP reg values?
<agentzh> the reason i'm asking is that some times we cannot use the current IP and SP regs, for example, when programmatically skipping frames for JIT compiled machine code.
<agentzh> i hacked in a sprint_ubacktrace2:string(pc:long,sp:long) tapset function last night and it seems to work well to recover the full C backtrace from machine code frames generated by LuaJIT.
<agentzh> it's not a very good tapset name though. wondering if you have any better suggestions here.
<agentzh> we can do the same trick with other JIT'd code like PCRE JIT and etc.
<fche> there was a plan to support multi-language tracebacks by splitting up the backtrace functions into per-frame/step ones
<fche> and the tapsets would provide different-possible-langage implementations for the step ones
<fche> and use the 'function unwind_one() { if ($not_my_language) next; } type runtime overloading facility to let it try different languages
<fche> we haven't developed the idea farther though
<agentzh> it reminds me of dwarf's personality handler design.
slowfranklin has joined #systemtap
slowfranklin has quit [Client Quit]
<agentzh> i think it's for solving different problems but i agree the iterative unwinding API could be tweaked to accept custom IP/SP values.
<agentzh> i could already unwind LuaJIT/Python/Perl-land backtraces with the current stap impl without any assistent from the target side (unlike stap's current python addon, for example).
<agentzh> *i can
<agentzh> my current hurdle is to recover C-land backtraces below the JIT mcode frame.
<agentzh> hence the sprint_ubacktrace2() hack mentioned above.
tromey has quit [Quit: ERC (IRC client for Emacs 26.1.50)]
mjw has quit [Quit: Leaving]
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #systemtap
brolley has left #systemtap [#systemtap]
sscox has quit [Ping timeout: 252 seconds]