ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:112005] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs
@ 2023-01-24 12:40 luke-gru (Luke Gruber) via ruby-core
  2023-01-25 13:25 ` [ruby-core:112033] " luke-gru (Luke Gruber) via ruby-core
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: luke-gru (Luke Gruber) via ruby-core @ 2023-01-24 12:40 UTC (permalink / raw)
  To: ruby-core; +Cc: luke-gru (Luke Gruber)

Issue #19374 has been reported by luke-gru (Luke Gruber).

----------------------------------------
Bug #19374: Issue with Ractor.make_shareable with curried procs
https://bugs.ruby-lang.org/issues/19374

* Author: luke-gru (Luke Gruber)
* Status: Open
* Priority: Normal
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
This works, but shouldn't:

```ruby
class Worker
  def start(&blk)
    blk = blk.curry # bug in ruby allows sharing of non-shareable proc
    Ractor.make_shareable(blk)
    @ractor = Ractor.new(blk) do |b|
      main = b.call
      p "from ractor: #{main}"
    end
  end

  def work
    @ractor.take
  end
end

worker = Worker.new
a = self # unshareable main object
p "from main: #{a}"
worker.start { a }

worker.work
```

The curried proc has a reference to the original proc and it's not checked for shareability.



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

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

* [ruby-core:112033] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs
  2023-01-24 12:40 [ruby-core:112005] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs luke-gru (Luke Gruber) via ruby-core
@ 2023-01-25 13:25 ` luke-gru (Luke Gruber) via ruby-core
  2023-01-27  3:48 ` [ruby-core:112071] " hsbt (Hiroshi SHIBATA) via ruby-core
  2024-08-18 13:22 ` [ruby-core:118878] " reesericci (Reese Armstrong) via ruby-core
  2 siblings, 0 replies; 4+ messages in thread
From: luke-gru (Luke Gruber) via ruby-core @ 2023-01-25 13:25 UTC (permalink / raw)
  To: ruby-core; +Cc: luke-gru (Luke Gruber)

Issue #19374 has been updated by luke-gru (Luke Gruber).


This issue is fixed by https://github.com/ruby/ruby/pull/7182. I will add a test to that PR for this.

----------------------------------------
Bug #19374: Issue with Ractor.make_shareable with curried procs
https://bugs.ruby-lang.org/issues/19374#change-101467

* Author: luke-gru (Luke Gruber)
* Status: Open
* Priority: Normal
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
This works, but shouldn't:

```ruby
class Worker
  def start(&blk)
    blk = blk.curry # bug in ruby allows sharing of non-shareable proc
    Ractor.make_shareable(blk)
    @ractor = Ractor.new(blk) do |b|
      main = b.call
      p "from ractor: #{main}"
    end
  end

  def work
    @ractor.take
  end
end

worker = Worker.new
a = self # unshareable main object
p "from main: #{a}"
worker.start { a }

worker.work
```

The curried proc has a reference to the original proc and it's not checked for shareability.



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

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

* [ruby-core:112071] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs
  2023-01-24 12:40 [ruby-core:112005] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs luke-gru (Luke Gruber) via ruby-core
  2023-01-25 13:25 ` [ruby-core:112033] " luke-gru (Luke Gruber) via ruby-core
@ 2023-01-27  3:48 ` hsbt (Hiroshi SHIBATA) via ruby-core
  2024-08-18 13:22 ` [ruby-core:118878] " reesericci (Reese Armstrong) via ruby-core
  2 siblings, 0 replies; 4+ messages in thread
From: hsbt (Hiroshi SHIBATA) via ruby-core @ 2023-01-27  3:48 UTC (permalink / raw)
  To: ruby-core; +Cc: hsbt (Hiroshi SHIBATA)

Issue #19374 has been updated by hsbt (Hiroshi SHIBATA).

Status changed from Open to Assigned
Assignee set to ko1 (Koichi Sasada)

----------------------------------------
Bug #19374: Issue with Ractor.make_shareable with curried procs
https://bugs.ruby-lang.org/issues/19374#change-101506

* Author: luke-gru (Luke Gruber)
* Status: Assigned
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
This works, but shouldn't:

```ruby
class Worker
  def start(&blk)
    blk = blk.curry # bug in ruby allows sharing of non-shareable proc
    Ractor.make_shareable(blk)
    @ractor = Ractor.new(blk) do |b|
      main = b.call
      p "from ractor: #{main}"
    end
  end

  def work
    @ractor.take
  end
end

worker = Worker.new
a = self # unshareable main object
p "from main: #{a}"
worker.start { a }

worker.work
```

The curried proc has a reference to the original proc and it's not checked for shareability.



-- 
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/postorius/lists/ruby-core.ml.ruby-lang.org/

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

* [ruby-core:118878] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs
  2023-01-24 12:40 [ruby-core:112005] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs luke-gru (Luke Gruber) via ruby-core
  2023-01-25 13:25 ` [ruby-core:112033] " luke-gru (Luke Gruber) via ruby-core
  2023-01-27  3:48 ` [ruby-core:112071] " hsbt (Hiroshi SHIBATA) via ruby-core
@ 2024-08-18 13:22 ` reesericci (Reese Armstrong) via ruby-core
  2 siblings, 0 replies; 4+ messages in thread
From: reesericci (Reese Armstrong) via ruby-core @ 2024-08-18 13:22 UTC (permalink / raw)
  To: ruby-core; +Cc: reesericci (Reese Armstrong)

Issue #19374 has been updated by reesericci (Reese Armstrong).


Hey y'all - 

I'm commenting here to say that this bug seems to be the only way I was able to pass a Proc to a Ractor even though it doesn't reference self - so wondering what the path is for that instead of exploiting this bug.

Thanks,

--reese

----------------------------------------
Bug #19374: Issue with Ractor.make_shareable with curried procs
https://bugs.ruby-lang.org/issues/19374#change-109451

* Author: luke-gru (Luke Gruber)
* Status: Assigned
* Assignee: ko1 (Koichi Sasada)
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
This works, but shouldn't:

```ruby
class Worker
  def start(&blk)
    blk = blk.curry # bug in ruby allows sharing of non-shareable proc
    Ractor.make_shareable(blk)
    @ractor = Ractor.new(blk) do |b|
      main = b.call
      p "from ractor: #{main}"
    end
  end

  def work
    @ractor.take
  end
end

worker = Worker.new
a = self # unshareable main object
p "from main: #{a}"
worker.start { a }

worker.work
```

The curried proc has a reference to the original proc and it's not checked for shareability.



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

end of thread, other threads:[~2024-08-18 13:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-24 12:40 [ruby-core:112005] [Ruby master Bug#19374] Issue with Ractor.make_shareable with curried procs luke-gru (Luke Gruber) via ruby-core
2023-01-25 13:25 ` [ruby-core:112033] " luke-gru (Luke Gruber) via ruby-core
2023-01-27  3:48 ` [ruby-core:112071] " hsbt (Hiroshi SHIBATA) via ruby-core
2024-08-18 13:22 ` [ruby-core:118878] " reesericci (Reese Armstrong) 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).