hercules-ci / hercules-ci-agent

https://hercules-ci.com build and deployment agent
Apache License 2.0
97 stars 19 forks source link

nix::Interrupted on darwin/macOS #231

Open roberth opened 4 years ago

roberth commented 4 years ago

Description

I'm getting a nix::Interrupted exception on a darwin agent.

To Reproduce

Launch hercules-ci-agent manually. Terminate it with SIGTERM. Agent process remains. Next build exits with nix::Interrupted exception.

Expected behavior

Agent process exits.

Logs

No log entries about shutdown, just the exception. It seems like nix handles the signal and we need to hook into it somehow.

Platform / Version

Best to go to https://hercules-ci.com/dashboard and click on the agents' tab for the account you're interested in. hercules-ci-agent --help version

roberth commented 2 years ago

Since Nix 2.4 and/or aarch64-darwin, but possibly earlier, C++ exceptions relating to certain misconfigurations manifest as -6 exit statuses (aborted).

dhess commented 2 years ago

Any idea what causes this? We're re-evaluating Hercules CI and I'm running into this -6 issue on practically every single aarch64-darwin job. It's 100% reproducible and happens on two different machines. The builders are running nixpkgs-unstable (1dd151f0c0c216f416e9553af08f724a2499c795) and 81ad6448f41367c8ec89ee541df54419b24f4c53 via a flake.

roberth commented 2 years ago

Could you deploy the troubleshooting branch?

dhess commented 2 years ago

Done:

[2021-12-23 14:25:20][][Info][jobs][PID 14319][ThreadId 40][task:666f2d82-3fb8-4164-bbb3-56094d7b7243][agent-version:0.8.4][main:Hercules.Agent hercules-ci-agent/Hercules/Agent.hs:192:7] Starting task
[2021-12-23 14:25:25][][Info][jobs][PID 14319][ThreadId 41][task:666f2d82-3fb8-4164-bbb3-56094d7b7243][worker:14458][agent-version:0.8.4][main:Hercules.Agent.Log hercules-ci-agent/Hercules/Agent/Log.hs:42:5] Builder: libc++abi: terminating with uncaught exception of type nix::Error: error: path '/nix/store/4fp2ig6403rw9lrfzz1myqxicsz85vfg-aws-sam-cli-1.23.0.tar.gz.drv' does not exist and cannot be created
[2021-12-23 14:25:25][][Error][jobs][PID 14319][ThreadId 40][exception:FatalError {fatalErrorMessage = "Worker failed: ExitFailure (-6)"}][task:666f2d82-3fb8-4164-bbb3-56094d7b7243][message:FatalError {fatalErrorMessage = "Worker failed: ExitFailure (-6)"}][agent-version:0.8.4][main:Hercules.Agent hercules-ci-agent/Hercules/Agent.hs:181:11] Exception in task

This looks similar to #314, just with a different error code?

dhess commented 2 years ago

Here's the log I get for the issue I'm having with #314 on our x86_64-darwin builders, now that I've deployed the troubleshooting branch on those builders:

   0.013 downloading 'https://hercules-ci.cachix.org/nix-cache-info'
   0.174 querying info about missing paths
   0.181 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
   0.181 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   0.327 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   0.327 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   0.497 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   0.635 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
   0.635 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   0.823 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   0.823 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   0.935 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
   0.935 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   1.102 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
   1.102 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   1.303 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   1.303 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   1.411 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   1.443 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
   1.443 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   1.617 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   1.617 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   1.717 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
   1.717 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   1.885 ignoring exception during drv lookup in daemon: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
   1.885 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.021 querying info about missing paths
   2.021 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.115 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.214 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
   2.214 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.308 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   2.308 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.461 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   2.598 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
   2.598 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.776 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   2.776 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   2.885 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
   2.885 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.059 ignoring exception during drv lookup in https://cache.nixos.org: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
   3.059 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.181 querying info about missing paths
   3.181 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.291 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.402 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
   3.402 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.550 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   3.550 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.653 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   3.685 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
   3.685 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.859 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   3.859 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   3.961 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
   3.961 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   4.127 ignoring exception during drv lookup in https://hackworthltd.cachix.org: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
   4.127 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   4.157 querying info about missing paths
   4.157 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   4.192 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   4.223 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
   4.223 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   4.381 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   4.381 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   4.498 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   4.531 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
   4.531 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   4.717 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   4.717 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.053 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
   7.053 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.198 ignoring exception during drv lookup in s3://hackworth-nix-cache: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
   7.198 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.238 querying info about missing paths
   7.238 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.280 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.321 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
   7.321 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.473 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   7.473 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.624 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
   7.652 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
   7.652 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.692 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
   7.692 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   7.801 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
   7.801 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   8.028 ignoring exception during drv lookup in https://hydra.iohk.io: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
   8.028 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   8.138 querying info about missing paths
   8.138 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
   8.254 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  14.523 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
  14.523 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  14.659 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
  14.659 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  14.914 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
  15.042 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
  15.042 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  15.169 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
  15.169 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  15.435 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
  15.435 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  15.576 ignoring exception during drv lookup in https://hackworthltd.cachix.org: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
  15.576 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  15.684 querying info about missing paths
  15.684 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  15.794 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  15.893 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://cache.nixos.org'
  15.894 downloading 'https://cache.nixos.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  16.063 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
  16.063 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  16.330 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 's3://hackworth-nix-cache'
  16.360 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hydra.iohk.io'
  16.360 downloading 'https://hydra.iohk.io/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  16.538 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hackworthltd.cachix.org'
  16.538 downloading 'https://hackworthltd.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  16.791 querying info about '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' on 'https://hercules-ci.cachix.org'
  16.791 downloading 'https://hercules-ci.cachix.org/6a0syh00vimpdrccnq9n210c5bbinqs1.narinfo'
  16.946 ignoring exception during drv lookup in https://hercules-ci.cachix.org: error: path '/nix/store/6a0syh00vimpdrccnq9n210c5bbinqs1-source.drv' does not exist and cannot be created
dhess commented 2 years ago

Since this seems to be a configuration issue, maybe it would be helpful to review our binary cache configuration.

Previously, the /etc/nix/nix.conf looked like this on all of our remote builders:

# WARNING: this file is generated from the nix.* options in
# your NixOS configuration, typically
# /etc/nixos/configuration.nix.  Do not edit it!
build-users-group = nixbld

max-jobs = 4
cores = 2
sandbox = false

substituters = https://cache.nixos.org?priority=10 s3://hackworth-nix-cache?region=eu-west-1&priority=20 https://hydra.iohk.io?priority=30
trusted-substituters = 
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.hackworth-corp.com-1:uLc3Th8lJtfvFAFLqdzRZWEwIk98gAitd5XrDr3Q8SY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=
require-sigs = true
trusted-users = remote-builder @admin
allowed-users = *
# A store path that was missing at first may well have finished building,
# even shortly after the previous lookup. This *also* applies to the daemon.
narinfo-cache-negative-ttl = 0

experimental-features = nix-command flakes

Up until yesterday, we were only building using Hydra, and Hydra was pushing everything to our private S3 binary cache (the s3://hackworth-nix-cache?region=eu-west-1 cache in the config above). This setup has been working flawlessly for several years now.

Yesterday, I created a new Cachix public cache, installed the Hercules CI agent on our builders, and configured Hercules CI to write to the Cachix public cache. For the moment, our Hydra doesn't know anything about this new Cachix public cache.

Now our remote builders' /etc/nix/nix.conf looks like this:

# WARNING: this file is generated from the nix.* options in
# your NixOS configuration, typically
# /etc/nixos/configuration.nix.  Do not edit it!
build-users-group = nixbld

max-jobs = 4
cores = 2
sandbox = false

substituters = https://cache.nixos.org?priority=10 https://hackworthltd.cachix.org?priority=20 s3://hackworth-nix-cache?region=eu-west-1&priority=30 https://hydra.iohk.io?priority=40 https://hercules-ci.cachix.org?priority=50
trusted-substituters = 
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hackworthltd.cachix.org-1:0JTCI0qDo2J+tonOalrSQP3yRNleN6bQucJ05yDltRI= hydra.hackworth-corp.com-1:uLc3Th8lJtfvFAFLqdzRZWEwIk98gAitd5XrDr3Q8SY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= hercules-ci.cachix.org-1:ZZeDl9Va+xe9j+KqdzoBZMFJHVQ42Uu/c/1/KMC5Lw0=
require-sigs = true
trusted-users = hercules-ci-agent remote-builder @admin
allowed-users = *
# A store path that was missing at first may well have finished building,
# even shortly after the previous lookup. This *also* applies to the daemon.
narinfo-cache-negative-ttl = 0

experimental-features = nix-command flakes

The new Cachix public cache is https://hackworthltd.cachix.org.

The binary-caches.json config for our Hercules CI agents looks like this:

{ "hackworthltd":
  { "kind": "CachixCache"
  , "authToken": "<redacted>"
  , "publicKeys": ["hackworthltd.cachix.org-1:0JTCI0qDo2J+tonOalrSQP3yRNleN6bQucJ05yDltRI="]
  }
}

Per my note in https://github.com/hercules-ci/hercules-ci-agent/issues/314#issuecomment-1000268100, I've also granted read-only access to hercules-ci-agent for s3://hackworth-nix-cache?region=eu-west-1, via ~hercules-ci-agent/.aws/credentials, for the cases where it wants to read things directly from the binary caches.

The Cachix cache is being populated by Hercules CI agent, and the x86_64-linux Hercules CI builds appear to be working fine. It's just the macOS builds that are failing with these not-found errors.

Do you see anything obviously wrong with the configuration?

dhess commented 2 years ago

One potential difference between x86_64-linux and our macOS builders is that there's only one x86_64-linux builder, but multiple builders for each of x86_64-darwin and aarch64-darwin.

dhess commented 2 years ago

I'll also note that back in March 2021, we briefly evaluated Hercules CI on x86_64-darwin and x86_64-linux and we didn't have this issue at the time, so we have previously gotten it to work. We were not using Cachix then, however: I just granted the remote builders write access to our private S3 binary cache via binary-caches.json. I could try that now, but part of our CI re-evaluation is also whether we should switch from S3 to Cachix, so I'd rather stay focused on making this work with our new Cachix cache for now.

roberth commented 2 years ago

I've got a patch for a new flag accepted into GHC to fix C++ exception handling on darwin. This may improve matters, although I wasn't able to reproduce the exact behavior you've been seeing.