Sender | Message | Time |
---|---|---|
15 Aug 2025 | ||
(Not sure how someone gets these files without using nix itself but maybe that's by design :P ) | 16:02:29 | |
Interesting, locallynix build .#checks.x86_64-linux.nix-fetchers-tests-run passes but on CI it fails. > The program must call nix::initNix() before calling any libstore library functions. | 16:03:56 | |
Download image.png | 16:08:44 | |
Also, CLion to debug live Nix has been amazing; unfortunately the GoogleTest integration doesn't work -- doesn't seem to hydrate the "Target" | 16:08:45 | |
Yeah that's pretty unfortunate, but the order of tests matters. It means that locally there's a test that has initialized libstore already | 16:30:20 | |
Can't help here, since I don't have jetbrains stuff | 16:30:53 | |
You'd need to use the new nixComponents packaging. It makes it so you can use the libs without bringing the cli with them | 16:32:00 | |
ty for the answers! | 20:34:03 | |
i recommend the jetbrains stuff; having the gdb integrated debugger has made investigating issues 100x easier | 20:34:19 | |
I might invest in trying to get rr working too | 20:34:25 | |
16 Aug 2025 | ||
Does anyone have any recommended tooling for finding out what values are being kept around by the GC (as well as why they’re being kept around)? | 00:31:11 | |
nix-store --gc --print-roots | 04:53:02 | |
Sorry, I should have disambiguated -- Boehm GC | 04:54:09 | |
lol | 04:54:15 | |
oops | 04:54:20 | |
In reply to @connorbaker:matrix.orgIFAIK there isn’t a lot of tooling for this. Boehm has some stuff to collect stats, but other than that I imagine you’d have to write custom tools for that. | 06:57:23 | |
I’ll post a small reproducer tomorrow of unexpected behavior I’m seeing with respect to the GC not freeing memory when I think it should be able to; I’d love to hear people’s thoughts on what could be causing it! | 06:59:36 | |
Thank you for the PR shrinking the Value struct by the way, that was great! | 07:00:55 | |
In reply to @connorbaker:matrix.org That would be great to see. Honestly it’d be nice to actually hunker down and write the tooling that we need for GC debugging/visualization. Hit me up if you would like to work on that. How’s the Immer thing going btw? | 07:06:35 | |
In reply to @fzakaria:one.ems.hostTry raise(SIGTRAP); inside gtest | 12:12:05 | |
Or this https://github.com/nemequ/portable-snippets/blob/master/debug-trap/debug-trap.h | 12:13:10 | |
I've got a file
I ran nix eval by way of
and kept lowering the maximum GC size until it would OOM with a One thing which could be tested is to create a large expression in the same fashion, without using | 19:01:26 | |
I would also like such tooling, but I really don't like reading or writing C/C++ :( I've only ever read/written C/C++ in anger and I very much consider myself incompetent with C/C++ I haven't looked at or touched the Immer stuff in a long while; the biggest road blocks I saw to moving forward with it were:
I think 1. was being looked at by the author of Immer, not sure whether they ever got the chance to get into it; 2. and 5. should happen regardless as a code/project hygiene thing. Fundamentally I still think it's important we look at the data structures Nix offers, the ways in which those data structures are most commonly used, and implementations that make those operations fast :l | 19:20:50 | |
Well going by how lambda calculus is evaluated in general. The import will be evaluated anew for each N. So what id try is wrapping the genList with a map seq to force evaluation of each thunk explicitly and see if that helps | 19:32:44 | |
But tbh i have no clue how nix evals, im going by how GHC does things, kinda. Just my first idea when i read your message | 19:34:27 | |
There’s an import cache | 22:44:45 | |
In reply to @connorbaker:matrix.orgThe import is cached, but the function call is not. | 22:47:40 | |
Also IIRC using JSON output forces everything | 22:52:32 | |
Any ideas if the value storing the result of import applied to the path would be cached, or if the use of import is unrelated to what’s happening here, memory usage wise | 22:53:57 | |
you're instantiating numClosures Nixpkgs and none of them are garbage | 22:58:26 |