OS-3611: lx brand: 64-bit processes should not use VAs above VA hole

Resolution

Fixed: A fix for this issue is checked into the tree and tested.
(Resolution Date: 2014-12-10T17:13:15.000Z)

Description

Running hhvm results in a seg fault; running the hhvm debug packages results in an explicit assertion failure:

hhvm: /tmp/tmp.L3TQGSNX7g/hphp/runtime/base/static-string-table.cpp:46: HPHP::{anonymous}::StrInternKey HPHP::{anonymous}::make_intern_key(const StringSlice*): Assertion `ret < 0 && ret < kAhmMagicThreshold' failed.
Aborted (core dumped)

As it turns out, hhvm relies (implicitly) on the fact that pointers can never be negative on 64-bit -- which is true for Linux but not (by default) for us. To make programs work properly that have implicit dependencies on address space layout, we should match the Linux constraints and use only the region below the amd64 VA hole.

Comments

Comment by Bot Bot
Created at 2014-12-10T16:54:46.000Z

illumos-joyent commit 22a76dc (branch master, by Bryan Cantrill)

OS-3611 lx brand: 64-bit processes should not use VAs above VA hole