From: ishell Date: Thu, 19 Feb 2015 18:51:12 +0000 (-0800) Subject: Put more information to the stack when crbug/454297 happens. X-Git-Tag: upstream/4.7.83~4283 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e0110920d6f98f0ba2ac0d680f635ae3f094a04e;p=platform%2Fupstream%2Fv8.git Put more information to the stack when crbug/454297 happens. Review URL: https://codereview.chromium.org/941693002 Cr-Commit-Position: refs/heads/master@{#26757} --- diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc index f2b2ce1..b525bf6 100644 --- a/src/heap/mark-compact.cc +++ b/src/heap/mark-compact.cc @@ -2827,10 +2827,14 @@ class PointersUpdatingVisitor : public ObjectVisitor { // TODO(ishell): remove, once crbug/454297 is caught. void PointersUpdatingVisitor::CheckLayoutDescriptorAndDie(Heap* heap, Object** slot) { - const int kDataBufferSize = 1280; + const int kDataBufferSize = 128; uintptr_t data[kDataBufferSize] = {0}; int index = 0; data[index++] = 0x10aaaaaaaaUL; // begin marker + + data[index++] = reinterpret_cast(slot); + data[index++] = 0x15aaaaaaaaUL; + Address slot_address = reinterpret_cast
(slot); uintptr_t space_owner_id = 0xb001; @@ -2862,7 +2866,7 @@ void PointersUpdatingVisitor::CheckLayoutDescriptorAndDie(Heap* heap, Object** map_slot = slot; bool found = false; const int kMaxDistanceToMap = 64; - for (int i = 0; i < kMaxDistanceToMap; i++, map_slot -= kPointerSize) { + for (int i = 0; i < kMaxDistanceToMap; i++, map_slot--) { Address map_address = reinterpret_cast
(*map_slot); if (heap->map_space()->ContainsSafe(map_address)) { found = true; @@ -2871,6 +2875,9 @@ void PointersUpdatingVisitor::CheckLayoutDescriptorAndDie(Heap* heap, } data[index++] = found; data[index++] = 0x30aaaaaaaaUL; + data[index++] = reinterpret_cast(map_slot); + data[index++] = 0x35aaaaaaaaUL; + if (found) { Address obj_address = reinterpret_cast
(map_slot); Address end_of_page =