Bug #22383
closedFix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
Description
mistakenly rewrote
as
requiring orig to not be shared, the opposite of the original
condition. orig always shares the buffer with tmp here, so the buffer
was never given back and the string stayed shared until its next
modification copied it.
The next line of code then reads aux.shared from strings
that are not shared, where the union holds aux.capa.
Updated by rwstauner (Randy Stauner) 2 days ago
Updated by rwstauner (Randy Stauner) 2 days ago
4.0 Backport PR https://github.com/ruby/ruby/pull/19019
Updated by nobu (Nobuyoshi Nakada) 2 days ago
- Backport changed from 3.3: UNKNOWN, 3.4: UNKNOWN, 4.0: REQUIRED to 3.3: REQUIRED, 3.4: REQUIRED, 4.0: REQUIRED
With class Ractor alias join take end unless Ractor.method_defined?(:join), it reproduced on 3.3 an 3.4.
Updated by rwstauner (Randy Stauner) 2 days ago
With class Ractor alias join take end unless Ractor.method_defined?(:join), it reproduced on 3.3 an 3.4.
What reproduces?
I do have a few related fixes coming in another PR but this particular condition is still
in 3.4, it only got changed in the linked commit which is on 4.0
Updated by nobu (Nobuyoshi Nakada) 2 days ago
Sorry, confusing with [Bug #22382].
Updated by rwstauner (Randy Stauner) 2 days ago
- Backport changed from 3.3: REQUIRED, 3.4: REQUIRED, 4.0: REQUIRED to 3.3: DONTNEED, 3.4: DONTNEED, 4.0: REQUIRED
Updated by Anonymous 2 days ago
- Status changed from Open to Closed
Applied in changeset git|57213d44ce7b1a31fc9648e9cd5eb0c4507f4a49.
[Bug #22383] Fix inverted STR_SHARED check in rb_str_tmp_frozen_release
45a2c95d0f7184c9cd64ddd26699af31bea8675d mistakenly rewrote
as
requiring orig to not be shared, the opposite of the original
condition. orig always shares the buffer with tmp here, so the buffer
was never given back and the string stayed shared until its next
modification copied it. The code then read aux.shared from strings
that are not shared, where the union holds aux.capa.
This should be backported to 4.0