From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755424AbbETRVt (ORCPT ); Wed, 20 May 2015 13:21:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58656 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754147AbbETRVp (ORCPT ); Wed, 20 May 2015 13:21:45 -0400 Date: Wed, 20 May 2015 12:20:52 -0500 From: Josh Poimboeuf To: Linus Torvalds Cc: Andy Lutomirski , Ingo Molnar , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Michal Marek , Peter Zijlstra , X86 ML , live-patching@vger.kernel.org, "linux-kernel@vger.kernel.org" , Andy Lutomirski , Denys Vlasenko , Brian Gerst , Peter Zijlstra , Borislav Petkov , Andrew Morton Subject: Re: [PATCH v4 0/3] Compile-time stack frame pointer validation Message-ID: <20150520172052.GE16995@treble.redhat.com> References: <20150520103339.GA22205@gmail.com> <20150520141331.GA16995@treble.redhat.com> <20150520144810.GA10374@gmail.com> <20150520162537.GD16995@treble.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23.1-rc1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 20, 2015 at 09:59:18AM -0700, Linus Torvalds wrote: > On Wed, May 20, 2015 at 9:25 AM, Josh Poimboeuf wrote: > > On Wed, May 20, 2015 at 09:03:37AM -0700, Andy Lutomirski wrote: > >> > >> I've never quite understood what the '?' means. > > > > It basically means "here's a function address we found on the stack, > > which may or may not have been called." It's needed because stack > > walking isn't currently 100% reliable. > > It is often quite interesting and helpful, because it shows stale data > on the stack, giving clues about what happened just before. > > Now, I'd like gcc to generally be better about not wasting so much > stack frame, so in that sense I'd like to see fewer '?" entries just > from a code quality standpoint, but when debugging those things, the > downside of "noise" is often cancelled by the upside of "ahh, it > happens after calling X". > > So the "perfect stack frames" is actually not as great a thing as some > people want to make it seem. Ok, I can see how looking at stale stack data could be useful for some of the really tough problems. But right now, the meaning of '?' is ambiguous. It could be stale data, or it could be part of a frame for the current stack which was skipped due to missing frame pointers or an exception. If we can somehow make the stack unwinder reliable, then it would at least allow us to remove the ambiguity of the '?' entries. And it would reduce the "noise" for the majority of issues where we don't care about stale stack data, and can simply ignore it. -- Josh