Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756232Ab2BXS6m (ORCPT ); Fri, 24 Feb 2012 13:58:42 -0500 Received: from mail-qw0-f53.google.com ([209.85.216.53]:43461 "EHLO mail-qw0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755613Ab2BXS6k (ORCPT ); Fri, 24 Feb 2012 13:58:40 -0500 MIME-Version: 1.0 In-Reply-To: <4F47B781.2050300@gmail.com> References: <4F32B776.6070007@gmail.com> <1328972596-4142-1-git-send-email-siddhesh.poyarekar@gmail.com> <4F47B781.2050300@gmail.com> Date: Sat, 25 Feb 2012 00:28:38 +0530 Message-ID: Subject: Re: [PATCH] Mark thread stack correctly in proc//maps From: Siddhesh Poyarekar To: KOSAKI Motohiro Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Alexander Viro , linux-fsdevel@vger.kernel.org, Jamie Lokier , vapier@gentoo.org, Andrew Morton Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2208 Lines: 45 On Fri, Feb 24, 2012 at 9:44 PM, KOSAKI Motohiro wrote: > Oh, maybe generically you are right. but you missed one thing. Before > your patch, stack or not stack are address space property. thus, using > /proc/pid/maps makes sense. but after your patch, it's no longer memory > property. applications can use heap or mapped file as a stack. then, at > least, current your code is wrong. the code assume each memory property > are exclusive. Right, but I cannot think of any other alternative that does not involve touching some sensitive code. The setcontext family of functions where any heap, stack or even data area portion could be used as stack, break the very concept of an entire vma being used as a stack. In such a scenario the kernel can only show what it knows, which is that a specific vma is being used as a stack. I agree that it is not correct to show the entire vma as stack, but there doesn't seem to be a better way right now in that implementation. FWIW, if the stack space is allocated in heap, it will show up as heap and not stack since the former gets preference. > Moreover, if pthread stack is unimportant, I wonder why we need this patch > at all. Which application does need it? and When? Right, my original intent was to mark stack vmas allocated by pthreads, which included those vmas that are in the pthreads cache. However, this means that the kernel does not have any real control over what it marks as stack. Also, the concept is very specific to the glibc pthreads implementation and we're essentially just making the kernel spit out some data blindly for glibc. The other solution I can think of is to have stack_start as a task level property so that each task knows their stack vma start (obtained from its sys_clone call and not from mmap). This however means increasing the size of task_struct by sizeof(unsigned long). Is that overhead acceptable? -- Siddhesh Poyarekar http://siddhesh.in -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/