ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:120404] [Ruby master Bug#20981] rb_undefine_finalizer is missing
@ 2024-12-25 11:53 KitaitiMakoto via ruby-core
  2024-12-25 13:17 ` [ruby-core:120406] " nobu (Nobuyoshi Nakada) via ruby-core
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: KitaitiMakoto via ruby-core @ 2024-12-25 11:53 UTC (permalink / raw)
  To: ruby-core; +Cc: KitaitiMakoto

Issue #20981 has been reported by KitaitiMakoto (真 北市).

----------------------------------------
Bug #20981: rb_undefine_finalizer is missing
https://bugs.ruby-lang.org/issues/20981

* Author: KitaitiMakoto (真 北市)
* Status: Open
* ruby -v: 3.4.1
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
Merry Christmas!

I encountered an error like "dyld[89037]: missing symbol called" in an extension which uses`rb_undefine_finalizer` in Ruby 3.4.1. It works fine in Ruby 3.3.6.

The function defined in [ruby/include/ruby/internal/gc.h](https://github.com/ruby/ruby/blob/v3_4_1/include/ruby/internal/gc.h#L315-L326) but seems removed from [ruby/gc.c](https://github.com/ruby/ruby/blob/v3_4_1/gc.c). Could you consider restore the implementation or remove the function from `gc.h`?

Reproducible code:

### extconf.rb ###
```ruby
require "mkmf"
create_makefile "undefine_finalizer_bug"
```


### undefine_finalizer_bug.c ###
```c
#include<ruby.h>

static VALUE s_undefine_finalizer(VALUE self) {
  rb_undefine_finalizer(self);
  return Qnil;
}

void Init_undefine_finalizer_bug(void) {
  VALUE klass = rb_define_class("UndefineFinalizerBug", rb_cObject);
  rb_define_singleton_method(klass, "undefine_finalizer", s_undefine_finalizer, 0);
}
```

### undefine-finalizer-bug.rb ###
```ruby
require "undefine_finalizer_bug.so"

finalizer = proc {
  puts "Finalizer called"
}

ObjectSpace.define_finalizer(UndefineFinalizerBug, finalizer)
UndefineFinalizerBug.new
UndefineFinalizerBug.undefine_finalizer
GC.start
```

### Running ###
#### Ruby 3.4.1 ##
```
% ruby ./extconf.rb && make && ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24]
dyld[2436]: missing symbol called
[1]    2436 abort      ruby -v -I. ./undefine-finalizer-bug.rb
```

#### Ruby 3.3.6 ####
```
% chruby-exec 3.3.6 -- ruby ./extconf.rb && make && chruby-exec 3.3.6 -- ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]
```


Thank you.




-- 
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] 5+ messages in thread

* [ruby-core:120406] [Ruby master Bug#20981] rb_undefine_finalizer is missing
  2024-12-25 11:53 [ruby-core:120404] [Ruby master Bug#20981] rb_undefine_finalizer is missing KitaitiMakoto via ruby-core
@ 2024-12-25 13:17 ` nobu (Nobuyoshi Nakada) via ruby-core
  2024-12-25 13:28 ` [ruby-core:120407] " nobu (Nobuyoshi Nakada) via ruby-core
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2024-12-25 13:17 UTC (permalink / raw)
  To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)

Issue #20981 has been updated by nobu (Nobuyoshi Nakada).


Hmmm, these symbols disappeared.

```console
$ comm -23 <(nm -PUg 3.3.6/lib/libruby.dylib | cut -d' ' -f1) <(nm -PUg 3.4.1/lib/libruby.dylib | cut -d' ' -f1)
_rb_ary_memsize
_rb_ast_add_mark_object
_rb_ast_delete_mark_object
_rb_ast_mark
_rb_ast_set_tokens
_rb_ast_tokens
_rb_ast_update_references
_rb_autoload
_rb_file_s_birthtime
_rb_fstring
_rb_gc_force_recycle
_rb_gc_verify_internal_consistency
_rb_generic_ivar_memsize
_rb_grantpt
_rb_hash_tbl_raw
_rb_io_memsize
_rb_newobj
_rb_newobj_of
_rb_objspace_data_type_memsize
_rb_objspace_each_objects_without_setup
_rb_objspace_markable_object_p
_rb_objspace_marked_object_p
_rb_parser_calloc
_rb_parser_free
_rb_parser_malloc
_rb_parser_realloc
_rb_ruby_parser_compile_string
_rb_st_init_existing_table_with_size
_rb_st_replace
_rb_str_locktmp_ensure
_rb_str_make_embedded
_rb_str_memsize
_rb_str_reembeddable_p
_rb_str_size_as_embedded
_rb_str_tmp_frozen_no_embed_acquire
_rb_str_upto_each
_rb_str_upto_endless_each
_rb_undefine_finalizer
```

`rb_gc_force_recycle` is now defined as `static inline` in include/ruby/internal/gc.h.

Probably only `rb_undefine_finalizer` is problematic?

----------------------------------------
Bug #20981: rb_undefine_finalizer is missing
https://bugs.ruby-lang.org/issues/20981#change-111185

* Author: KitaitiMakoto (真 北市)
* Status: Open
* ruby -v: 3.4.1
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
Merry Christmas!

I encountered an error like "dyld[89037]: missing symbol called" in an extension which uses`rb_undefine_finalizer` in Ruby 3.4.1. It works fine in Ruby 3.3.6.

The function defined in [ruby/include/ruby/internal/gc.h](https://github.com/ruby/ruby/blob/v3_4_1/include/ruby/internal/gc.h#L315-L326) but seems removed from [ruby/gc.c](https://github.com/ruby/ruby/blob/v3_4_1/gc.c). Could you consider restore the implementation or remove the function from `gc.h`?

Reproducible code:

### extconf.rb ###
```ruby
require "mkmf"
create_makefile "undefine_finalizer_bug"
```


### undefine_finalizer_bug.c ###
```c
#include<ruby.h>

static VALUE s_undefine_finalizer(VALUE self) {
  rb_undefine_finalizer(self);
  return Qnil;
}

void Init_undefine_finalizer_bug(void) {
  VALUE klass = rb_define_class("UndefineFinalizerBug", rb_cObject);
  rb_define_singleton_method(klass, "undefine_finalizer", s_undefine_finalizer, 0);
}
```

### undefine-finalizer-bug.rb ###
```ruby
require "undefine_finalizer_bug.so"

finalizer = proc {
  puts "Finalizer called"
}

ObjectSpace.define_finalizer(UndefineFinalizerBug, finalizer)
UndefineFinalizerBug.new
UndefineFinalizerBug.undefine_finalizer
GC.start
```

### Running ###
#### Ruby 3.4.1 ##
```
% ruby ./extconf.rb && make && ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24]
dyld[2436]: missing symbol called
[1]    2436 abort      ruby -v -I. ./undefine-finalizer-bug.rb
```

#### Ruby 3.3.6 ####
```
% chruby-exec 3.3.6 -- ruby ./extconf.rb && make && chruby-exec 3.3.6 -- ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]
```


Thank you.




-- 
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] 5+ messages in thread

* [ruby-core:120407] [Ruby master Bug#20981] rb_undefine_finalizer is missing
  2024-12-25 11:53 [ruby-core:120404] [Ruby master Bug#20981] rb_undefine_finalizer is missing KitaitiMakoto via ruby-core
  2024-12-25 13:17 ` [ruby-core:120406] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2024-12-25 13:28 ` nobu (Nobuyoshi Nakada) via ruby-core
  2024-12-25 14:27 ` [ruby-core:120408] " KitaitiMakoto via ruby-core
  2025-02-14  1:48 ` [ruby-core:121001] " k0kubun (Takashi Kokubun) via ruby-core
  3 siblings, 0 replies; 5+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2024-12-25 13:28 UTC (permalink / raw)
  To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)

Issue #20981 has been updated by nobu (Nobuyoshi Nakada).

Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED

https://github.com/ruby/ruby/pull/12468

----------------------------------------
Bug #20981: rb_undefine_finalizer is missing
https://bugs.ruby-lang.org/issues/20981#change-111186

* Author: KitaitiMakoto (真 北市)
* Status: Open
* ruby -v: 3.4.1
* Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Merry Christmas!

I encountered an error like "dyld[89037]: missing symbol called" in an extension which uses`rb_undefine_finalizer` in Ruby 3.4.1. It works fine in Ruby 3.3.6.

The function defined in [ruby/include/ruby/internal/gc.h](https://github.com/ruby/ruby/blob/v3_4_1/include/ruby/internal/gc.h#L315-L326) but seems removed from [ruby/gc.c](https://github.com/ruby/ruby/blob/v3_4_1/gc.c). Could you consider restore the implementation or remove the function from `gc.h`?

Reproducible code:

### extconf.rb ###
```ruby
require "mkmf"
create_makefile "undefine_finalizer_bug"
```


### undefine_finalizer_bug.c ###
```c
#include<ruby.h>

static VALUE s_undefine_finalizer(VALUE self) {
  rb_undefine_finalizer(self);
  return Qnil;
}

void Init_undefine_finalizer_bug(void) {
  VALUE klass = rb_define_class("UndefineFinalizerBug", rb_cObject);
  rb_define_singleton_method(klass, "undefine_finalizer", s_undefine_finalizer, 0);
}
```

### undefine-finalizer-bug.rb ###
```ruby
require "undefine_finalizer_bug.so"

finalizer = proc {
  puts "Finalizer called"
}

ObjectSpace.define_finalizer(UndefineFinalizerBug, finalizer)
UndefineFinalizerBug.new
UndefineFinalizerBug.undefine_finalizer
GC.start
```

### Running ###
#### Ruby 3.4.1 ##
```
% ruby ./extconf.rb && make && ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24]
dyld[2436]: missing symbol called
[1]    2436 abort      ruby -v -I. ./undefine-finalizer-bug.rb
```

#### Ruby 3.3.6 ####
```
% chruby-exec 3.3.6 -- ruby ./extconf.rb && make && chruby-exec 3.3.6 -- ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]
```


Thank you.




-- 
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] 5+ messages in thread

* [ruby-core:120408] [Ruby master Bug#20981] rb_undefine_finalizer is missing
  2024-12-25 11:53 [ruby-core:120404] [Ruby master Bug#20981] rb_undefine_finalizer is missing KitaitiMakoto via ruby-core
  2024-12-25 13:17 ` [ruby-core:120406] " nobu (Nobuyoshi Nakada) via ruby-core
  2024-12-25 13:28 ` [ruby-core:120407] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2024-12-25 14:27 ` KitaitiMakoto via ruby-core
  2025-02-14  1:48 ` [ruby-core:121001] " k0kubun (Takashi Kokubun) via ruby-core
  3 siblings, 0 replies; 5+ messages in thread
From: KitaitiMakoto via ruby-core @ 2024-12-25 14:27 UTC (permalink / raw)
  To: ruby-core; +Cc: KitaitiMakoto

Issue #20981 has been updated by KitaitiMakoto (真 北市).


Thank you! I confirmed my code works fine in Ruby `master` branch.

----------------------------------------
Bug #20981: rb_undefine_finalizer is missing
https://bugs.ruby-lang.org/issues/20981#change-111188

* Author: KitaitiMakoto (真 北市)
* Status: Closed
* ruby -v: 3.4.1
* Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
Merry Christmas!

I encountered an error like "dyld[89037]: missing symbol called" in an extension which uses`rb_undefine_finalizer` in Ruby 3.4.1. It works fine in Ruby 3.3.6.

The function defined in [ruby/include/ruby/internal/gc.h](https://github.com/ruby/ruby/blob/v3_4_1/include/ruby/internal/gc.h#L315-L326) but seems removed from [ruby/gc.c](https://github.com/ruby/ruby/blob/v3_4_1/gc.c). Could you consider restore the implementation or remove the function from `gc.h`?

Reproducible code:

### extconf.rb ###
```ruby
require "mkmf"
create_makefile "undefine_finalizer_bug"
```


### undefine_finalizer_bug.c ###
```c
#include<ruby.h>

static VALUE s_undefine_finalizer(VALUE self) {
  rb_undefine_finalizer(self);
  return Qnil;
}

void Init_undefine_finalizer_bug(void) {
  VALUE klass = rb_define_class("UndefineFinalizerBug", rb_cObject);
  rb_define_singleton_method(klass, "undefine_finalizer", s_undefine_finalizer, 0);
}
```

### undefine-finalizer-bug.rb ###
```ruby
require "undefine_finalizer_bug.so"

finalizer = proc {
  puts "Finalizer called"
}

ObjectSpace.define_finalizer(UndefineFinalizerBug, finalizer)
UndefineFinalizerBug.new
UndefineFinalizerBug.undefine_finalizer
GC.start
```

### Running ###
#### Ruby 3.4.1 ##
```
% ruby ./extconf.rb && make && ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24]
dyld[2436]: missing symbol called
[1]    2436 abort      ruby -v -I. ./undefine-finalizer-bug.rb
```

#### Ruby 3.3.6 ####
```
% chruby-exec 3.3.6 -- ruby ./extconf.rb && make && chruby-exec 3.3.6 -- ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]
```


Thank you.




-- 
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] 5+ messages in thread

* [ruby-core:121001] [Ruby master Bug#20981] rb_undefine_finalizer is missing
  2024-12-25 11:53 [ruby-core:120404] [Ruby master Bug#20981] rb_undefine_finalizer is missing KitaitiMakoto via ruby-core
                   ` (2 preceding siblings ...)
  2024-12-25 14:27 ` [ruby-core:120408] " KitaitiMakoto via ruby-core
@ 2025-02-14  1:48 ` k0kubun (Takashi Kokubun) via ruby-core
  3 siblings, 0 replies; 5+ messages in thread
From: k0kubun (Takashi Kokubun) via ruby-core @ 2025-02-14  1:48 UTC (permalink / raw)
  To: ruby-core; +Cc: k0kubun (Takashi Kokubun)

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

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

ruby_3_4 commit:4bafaef0a55fdc45a7b8275a82ceb0f3e3419d00 merged revision(s) commit:7df5d65eac86940619f87da7e70bc0911097ae2f.

----------------------------------------
Bug #20981: rb_undefine_finalizer is missing
https://bugs.ruby-lang.org/issues/20981#change-111909

* Author: KitaitiMakoto (真 北市)
* Status: Closed
* ruby -v: 3.4.1
* Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE
----------------------------------------
Merry Christmas!

I encountered an error like "dyld[89037]: missing symbol called" in an extension which uses`rb_undefine_finalizer` in Ruby 3.4.1. It works fine in Ruby 3.3.6.

The function defined in [ruby/include/ruby/internal/gc.h](https://github.com/ruby/ruby/blob/v3_4_1/include/ruby/internal/gc.h#L315-L326) but seems removed from [ruby/gc.c](https://github.com/ruby/ruby/blob/v3_4_1/gc.c). Could you consider restore the implementation or remove the function from `gc.h`?

Reproducible code:

### extconf.rb ###
```ruby
require "mkmf"
create_makefile "undefine_finalizer_bug"
```


### undefine_finalizer_bug.c ###
```c
#include<ruby.h>

static VALUE s_undefine_finalizer(VALUE self) {
  rb_undefine_finalizer(self);
  return Qnil;
}

void Init_undefine_finalizer_bug(void) {
  VALUE klass = rb_define_class("UndefineFinalizerBug", rb_cObject);
  rb_define_singleton_method(klass, "undefine_finalizer", s_undefine_finalizer, 0);
}
```

### undefine-finalizer-bug.rb ###
```ruby
require "undefine_finalizer_bug.so"

finalizer = proc {
  puts "Finalizer called"
}

ObjectSpace.define_finalizer(UndefineFinalizerBug, finalizer)
UndefineFinalizerBug.new
UndefineFinalizerBug.undefine_finalizer
GC.start
```

### Running ###
#### Ruby 3.4.1 ##
```
% ruby ./extconf.rb && make && ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24]
dyld[2436]: missing symbol called
[1]    2436 abort      ruby -v -I. ./undefine-finalizer-bug.rb
```

#### Ruby 3.3.6 ####
```
% chruby-exec 3.3.6 -- ruby ./extconf.rb && make && chruby-exec 3.3.6 -- ruby -v -I. ./undefine-finalizer-bug.rb
creating Makefile
linking shared-object undefine_finalizer_bug.bundle
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]
```


Thank you.




-- 
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] 5+ messages in thread

end of thread, other threads:[~2025-02-14  1:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-25 11:53 [ruby-core:120404] [Ruby master Bug#20981] rb_undefine_finalizer is missing KitaitiMakoto via ruby-core
2024-12-25 13:17 ` [ruby-core:120406] " nobu (Nobuyoshi Nakada) via ruby-core
2024-12-25 13:28 ` [ruby-core:120407] " nobu (Nobuyoshi Nakada) via ruby-core
2024-12-25 14:27 ` [ruby-core:120408] " KitaitiMakoto via ruby-core
2025-02-14  1:48 ` [ruby-core:121001] " 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).