You need to sign in or sign up before continuing.
提交 a10e93a9 编写于 作者: Y ysr

7011940: iCMS: SIGSEGV in SweepClosure::do_already_free_chunk(FreeChunk*)+0x360

Summary: Revert a (relaxed version of the) bounds-check that was incorrectly removed in the fix for 7008136.
Reviewed-by: jmasa, johnc
上级 b1ff61c0
...@@ -8119,8 +8119,10 @@ void SweepClosure::do_already_free_chunk(FreeChunk* fc) { ...@@ -8119,8 +8119,10 @@ void SweepClosure::do_already_free_chunk(FreeChunk* fc) {
// if the next chunk is a free block that can't be coalesced // if the next chunk is a free block that can't be coalesced
// it doesn't make sense to remove this chunk from the free lists // it doesn't make sense to remove this chunk from the free lists
FreeChunk* nextChunk = (FreeChunk*)(addr + size); FreeChunk* nextChunk = (FreeChunk*)(addr + size);
if (nextChunk->isFree() && // The next chunk is free... assert((HeapWord*)nextChunk <= _sp->end(), "Chunk size out of bounds?");
nextChunk->cantCoalesce()) { // ... but cant be coalesced if ((HeapWord*)nextChunk < _sp->end() && // There is another free chunk to the right ...
nextChunk->isFree() && // ... which is free...
nextChunk->cantCoalesce()) { // ... but can't be coalesced
// nothing to do // nothing to do
} else { } else {
// Potentially the start of a new free range: // Potentially the start of a new free range:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册