diff options
author | NARUSE, Yui <naruse@airemix.jp> | 2022-02-07 19:58:46 +0900 |
---|---|---|
committer | NARUSE, Yui <naruse@airemix.jp> | 2022-02-07 19:58:46 +0900 |
commit | 86c8e15170484fe23b311e567717053f147ffd9c (patch) | |
tree | 9e4585f2801f882181ee41d10db2bf4ef17ee11d /test | |
parent | e54289bb632047b750f9c9371410d1adff2a740a (diff) |
merge revision(s) 2a76440fac62b: [Backport #18501]
[Bug #18501] Fire write barrier after hash has been written
Before this change the write barrier was executed before the key and
value were actually reachable via the Hash. This could cause
inconsistencies in object coloration which would lead to accidental
collection of dup'd keys.
Example:
1. Object O is grey, Object P is white.
2. Write barrier fires O -> P
3. Write barrier does nothing
4. Malloc happens, which starts GC
5. GC colors O black
6. P is written in to O (now we have O -> P reference)
7. P is now accidentally treated as garbage
---
hash.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions