Skip to content
  • nagachika's avatar
    726bff43
    merge revision(s) c224ca4f: [Backport #21172] · 726bff43
    nagachika authored
    	Fix a race condition with interned strings sweeping.
    
    	[Bug #21172]
    
    	This fixes a rare CI failure.
    
    	The timeline of the race condition is:
    
    	- A `"foo" oid=1` string is interned.
    	- `"foo" oid=1` is no longer referenced and will be swept in the future.
    	- Another `"foo" oid=2` string is interned.
    	- `register_fstring` finds `"foo" oid=1`, but since it is about to be swept,
    	  removes it from `fstring_table` and insert `"foo" oid=2` instead.
    	- `"foo" oid=1` is swept, since it has the `RSTRING_FSTR` flag,
    	  a `st_delete` is issued in `fstring_table` which removes `"foo" oid=2`.
    
    	I don't know how to reproduce this bug consistently in a single test
    	case.
    726bff43
    merge revision(s) c224ca4f: [Backport #21172]
    nagachika authored
    	Fix a race condition with interned strings sweeping.
    
    	[Bug #21172]
    
    	This fixes a rare CI failure.
    
    	The timeline of the race condition is:
    
    	- A `"foo" oid=1` string is interned.
    	- `"foo" oid=1` is no longer referenced and will be swept in the future.
    	- Another `"foo" oid=2` string is interned.
    	- `register_fstring` finds `"foo" oid=1`, but since it is about to be swept,
    	  removes it from `fstring_table` and insert `"foo" oid=2` instead.
    	- `"foo" oid=1` is swept, since it has the `RSTRING_FSTR` flag,
    	  a `st_delete` is issued in `fstring_table` which removes `"foo" oid=2`.
    
    	I don't know how to reproduce this bug consistently in a single test
    	case.
Loading