[Nix-dev] Haskell packages in the binary cache broken?

Karn Kallio tierpluspluslists at skami.org
Mon May 27 18:02:30 CEST 2013


> I don't know 
> where the non-determinism comes from, but if they just use a random 
> generator, it would be enough to seed it e.g. from the hash of $out 
> instead of the standard sources.

As I understand, GHC has many uses of unsafeInterleaveIO in its 
implementation, so the order of effects such as the generation of fresh names 
will depend on how the IO manager schedules evaluation of those thunks, which 
could depend on eg time for receiving a filesystem response, which may depend 
on installed hardware (eg amount of RAM for filesystem buffer) and state of 
the machine (eg how many other processes are using IO at the moment).  So the 
nondeterminism arises not via a controlled mechanism like a random generator 
but from races influenced by the configuration and state of the wider machine.



More information about the nix-dev mailing list