Bug #5901
OpenBSD "[FATAL] failed to allocate memory"
| Status: | Closed | Start date: | 01/17/2012 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 100% |
||
| Category: | - | |||
| Target version: | - | |||
| ruby -v: | ruby 2.0.0dev (2012-01-16 trunk 34316) [x86_64-openbsd5.0] |
Description
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.
Related issues
Associated revisions
History
Updated by kosaki (Motohiro KOSAKI) 4 months ago
Updated by naruse (Yui NARUSE) 4 months ago
- Status changed from Open to Assigned
- Assignee set to authorNari (Narihiro Nakamura)
Updated by kernigh (George Koehler) 4 months ago
Updated by authorNari (Narihiro Nakamura) 4 months ago
Updated by kernigh (George Koehler) 4 months ago
- File smaller-heap-3.diff added
Updated by authorNari (Narihiro Nakamura) 4 months ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100