ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure
@ 2025-05-24  7:56 byroot (Jean Boussier) via ruby-core
  2025-05-24  8:04 ` [ruby-core:122275] " byroot (Jean Boussier) via ruby-core
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-05-24  7:56 UTC (permalink / raw)
  To: ruby-core; +Cc: byroot (Jean Boussier)

Issue #21370 has been reported by byroot (Jean Boussier).

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370

* Author: byroot (Jean Boussier)
* Status: Open
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:122275] [Ruby Bug#21370] `it` can cause ISeq serialization failure
  2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
@ 2025-05-24  8:04 ` byroot (Jean Boussier) via ruby-core
  2025-06-02 13:02 ` [ruby-core:122380] " byroot (Jean Boussier) via ruby-core
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-05-24  8:04 UTC (permalink / raw)
  To: ruby-core; +Cc: byroot (Jean Boussier)

Issue #21370 has been updated by byroot (Jean Boussier).


I have a fix but no idea if it's the correct approach: https://github.com/ruby/ruby/pull/13436

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370#change-113416

* Author: byroot (Jean Boussier)
* Status: Open
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:122380] [Ruby Bug#21370] `it` can cause ISeq serialization failure
  2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
  2025-05-24  8:04 ` [ruby-core:122275] " byroot (Jean Boussier) via ruby-core
@ 2025-06-02 13:02 ` byroot (Jean Boussier) via ruby-core
  2025-07-14 20:54 ` [ruby-core:122750] " k0kubun (Takashi Kokubun) via ruby-core
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: byroot (Jean Boussier) via ruby-core @ 2025-06-02 13:02 UTC (permalink / raw)
  To: ruby-core; +Cc: byroot (Jean Boussier)

Issue #21370 has been updated by byroot (Jean Boussier).

Status changed from Open to Closed

Fixed in ff222ac27afe712ef6ec2bb74c81cdde1a1fa176 (not sure why the bot didn't catch it).

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370#change-113526

* Author: byroot (Jean Boussier)
* Status: Closed
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:122750] [Ruby Bug#21370] `it` can cause ISeq serialization failure
  2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
  2025-05-24  8:04 ` [ruby-core:122275] " byroot (Jean Boussier) via ruby-core
  2025-06-02 13:02 ` [ruby-core:122380] " byroot (Jean Boussier) via ruby-core
@ 2025-07-14 20:54 ` k0kubun (Takashi Kokubun) via ruby-core
  2025-07-14 21:18 ` [ruby-core:122759] " k0kubun (Takashi Kokubun) via ruby-core
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: k0kubun (Takashi Kokubun) via ruby-core @ 2025-07-14 20:54 UTC (permalink / raw)
  To: ruby-core; +Cc: k0kubun (Takashi Kokubun)

Issue #21370 has been updated by k0kubun (Takashi Kokubun).

Backport changed from 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED to 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE

ruby_3_4 commit:acb19e8707093593e967b6af03d92da5c570ffc6 merged revision(s) commit:ff222ac27afe712ef6ec2bb74c81cdde1a1fa176.

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370#change-114029

* Author: byroot (Jean Boussier)
* Status: Closed
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:122759] [Ruby Bug#21370] `it` can cause ISeq serialization failure
  2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
                   ` (2 preceding siblings ...)
  2025-07-14 20:54 ` [ruby-core:122750] " k0kubun (Takashi Kokubun) via ruby-core
@ 2025-07-14 21:18 ` k0kubun (Takashi Kokubun) via ruby-core
  2025-09-12 21:54 ` [ruby-core:123235] " k0kubun (Takashi Kokubun) via ruby-core
  2025-09-16 21:18 ` [ruby-core:123275] " k0kubun (Takashi Kokubun) via ruby-core
  5 siblings, 0 replies; 7+ messages in thread
From: k0kubun (Takashi Kokubun) via ruby-core @ 2025-07-14 21:18 UTC (permalink / raw)
  To: ruby-core; +Cc: k0kubun (Takashi Kokubun)

Issue #21370 has been updated by k0kubun (Takashi Kokubun).

Backport changed from 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE to 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED

Reverted the backport at commit:3a06b3d9f51bc4a3eef5fbaa035595ed34d65eba because it failed the CI:

```
  TestISeq#test_serialize_anonymous_outer_variables: Test::Unit::AssertionFailedError: <1> expected but was
  
  Retrying...
  
    1) Failure:
  TestISeq#test_serialize_anonymous_outer_variables [/Users/runner/work/ruby/ruby/src/test/ruby/test_iseq.rb:874]:
  <1> expected but was
  <false>.
```

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370#change-114038

* Author: byroot (Jean Boussier)
* Status: Closed
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:123235] [Ruby Bug#21370] `it` can cause ISeq serialization failure
  2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
                   ` (3 preceding siblings ...)
  2025-07-14 21:18 ` [ruby-core:122759] " k0kubun (Takashi Kokubun) via ruby-core
@ 2025-09-12 21:54 ` k0kubun (Takashi Kokubun) via ruby-core
  2025-09-16 21:18 ` [ruby-core:123275] " k0kubun (Takashi Kokubun) via ruby-core
  5 siblings, 0 replies; 7+ messages in thread
From: k0kubun (Takashi Kokubun) via ruby-core @ 2025-09-12 21:54 UTC (permalink / raw)
  To: ruby-core; +Cc: k0kubun (Takashi Kokubun)

Issue #21370 has been updated by k0kubun (Takashi Kokubun).


ref: backport PR https://github.com/ruby/ruby/pull/13493

Ruby 3.4.6 will miss the fix since we don't have a packport PR that passes tests.

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370#change-114566

* Author: byroot (Jean Boussier)
* Status: Closed
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:123275] [Ruby Bug#21370] `it` can cause ISeq serialization failure
  2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
                   ` (4 preceding siblings ...)
  2025-09-12 21:54 ` [ruby-core:123235] " k0kubun (Takashi Kokubun) via ruby-core
@ 2025-09-16 21:18 ` k0kubun (Takashi Kokubun) via ruby-core
  5 siblings, 0 replies; 7+ messages in thread
From: k0kubun (Takashi Kokubun) via ruby-core @ 2025-09-16 21:18 UTC (permalink / raw)
  To: ruby-core; +Cc: k0kubun (Takashi Kokubun)

Issue #21370 has been updated by k0kubun (Takashi Kokubun).

Backport changed from 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED to 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE

ruby_3_4 commit:6882012473.

----------------------------------------
Bug #21370: `it` can cause ISeq serialization failure
https://bugs.ruby-lang.org/issues/21370#change-114642

* Author: byroot (Jean Boussier)
* Status: Closed
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE
----------------------------------------
Originally reported at: https://github.com/rails/rails/issues/55108

```ruby
iseq = RubyVM::InstructionSequence.compile(<<~'RUBY')
  [1].each do
  rescue => e
    puts it
  end
RUBY

iseq.to_binary # CRASH
```

```
miniruby(sigsegv) (null):0
miniruby(RB_FL_ANY_RAW+0x20) [0x1010ac504] internal/fl_type.h:507
miniruby(rbimpl_rstring_getmem+0x20) [0x101090674] internal/core/rstring.h:393
miniruby(rb_str_cmp+0x4c) [0x10109920c] string.c:4541
miniruby(outer_variable_cmp+0x3c) [0x100e43b64] compile.c:13381
miniruby(cmp_bsd_qsort+0x3c) [0x1010fe810] util.c:239
miniruby(ruby_qsort+0x5c) [0x1010fe7a8] util.c:248
miniruby(ibf_dump_outer_variables+0x150) [0x100e43708] compile.c:13402
miniruby(ibf_dump_iseq_each+0x19c) [0x100e423cc] compile.c:13527
miniruby(ibf_dump_iseq_list_i+0x38) [0x100e420fc] compile.c:13862
miniruby(apply_functor+0x40) [0x10107bad8] st.c:1644
```

It is crashing while trying to sort outer variables, and `it` is anonymous.




-- 
https://bugs.ruby-lang.org/
______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-09-16 21:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-24  7:56 [ruby-core:122274] [Ruby Bug#21370] `it` can cause ISeq serialization failure byroot (Jean Boussier) via ruby-core
2025-05-24  8:04 ` [ruby-core:122275] " byroot (Jean Boussier) via ruby-core
2025-06-02 13:02 ` [ruby-core:122380] " byroot (Jean Boussier) via ruby-core
2025-07-14 20:54 ` [ruby-core:122750] " k0kubun (Takashi Kokubun) via ruby-core
2025-07-14 21:18 ` [ruby-core:122759] " k0kubun (Takashi Kokubun) via ruby-core
2025-09-12 21:54 ` [ruby-core:123235] " k0kubun (Takashi Kokubun) via ruby-core
2025-09-16 21:18 ` [ruby-core:123275] " k0kubun (Takashi Kokubun) via ruby-core

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).