Skip to content
  • NARUSE, Yui's avatar
    f1cde05d
    merge revision(s) 86de48e9: [Backport #19419] · f1cde05d
    NARUSE, Yui authored
    	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]
    	---
    	 compile.c | 2 +-
    	 1 file changed, 1 insertion(+), 1 deletion(-)
    f1cde05d
    merge revision(s) 86de48e9: [Backport #19419]
    NARUSE, Yui authored
    	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]
    	---
    	 compile.c | 2 +-
    	 1 file changed, 1 insertion(+), 1 deletion(-)
Loading