Mesh: a new approach to memory compaction for C/C++

Emery Berger emery at cs.umass.edu
Sun Sep 22 16:15:08 UTC 2019


On Wednesday, 18 September 2019 at 09:31:07 UTC, Gregor Mückl 
wrote:
> On Tuesday, 17 September 2019 at 11:42:51 UTC, Per Nordlöw 
> wrote:
>> strangeloop talk here:
>>
>> https://www.youtube.com/watch?v=c1UBJbfR-H0
>>
>> and github repo here:
>>
>> https://github.com/plasma-umass/Mesh
>>
>> Sounds to me like making D's GC precise by default to enable 
>> memory compaction is worth pursuing.
>
> I'm am thinking about the implications for debugging. Mapping 
> the same page to two virtual memory addresses on the heap 
> creates weird situations where writing over the bounds of one 
> object doesn't trash allocations with nearby memory addresses, 
> but can affect seemingly far away allocations that ended up 
> randomly aliased to the same page. Even worse, Mesh randomizes 
> allocations within pages to get more opportunities to alias 
> pages. This means that some heap-smashing bug will likely 
> present itself differently on each run. Have fun finding the 
> root cause of that :/.

You can always seed the random number generator with a fixed 
value to get reproducible runs.

More interestingly, it's also possible to exploit an 
Exterminator-like approach  (see 
https://people.cs.umass.edu/~emery/pubs/p87-novark.pdf) to 
automatically find the source of such bugs! This is specifically 
enabled by randomization. We implemented Exterminator for a 
previous randomizing allocator (DieHard: code here, including 
Exterminator -- https://github.com/plasma-umass/DieHard), and 
there's no technical barrier to doing the same for Mesh.

-- emery (Mesh co-author)




More information about the Digitalmars-d mailing list