diff options
author | Adam Joseph <adam@westernsemico.com> | 2022-11-06 22:03:18 -0800 |
---|---|---|
committer | Adam Joseph <adam@westernsemico.com> | 2022-11-06 22:11:48 -0800 |
commit | 06ecc51368bb4181c313dd6fea1bc573b9b9a033 (patch) | |
tree | 76b21a11a2f02f8de494123596faf1dea94f0fba /pkgs/development/libraries/boehm-gc | |
parent | 34c4365854efb3bd47e4be041e2b5b235990524e (diff) | |
download | nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.tar nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.tar.gz nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.tar.bz2 nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.tar.lz nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.tar.xz nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.tar.zst nixpkgs-06ecc51368bb4181c313dd6fea1bc573b9b9a033.zip |
boehmgc: disable SOFT_VDB on powerpc64le for version 8.2.2
Upstream has not yet fixed the bug: https://github.com/ivmai/bdwgc/issues/376 https://github.com/ivmai/bdwgc/issues/479 However there is a recommended workaround: https://github.com/ivmai/bdwgc/issues/479#issuecomment-1279687537 This adds `CFLAGS_EXTRA=-DNO_SOFT_VDB` to the `makeFlags`, which prevents direct accesses to `/proc` being used for tracking dirtied pages (which must be rescanned): https://github.com/ivmai/bdwgc/blob/54522af853de28f45195044dadfd795c4e5942aa/include/private/gcconfig.h#L741 The collector will fall back to using mprotect() to trigger page faults on writes to clean pages and maintain its own dirty bits, which is slightly less efficient but (in this case) more reliable. Unreliable page-dirtiness bits can lead to use-after-free() corruption; this is not a situation where disabling the tests is a good idea.
Diffstat (limited to 'pkgs/development/libraries/boehm-gc')
-rw-r--r-- | pkgs/development/libraries/boehm-gc/default.nix | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/pkgs/development/libraries/boehm-gc/default.nix b/pkgs/development/libraries/boehm-gc/default.nix index 513ae50298e..1a5924fbf55 100644 --- a/pkgs/development/libraries/boehm-gc/default.nix +++ b/pkgs/development/libraries/boehm-gc/default.nix @@ -30,6 +30,17 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optional enableMmap "--enable-mmap" ++ lib.optional enableLargeConfig "--enable-large-config"; + # this stanza can be dropped when a release fixes this issue: + # https://github.com/ivmai/bdwgc/issues/376 + makeFlags = lib.optionals (stdenv.hostPlatform.isPower64 && + lib.versionAtLeast finalAttrs.version "8.2.2") + [ + # do not use /proc primitives to track dirty bits; see: + # https://github.com/ivmai/bdwgc/issues/479#issuecomment-1279687537 + # https://github.com/ivmai/bdwgc/blob/54522af853de28f45195044dadfd795c4e5942aa/include/private/gcconfig.h#L741 + "CFLAGS_EXTRA=-DNO_SOFT_VDB" + ]; + # `gctest` fails under emulation on aarch64-darwin doCheck = !(stdenv.isDarwin && stdenv.isx86_64); |