diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2023-02-13 09:51:59 -0500 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2023-02-13 11:42:58 -0500 |
commit | 86de48e9f69b665ba9ffb5bdc5a181a3adb1a7b8 (patch) | |
tree | 1935f52d64d1948f689851b64a83527ac771ed6b /sample | |
parent | 7ddcee5928d8a98337077d5a5ee61136ec84a993 (diff) | |
download | ruby-86de48e9f69b665ba9ffb5bdc5a181a3adb1a7b8.tar.gz |
Remove ibf_dumper's WB_PROTECTED status
It doesn't have the right write barriers in place. For example, there is
rb_mark_set(dump->global_buffer.obj_table);
in the mark function, but there is no corresponding write barrier when
adding to the table in the
`ibf_dump_object() -> ibf_table_find_or_insert() -> st_insert()` code path.
To insert write barrier correctly, we need to store the T_STRUCT VALUE
inside `struct ibf_dump`. Instead of doing that, let's just demote it
to WB unproected for correctness. These dumper object are ephemeral so
there is not a huge benefit for having them WB protected.
Users of the bootsnap gem ran into crashes due to this issue:
https://github.com/Shopify/bootsnap/issues/436
Fixes [Bug #19419]
Diffstat (limited to 'sample')
0 files changed, 0 insertions, 0 deletions