Я хочу установить HLint с помощью cabal в HardenedBSD (cabal install HLint
), но он запускает какую-то ошибку памяти:
cabal install HLint
...
ghc: mmap 131072 bytes at 0x0: Operation not permitted
Я попытался добавить пространство подкачки, но это не слишком хорошо работает.
sudo dd if=/dev/zero of=/usr/cabal-swap bs=1m count=4k &&
sudo chmod 0600 /usr/cabal-swap &&
sudo sh -c "echo 'md99 none swap sw,file=/usr/cabal-swap,late 0 0' >>/etc/fstab" &&
sudo swapon -aL
Как ни странно, часть swapon -aL
выходит из состояния 1, даже если она печатает swapon: adding /dev/md99 as swap device
. Кроме того, swapctl (на мой взгляд, для начинающих) указывает на то, что этот раздел подкачки был достаточно активирован:
$ swapctl -l
Device: 1024-blocks Used:
/dev/ada0s1b 655324 0
/dev/md99 4194304 0
Я не совсем уверен, правильно ли я настроил своп. Когда я запускаю top
для мониторинга cabal/ghc во время cabal install HLint
, top показывает, что доступно 4 ГБ пространства подкачки, но, похоже, что подкачка никогда не используется на самом деле. В конце концов Cabal умирает из-за ошибок mmap
во время компиляции библиотек haskell-src-exts, uniplate или aeson Haskell из-за ошибок в ghc, и HardenedBSD никогда не использовал своп.
Я неправильно настраиваю своп? Есть ли способ заставить HardenedBSD поменяться более активно?
Это начинает выглядеть как ошибка в GHC, в частности порт HardenedBSD. Перенос обсуждения на https://ghc.haskell.org/trac/ghc/ticket/14988.