This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug runtime/10665] backtrace() is too slow


------- Additional Comments From mjw at redhat dot com  2009-10-28 13:12 -------
The dwarf based unwinder does too much work during runtime, some of it should be
moved into the translator, which can also optimise some stuff.

Currently both the debug_frame and eh_frame tables are scanned linearly to find
the FDE (frame description entry) that covers the current PC. There are several
sanity checks while walking the tables and reading the FDE and CIE entries. And
for eh_frame table data all load address bases start addresses are adjusted
because the tables are loaded at a different address at runtime (in the kernel).
Although there is some support for using eh_framhdr indexes (so we don't need to
do a linear search) it isn't used (the addresses would adjustment and
debug_frame tables don't have hdr indexes).

All the above can be done at translation time. The debug_frame and eh_frame
tables can be combined and one hdr index table can be created. While doing that
the FDE and CIE entries can be sanity checked so we know they are clean/trusted
at runtime. And any load address relative addressing can be changed to a
relative encoding.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=10665

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]