[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20100225.022618.256301798.davem@davemloft.net>
Date: Thu, 25 Feb 2010 02:26:18 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: a.p.zijlstra@...llo.nl
CC: paulus@...ba.org, mingo@...e.hu, linux-kernel@...r.kernel.org
Subject: perf per-symbol histogram causes memory corruption
When builtin-annotate.c processes sample events via
process_sample_event() it uses 'sample_filter'
sample_filter() sizes the histogram object for a symbol based upon the
size, calculated as "sym->end - sym->start", to determine the number
of IP sample slots to allocate.
The problem is, the sym->end value is not stable at this point.
For example, dso__load_sym() first loads all of the symbols, then it
makes another pass over the symbols by calling symbols__fixup_end()
which will adjust the sym->end values of various symbols.
At this point, the histogram IP sample array allocated by
sample_filter() can become too small, and hits recorded can thus
access past the end of the array corrupting memory.
I get this very reliably on sparc64, and it took me a few days to root
cause this. :-)
I don't see an immediate way to fix this, any ideas?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists