RFR (XS): 8024830: SEGV in org.apache.lucene.codecs.compressing.CompressingTermVectorsReader.get
dawid.weiss at gmail.com
Sun Nov 10 08:54:17 PST 2013
I confirm that this patch fixes the problem encountered in
LUCENE-5212. I've tested svn rev. 1523179 (trunk) against jdk8-b114
with and without Vladimir's patch. Without the patch the test sequence
ends about 50% of the time in a sigsegv. With the patch all executions
ended without any errors.
I have no idea how you tracked this down, Vladimir, but I
enthusiastically share your "Huraaa!"  :)
On Sun, Nov 10, 2013 at 2:05 AM, Vladimir Kozlov
<vladimir.kozlov at oracle.com> wrote:
> Thank you, Igor
> I will fix the comment.
> On 11/9/13 4:33 PM, Igor Veresov wrote:
>> Woot! Looks good.
>> A typo:
>> 510 // RA guarantee such alignment ...
>> On Nov 9, 2013, at 11:20 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com>
>>> C2 Register Allocator can use input argument's stack slots for spills but
>>> until RA we don't know what offset and alignment these slots have. The
>>> minimum provided alignment is 8 bytes (for Double and long values). For wide
>>> vectors it is not enough. When vector is spilled there (as in this bug) it
>>> may stomp over values on caller's stack which follow argument's slots.
>>> Exclude enough (vector's size - 1) last input argument's stack slots from
>>> vector's spilling masks to avoid it.
>>> The fix is the same for jdk7u and jdk8.
>>> Tested lucene tests, JPRT, jtreg, ctw.
More information about the hotspot-compiler-dev