[#106939] [Ruby master Bug#18455] `IO#close` has poor performance and difficult to understand semantics. — "ioquatix (Samuel Williams)" <noreply@...>

Issue #18455 has been reported by ioquatix (Samuel Williams).

10 messages 2022/01/01

[#106977] [Ruby master Feature#18461] closures are capturing unused variables — "bughit (bug hit)" <noreply@...>

Issue #18461 has been reported by bughit (bug hit).

12 messages 2022/01/05

[#106994] [Ruby master Feature#18462] Proposal to merge WASI based WebAssembly support — "katei (Yuta Saito)" <noreply@...>

Issue #18462 has been reported by katei (Yuta Saito).

8 messages 2022/01/07

[#106996] [Ruby master Feature#18463] Random number generation with xoshiro — "bbrklm (Benson Muite)" <noreply@...>

Issue #18463 has been reported by bbrklm (Benson Muite).

8 messages 2022/01/07

[#107005] [Ruby master Bug#18464] RUBY_INTERNAL_EVENT_NEWOBJ tracepoint causes an interpreter crash when combined with Ractors — "kjtsanaktsidis (KJ Tsanaktsidis)" <noreply@...>

Issue #18464 has been reported by kjtsanaktsidis (KJ Tsanaktsidis).

14 messages 2022/01/08

[#107008] [Ruby master Bug#18465] Make `IO#write` atomic. — "ioquatix (Samuel Williams)" <noreply@...>

Issue #18465 has been reported by ioquatix (Samuel Williams).

16 messages 2022/01/09

[#107073] [Ruby master Feature#18481] Porting YJIT to Rust (request for feedback) — "maximecb (Maxime Chevalier-Boisvert)" <noreply@...>

Issue #18481 has been reported by maximecb (Maxime Chevalier-Boisvert).

26 messages 2022/01/12

[#107106] [Ruby master Bug#18487] Kernel#binding behaves differently depending on implementation language of items on the stack — "alanwu (Alan Wu)" <noreply@...>

Issue #18487 has been reported by alanwu (Alan Wu).

11 messages 2022/01/13

[#107190] [Ruby master Feature#18498] Introduce a public WeakKeysMap that compares by equality — "byroot (Jean Boussier)" <noreply@...>

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

17 messages 2022/01/19

[#107203] [Ruby master Bug#18501] [BUG] try to mark T_NONE object in RubyVM::InstructionSequence. load_from_binary — "byroot (Jean Boussier)" <noreply@...>

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

8 messages 2022/01/20

[#107204] [Ruby master Bug#18502] Make ruby-2.7.5 on Solaris 10 ld.so.1: gcc: fatal: libintl.so.8: open failed: No such file or directory — "dklein (Dmitri Klein)" <noreply@...>

Issue #18502 has been reported by dklein (Dmitri Klein).

8 messages 2022/01/20

[#107275] [Ruby master Bug#18512] MacOS 12.1 Monterey Bug — "oucl5976@... (Paul Liu)" <noreply@...>

Issue #18512 has been reported by oucl5976@gmail.com (Paul Liu).

9 messages 2022/01/25

[#107291] [Ruby master Bug#18518] NoMemoryError + [FATAL] failed to allocate memory for twice 1 << large — "Eregon (Benoit Daloze)" <noreply@...>

Issue #18518 has been reported by Eregon (Benoit Daloze).

12 messages 2022/01/26

[#107310] [Ruby master Bug#18555] Running "bundle exec middleman server" on M1 Mac gives [BUG] Bus Error at 0x0000000104b04000 — "anthonyaykut (Anthony Aykut)" <noreply@...>

Issue #18555 has been reported by anthonyaykut (Anthony Aykut).

13 messages 2022/01/28

[#107346] [Ruby master Misc#18557] DevMeeting-2022-02-17 — "mame (Yusuke Endoh)" <noreply@...>

Issue #18557 has been reported by mame (Yusuke Endoh).

18 messages 2022/01/29

[#107392] [Ruby master Bug#18560] "Compaction isn't available on this platform" error running PG test suite on ppc64le — "vo.x (Vit Ondruch)" <noreply@...>

Issue #18560 has been reported by vo.x (Vit Ondruch).

7 messages 2022/01/31

[ruby-core:106937] [Ruby master Bug#18453] YJIT breaks Rails collection caching

From: "alanwu (Alan Wu)" <noreply@...>
Date: 2022-01-01 06:58:04 UTC
List: ruby-core #106937
Issue #18453 has been updated by alanwu (Alan Wu).


Thank you for such a comprehensive bug report!

----------------------------------------
Bug #18453: YJIT breaks Rails collection caching
https://bugs.ruby-lang.org/issues/18453#change-95760

* Author: georgeclaghorn (George Claghorn)
* Status: Closed
* Priority: Normal
* Assignee: jhawthorn (John Hawthorn)
* ruby -v: ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) +YJIT [x86_64-linux]
* Backport: 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: REQUIRED
----------------------------------------
A minimal app that demonstrates this issue is available [on GitHub](https://github.com/georgeclaghorn/yjit-rails-collection-caching-bug). It has:
* One model, `Post`, with a string `title` attribute.
* One controller action, `posts#index`, which fetches `Post`s in reverse order of creation into `@posts`.
* A root route to `posts#index`.
* One view, `app/views/posts/index.html.erb`, which uses Rails collection rendering and caching as follows:
  
```erb
<ul>
  <li><%= render partial: "posts/post", collection: @posts, cached: true %></li>
</ul>
```

* A partial, `app/views/posts/_post.html.erb` as follows:

```erb
<% cache post do %>
  <li><%= post.title %></li>
<% end %>
```

I deployed this app to Heroku [here](https://yjit-rails-caching-bug.herokuapp.com). I configured it to use a Redis cache store.

I added 100 posts like so:

```ruby
$ heroku run rails c
> 100.times do |i|
*    Post.create! title: "Post ##{i + 1}"
* end
```

All requests to the app index, `/`, show the posts in reverse chronological order as expected, with cold and warm cache:

```
* Post #100 
* Post #99
* Post #98
* Post #97
* Post #96
* Post #95
...
```
 
I enabled YJIT by setting the `RUBYOPT` environment variable to `--yjit --yjit-exec-mem-size=32` and restarted the app server. I cleared the Redis cache with `heroku run rails r 'Rails.cache.redis.flushall`.

The first request to `/` with cold cache begins repeating Post #1 after #92:

```
* Post #100
* Post #99
* Post #98
* Post #97
* Post #96
* Post #95
* Post #94
* Post #93
* Post #92
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
...
```

All subsequent requests repeat Post #1 100 times:

```
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
...
```

On restart, Post #1 is repeated after #92 for the first request (as in the second-to-last example). Post #1 is repeated 100 times for subsequent requests (as in the last example).

Disabling YJIT and flushing the Redis cache restores the correct behavior.

**Rails version:** GitHub `rails/rails`, `7-0-stable` branch, revision `499f12f6c03a4114eb649310e65200fe5d894db0`



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread