Flaky API Test TestWTF.bmalloc.ScavengedMemoryShouldBeReused
authorysuzuki@apple.com <ysuzuki@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Jul 2019 21:56:32 +0000 (21:56 +0000)
committerysuzuki@apple.com <ysuzuki@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Jul 2019 21:56:32 +0000 (21:56 +0000)
commit6392d20a03444c3d913bb87e37f4ef5dad8e9728
treed455e033855e9692519d16e7d33bee869fcaee29
parent30c23308a97be6d2629ad80de11d5c0950ccd22d
Flaky API Test TestWTF.bmalloc.ScavengedMemoryShouldBeReused
https://bugs.webkit.org/show_bug.cgi?id=199524
<rdar://problem/52783816>

Reviewed by Saam Barati.

This test is white-box one and it has strong assumption how IsoHeap allocates pages.
But this test has several problems.

1. IsoPage::numObjects is not the exact number of how many we allocate objects. This
   number is calculated by pageSize / sizeof(T), and this does not account the header
   size of IsoPage. So, # of objects per IsoPage is less than numObjects. Since sizeof(double)
   is very small, we can have many objects in one IsoPage. As a result, we need a large
   bitmap in IsoPage. This reduces # of objects in IsoPage largely. So, `ptrs.size()` becomes
   less than numObjects.

2. We now have lower tier of allocation in IsoHeap. It means that we allocate 8 objects in
   shared page (page is shared, but memory is pinned for a specific type) before using IsoHeap's
   page. This also makes the intention of this test wrong.

Due to (1), we access OoB of ptrs vector, passing a garbage to IsoHeap::deallocate, and crashing.

We make this test robust while we still keep this test white-box one to test the critical feature
of IsoHeap. We first exhaust lower tier of IsoHeap, and after that, start testing the memory. We
allocate many pointers, deallocate them, allocate one pointer while keeping pointers in the lower
tier live, and check whether the deallocated memory is reused.

* TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:
(TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247368 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp