From: Yui NARUSE <naruse@...>
Date: 2012-01-23T15:30:48+09:00
Subject: [ruby-core:42219] [ruby-trunk - Bug #5901][Assigned] OpenBSD "[FATAL] failed to allocate memory"


Issue #5901 has been updated by Yui NARUSE.

Status changed from Open to Assigned
Assignee set to Narihiro Nakamura


----------------------------------------
Bug #5901: OpenBSD "[FATAL] failed to allocate memory"
https://bugs.ruby-lang.org/issues/5901

Author: George Koehler
Status: Assigned
Priority: Normal
Assignee: Narihiro Nakamura
Category: 
Target version: 
ruby -v: ruby 2.0.0dev (2012-01-16 trunk 34316) [x86_64-openbsd5.0]


=begin
Ruby trunk fails to build with OpenBSD. During the build, miniruby fails with message
 [FATAL] failed to allocate memory

OpenBSD has a broken posix_memalign(). Ruby fails in gc.c, because posix_memalign() fails and aligned_malloc() returns NULL. OpenBSD's manual for posix_memalign ((<URL:http://xrl.us/bmow7c>)) says:

 BUGS
      Only alignments up to the page size can be specified.

Ruby wants alignment of 16 kilobytes, but my page size is only 4 kilobytes.

I tried to edit gc.c. My first attempt (bad-fix-never-apply.diff) was good enough to build Ruby, but it did not always work, and some tests failed. So I reverted gc.c and tried again.

My second attempt (smaller-heap-for-openbsd.diff) was much simpler. I changed the values of HEAP_ALIGN*, shrinking the heap size from 16 kilobytes to 4 kilobytes, which is not larger than my page size. More tests pass. The only failures in 'make test' are in bootstraptest/test_thread.rb. Those tests seem to create an infinite loop in Ruby, and I needed to kill -9 those processes. Some tests in 'make test-all' failed the same way, with the infinite loop.
=end



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