help debug hash_map garbage collection issue

Martin Sebor msebor@gmail.com
Tue Apr 20 20:36:27 GMT 2021


On 4/20/21 2:13 PM, Marek Polacek wrote:
> On Tue, Apr 20, 2021 at 02:03:00PM -0600, Martin Sebor via Gcc wrote:
>> I have a static hash_map object that needs to persist across passes:
>>
>>    static GTY(()) hash_map<tree, bitmap> *map;
>>
>> I initialize the map like so:
>>
>>    map = hash_map<tree, bitmap>::create_ggc (4);
>>
>> But I see crashes when accessing the map after adding and removing
>> some number of entries in a few passes.  The crashes are due to
>> the map having been garbage-collected and the memory allocated to
>> it poisoned (it has the 0xa5a5a5a5a5a5a5a5 bit pattern that I see
>> in GDD being written into the map by poison_pages()).
>>
>> I assumed marking the map pointer GTY(()) would keep the garbage
>> collector from touching the map.  Is there something else I need
>> to do to keep it from doing that?
>>
>> Thanks
>> Martin
>>
>> PS Just in case it matters, the bitmap in the table is allocated
>> via BITMAP_ALLOC() with a bitmap_obstack variable defined alongside
>> the map.
> 
> My sense is that this is the problem.  What happens if you use
> BITMAP_GGC_ALLOC?

Same thing :(

Martin

> 
> Marek
> 



More information about the Gcc mailing list