mirror of
https://github.com/NixOS/nix.git
synced 2025-11-09 20:16:03 +01:00
This fixes a segfault on infinite function call recursion (rather than
infinite thunk recursion) by tracking the function call depth in
`EvalState`.
Additionally, to avoid printing extremely long stack traces, stack
frames are now deduplicated, with a `(19997 duplicate traces omitted)`
message. This should only really be triggered in infinite recursion
scenarios.
Before:
$ nix-instantiate --eval --expr '(x: x x) (x: x x)'
Segmentation fault: 11
After:
$ nix-instantiate --eval --expr '(x: x x) (x: x x)'
error: stack overflow
at «string»:1:14:
1| (x: x x) (x: x x)
| ^
$ nix-instantiate --eval --expr '(x: x x) (x: x x)' --show-trace
error:
… from call site
at «string»:1:1:
1| (x: x x) (x: x x)
| ^
… while calling anonymous lambda
at «string»:1:2:
1| (x: x x) (x: x x)
| ^
… from call site
at «string»:1:5:
1| (x: x x) (x: x x)
| ^
… while calling anonymous lambda
at «string»:1:11:
1| (x: x x) (x: x x)
| ^
… from call site
at «string»:1:14:
1| (x: x x) (x: x x)
| ^
(19997 duplicate traces omitted)
error: stack overflow
at «string»:1:14:
1| (x: x x) (x: x x)
| ^
|
||
|---|---|---|
| .. | ||
| rl-next | ||
| src | ||
| theme | ||
| _redirects | ||
| anchors.jq | ||
| book.toml | ||
| custom.css | ||
| generate-builtin-constants.nix | ||
| generate-builtins.nix | ||
| generate-manpage.nix | ||
| generate-settings.nix | ||
| generate-store-info.nix | ||
| generate-store-types.nix | ||
| generate-xp-features-shortlist.nix | ||
| generate-xp-features.nix | ||
| local.mk | ||
| quote-literals.xsl | ||
| redirects.js | ||
| utils.nix | ||