[ruby-core:102719] [Ruby master Bug#17652] GC compaction crash on mprotect
From:
peter@...
Date:
2021-03-02 15:44:21 UTC
List:
ruby-core #102719
Issue #17652 has been updated by peterzhu2118 (Peter Zhu).
Thanks for reporting the issue in cygwin. I've [proposed a patch](https://github.com/ruby/ruby/pull/4235) that should solve the issue.
----------------------------------------
Bug #17652: GC compaction crash on mprotect
https://bugs.ruby-lang.org/issues/17652#change-90715
* Author: peterzhu2118 (Peter Zhu)
* Status: Open
* Priority: Normal
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
# GitHub PR: ~~https://github.com/ruby/ruby/pull/4221~~ https://github.com/ruby/ruby/pull/4227
# Issue
GC compaction will crash on some pages due to a failing `mprotect` call. According to the `mprotect` documentation:
> POSIX says that the behavior of mprotect() is unspecified if it is applied to a region of memory that was not obtained via mmap(2).
This causes `mprotect` to sometimes fail.
# Reproduction
```ruby
GC.auto_compact = true
times = 20_000_000
arr = Array.new(times)
times.times do |i|
arr[i] = "#{i}"
end
arr = Array.new(1_000_000, 42)
GC.start
puts "ok"
```
# Expected output
Program runs and prints "ok".
# Actual output
Crashes on Ubuntu 18.04. See `crash.log` for the crash log (note that the log file has been truncated because it's too big).
---Files--------------------------------
crash.log (6.26 KB)
ruby-cygwin-rb_aligned_malloc.patch (840 Bytes)
--
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>