From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19747 invoked by alias); 28 Oct 2009 13:12:21 -0000 Received: (qmail 19689 invoked by uid 48); 28 Oct 2009 13:12:09 -0000 Date: Wed, 28 Oct 2009 13:12:00 -0000 Message-ID: <20091028131209.19688.qmail@sourceware.org> From: "mjw at redhat dot com" To: systemtap@sources.redhat.com In-Reply-To: <20090918213942.10665.wcohen@redhat.com> References: <20090918213942.10665.wcohen@redhat.com> Reply-To: sourceware-bugzilla@sourceware.org Subject: [Bug runtime/10665] backtrace() is too slow X-Bugzilla-Reason: AssignedTo Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2009-q4/txt/msg00330.txt.bz2 ------- 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.