{"slug": "valgrind", "name": "Valgrind", "category": "other", "category_name": "Other software", "description": "", "recommenders": 4, "commenters": 10, "warners": 1, "score": 3.799, "rising": 0.02, "first": "2025-11-02", "latest": "2026-10-13", "why": "It's a really brilliant way to visualise what heap structures are using memory in C programs.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 4, "compare": 1, "warn": 1}, "spark": [1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "It's a really brilliant way to visualise what heap structures are using memory in C programs.", "kind": "", "icon": true, "domain": "valgrind.org", "github_repo": null, "official_url": "https://valgrind.org/", "pricing": "", "aliases": ["Valgrind"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 801168736, "item_id": 50073046, "url": "https://news.ycombinator.com/item?id=50073046", "by": "bayindirh", "date": "2026-10-13", "stance": "recommend", "quote": "that code will be tortured under valgrind. That\u2019s non-negotiable in my book.", "excerpt": "Personally I love to use smart pointers where bleeding edge performance is not necessary. If I need the absolute fastest code, then that code will be tortured under valgrind. That\u2019s non-negotiable in my book. Code is not done until its memory management is proven correct.", "context": "", "use_case": "verifying memory management", "switched_from": "", "story": "11 year old unsoundness bugs found in Rust borrow checker"}, {"id": 747349472, "item_id": 46709342, "url": "https://news.ycombinator.com/item?id=46709342", "by": "rwmj", "date": "2026-01-21", "stance": "recommend", "quote": "It's a really brilliant way to visualise what heap structures are using memory in C programs.", "excerpt": "I'm surprised Daniel didn't use valgrind's massif tool for this. It's a really brilliant way to visualise what heap structures are using memory in C programs. https://valgrind.org/docs/manual/ms-manual.html Here's the output of massif from the curl command that is used in the posting: http://oirase.annexia.org/curl-8.18.0-massif.txt", "context": "", "use_case": "heap memory profiling", "switched_from": "", "story": "libcurl memory use some years later"}, {"id": 743493729, "item_id": 46468358, "url": "https://news.ycombinator.com/item?id=46468358", "by": "mmastrac", "date": "2026-01-02", "stance": "recommend", "quote": "Miri, Valgrid and the LLVM sanitizers all compliment each other and it's really worth adding all of them to a project if you can.", "excerpt": "I used Miri for some key deno libraries and spent a fair bit of time cleaning up the violations. Many of them were real unsoundness bugs due to reference aliasing. Unsafe code absolutely needs Miri if the code paths are testable. If not all code is Miri-compatible, it's worth restructuring it so you can Miri test as much as possible. Note that Miri, Valgrid and the LLVM sanitizers all compliment each other and it's r", "context": "worked on deno libraries", "use_case": "memory error detection", "switched_from": "", "story": "Miri: Practical Undefined Behavior Detection for Rust [pdf]"}, {"id": 735389761, "item_id": 45961860, "url": "https://news.ycombinator.com/item?id=45961860", "by": "lelanthran", "date": "2025-11-17", "stance": "recommend", "quote": "thankfully, using valgrind, then sanitisers in my build/test step makes this a very low priority for me.", "excerpt": "> Bad Unicode support. Lack of cross platform system libraries. Needing to deal with CMake / autotools / whatever. Poor error handling. No built in string, list or map types. No generics. Nullability. No sum types. No option, tuples or multi returns. Generally worse IDE support than a lot of languages. No good 3rd party package ecosystem. The modern idiocy of header files. Memory bugs. Debugging memory corruption bug", "context": "", "use_case": "", "switched_from": "", "story": "Giving C a superpower: custom header file (safe_c.h)"}, {"id": 732636177, "item_id": 45789761, "url": "https://news.ycombinator.com/item?id=45789761", "by": "paulf38", "date": "2025-11-02", "stance": "recommend", "quote": "Valgrind does need a lot of work, especially for missing CPU features and for Darwin.", "excerpt": "TBH most \u201cfalse positives\u201d that I investigate are wishful thinking or the result of ignorance of what is really happening. It looks like you are using Debian. That probably doesn\u2019t help. Here is a typical Debian \u201cbug\u201d report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802778 10 years old. It never was a false positive. It was fixed a good few years ago. The fix did not involve suppressing the error. Valgrind d", "context": "", "use_case": "", "switched_from": "", "story": "Hard Rust requirements from May onward"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 755810496, "item_id": 47238156, "url": "https://news.ycombinator.com/item?id=47238156", "by": "bmenrigh", "date": "2026-03-03", "stance": "warn", "quote": "the lack of Valgrind support for many of the AVX512 instructions frustrates me almost daily", "excerpt": "I love the AVX512 support in Zen 5 but the lack of Valgrind support for many of the AVX512 instructions frustrates me almost daily. I have to maintain a separate environment for compiling and testing because of it.", "context": "", "use_case": "memory debugging", "switched_from": "", "story": "Intel's make-or-break 18A process node debuts for data center with 288-core Xeon"}]}], "who": [{"by": "mmastrac", "context": "worked on deno libraries", "url": "https://news.ycombinator.com/item?id=46468358", "date": "2026-01-02"}], "tags": [], "use_cases": ["memory error detection", "verifying memory management", "detecting memory unsafety", "memory debugging", "monitoring document viewers", "heap memory profiling"], "compared": [{"slug": "miri", "name": "Miri", "co": 3, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 772119216, "item_id": 48257451, "url": "https://news.ycombinator.com/item?id=48257451", "by": "paulf38", "date": "2026-05-24", "stance": "neutral", "quote": "I dabble a little bit on arm64", "excerpt": "\"some community effort\" is a huge understatement. Let me rephrase that for you: \"Possibly the largest ever single contribution to Valgrind\". Initial work on this was started by an engineer at Intel. She was based in St Petersburg so that work stalled in 2022. Here is the bugzilla item https://bugs.kde.org/show_bug.cgi?id=383010. The other big issue is that we don't have enough people working on Valgrind that are expe", "context": "", "use_case": "Virtual CPU emulation", "switched_from": "", "story": "Converting an Integer to a Decimal String in Under Two Nanoseconds"}, {"id": 765033136, "item_id": 47814571, "url": "https://news.ycombinator.com/item?id=47814571", "by": "paulf38", "date": "2026-04-18", "stance": "recommend", "quote": "Please give it a try in configurations that are important for you and report any problems you have", "excerpt": "3.27.0 RC2 is now out. An RC2 tarball for 3.27.0 is now available at https://sourceware.org/pub/valgrind/valgrind-3.27.0.RC2.tar.bz2 (md5sum = 64b955764abeb80fd3e0b6287e596750) (sha1sum = a52b15d2f75619762fb1c5007e7c2c26d7e3711e) https://sourceware.org/pub/valgrind/valgrind-3.27.0.RC2.tar.bz2.asc Public keys can be found at https://www.klomp.org/mark/gnupg-pub.txt Please give it a try in configurations that are impor", "context": "", "use_case": "memory debugging", "switched_from": "", "story": "Valgrind 3.27 RC1 is out"}], "threads": [{"url": "https://news.ycombinator.com/item?id=50069499", "title": "11 year old unsoundness bugs found in Rust borrow checker", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48933149", "title": "How Our Rust-to-Zig Rewrite Is Going", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48510046", "title": "Twenty One Zero-Days in FFmpeg", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48194857", "title": "Converting an Integer to a Decimal String in Under Two Nanoseconds", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47763041", "title": "Valgrind 3.27 RC1 is out", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47236958", "title": "Intel's make-or-break 18A process node debuts for data center with 288-core Xeon", "mentions": 1}], "sentiment_by_month": {"2025-11": {"compare": 1, "neutral": 1, "recommend": 1}, "2025-12": {}, "2026-01": {"recommend": 2, "neutral": 1}, "2026-02": {}, "2026-03": {"warn": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {"neutral": 1}, "2026-07": {"neutral": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {"recommend": 1}}, "quotes": [{"id": 801168736, "item_id": 50073046, "url": "https://news.ycombinator.com/item?id=50073046", "by": "bayindirh", "date": "2026-10-13", "stance": "recommend", "quote": "that code will be tortured under valgrind. That\u2019s non-negotiable in my book.", "excerpt": "Personally I love to use smart pointers where bleeding edge performance is not necessary. If I need the absolute fastest code, then that code will be tortured under valgrind. That\u2019s non-negotiable in my book. Code is not done until its memory management is proven correct.", "context": "", "use_case": "verifying memory management", "switched_from": "", "story": "11 year old unsoundness bugs found in Rust borrow checker"}, {"id": 783073905, "item_id": 48942119, "url": "https://news.ycombinator.com/item?id=48942119", "by": "maybebug", "date": "2026-07-16", "stance": "neutral", "quote": "usage of Miri and Valgrind", "excerpt": "Memory safe languages, where usage of Miri and Valgrind (tools to for instance debug memory unsafety) are common and integrated into CI for some of the projects in the language. Even some Rust guides encourages running Miri in CI https://microsoft.github.io/RustTraining/engineering-book/ch05-miri-valgrind-and-sanitizers-verifying-u.html . Searching on GitHub yields a lot of projects that run Miri in CI. And there hav", "context": "", "use_case": "Detecting memory unsafety", "switched_from": "", "story": "How Our Rust-to-Zig Rewrite Is Going"}, {"id": 776493792, "item_id": 48530862, "url": "https://news.ycombinator.com/item?id=48530862", "by": "pornel", "date": "2026-06-14", "stance": "neutral", "quote": "C's tools for this like Valgrind, instrumented allocators and LLVM sanitizers work with Rust too.", "excerpt": "Incremental/quantitative improvement isn't disproven by contradiction. Anecdote is not data. Look at a bigger dataset, e.g. https://github.com/rust-fuzz/trophy-case there's a ton of overflows that result in caught panics or OOMs, and not bypasses. It works to reduce defect rate and severity. Note that C's tools for this like Valgrind, instrumented allocators and LLVM sanitizers work with Rust too. Investment in catch", "context": "", "use_case": "Memory error detection", "switched_from": "", "story": "Twenty One Zero-Days in FFmpeg"}, {"id": 755810496, "item_id": 47238156, "url": "https://news.ycombinator.com/item?id=47238156", "by": "bmenrigh", "date": "2026-03-03", "stance": "warn", "quote": "the lack of Valgrind support for many of the AVX512 instructions frustrates me almost daily", "excerpt": "I love the AVX512 support in Zen 5 but the lack of Valgrind support for many of the AVX512 instructions frustrates me almost daily. I have to maintain a separate environment for compiling and testing because of it.", "context": "", "use_case": "memory debugging", "switched_from": "", "story": "Intel's make-or-break 18A process node debuts for data center with 288-core Xeon"}, {"id": 747453921, "item_id": 46715870, "url": "https://news.ycombinator.com/item?id=46715870", "by": "nullc", "date": "2026-01-21", "stance": "neutral", "quote": "while running the tools (e.g. evince) in valgrind", "excerpt": "To review documents received from a hostile and dishonest actor in litigation I used disposable VMs in qubes on a computer with a one way (in only) network connection[1], while running the tools (e.g. evince) in valgrind and with another terminal watching attempted network traffic (an approach that did detect attempted network callbacks from some documents but I don't think any were PDFs). This would have been useful", "context": "", "use_case": "monitoring document viewers", "switched_from": "", "story": "Take potentially dangerous PDFs, and convert them to safe PDFs"}, {"id": 747349472, "item_id": 46709342, "url": "https://news.ycombinator.com/item?id=46709342", "by": "rwmj", "date": "2026-01-21", "stance": "recommend", "quote": "It's a really brilliant way to visualise what heap structures are using memory in C programs.", "excerpt": "I'm surprised Daniel didn't use valgrind's massif tool for this. It's a really brilliant way to visualise what heap structures are using memory in C programs. https://valgrind.org/docs/manual/ms-manual.html Here's the output of massif from the curl command that is used in the posting: http://oirase.annexia.org/curl-8.18.0-massif.txt", "context": "", "use_case": "heap memory profiling", "switched_from": "", "story": "libcurl memory use some years later"}, {"id": 743493729, "item_id": 46468358, "url": "https://news.ycombinator.com/item?id=46468358", "by": "mmastrac", "date": "2026-01-02", "stance": "recommend", "quote": "Miri, Valgrid and the LLVM sanitizers all compliment each other and it's really worth adding all of them to a project if you can.", "excerpt": "I used Miri for some key deno libraries and spent a fair bit of time cleaning up the violations. Many of them were real unsoundness bugs due to reference aliasing. Unsafe code absolutely needs Miri if the code paths are testable. If not all code is Miri-compatible, it's worth restructuring it so you can Miri test as much as possible. Note that Miri, Valgrid and the LLVM sanitizers all compliment each other and it's r", "context": "worked on deno libraries", "use_case": "memory error detection", "switched_from": "", "story": "Miri: Practical Undefined Behavior Detection for Rust [pdf]"}, {"id": 735389761, "item_id": 45961860, "url": "https://news.ycombinator.com/item?id=45961860", "by": "lelanthran", "date": "2025-11-17", "stance": "recommend", "quote": "thankfully, using valgrind, then sanitisers in my build/test step makes this a very low priority for me.", "excerpt": "> Bad Unicode support. Lack of cross platform system libraries. Needing to deal with CMake / autotools / whatever. Poor error handling. No built in string, list or map types. No generics. Nullability. No sum types. No option, tuples or multi returns. Generally worse IDE support than a lot of languages. No good 3rd party package ecosystem. The modern idiocy of header files. Memory bugs. Debugging memory corruption bug", "context": "", "use_case": "", "switched_from": "", "story": "Giving C a superpower: custom header file (safe_c.h)"}, {"id": 732921216, "item_id": 45807576, "url": "https://news.ycombinator.com/item?id=45807576", "by": "nynrathod", "date": "2025-11-03", "stance": "neutral", "quote": "valgrind memory leak", "excerpt": "Saying safe will be too early, but design philosophy is no compromise with security and speed with easy syntax. It passed with 550+ test cases including unit test, memory stress, integration, circular dep, regresssion, valgrind memory leak, fuzz testing, also i added conservative limits max depth for recursion and data length for stability. Find here https://github.com/nynrathod/doolang/blob/main/src/limits.rs Doolan", "context": "", "use_case": "memory leak testing", "switched_from": "", "story": "Doo: A Simple, Fast Programming Language Built on Rust and LLVM"}, {"id": 732715586, "item_id": 45794724, "url": "https://news.ycombinator.com/item?id=45794724", "by": "phire", "date": "2025-11-02", "stance": "compare", "quote": "", "excerpt": "Yeah, it panics when you use after free. [1] But I'm not sure it's worth porting your code to Fil-C just to get that property. Because Fil-C still needs to track the memory allocation with its garbage collector. there isn't much advantage to even calling free. If you don't have a use-after-free bug, then it's just adding the overhead of marking the allocation as freed. And if you do have a use-after-free bug, you mig", "context": "", "use_case": "", "switched_from": "", "story": "Notes by djb on using Fil-C"}, {"id": 732636177, "item_id": 45789761, "url": "https://news.ycombinator.com/item?id=45789761", "by": "paulf38", "date": "2025-11-02", "stance": "recommend", "quote": "Valgrind does need a lot of work, especially for missing CPU features and for Darwin.", "excerpt": "TBH most \u201cfalse positives\u201d that I investigate are wishful thinking or the result of ignorance of what is really happening. It looks like you are using Debian. That probably doesn\u2019t help. Here is a typical Debian \u201cbug\u201d report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802778 10 years old. It never was a false positive. It was fixed a good few years ago. The fix did not involve suppressing the error. Valgrind d", "context": "", "use_case": "", "switched_from": "", "story": "Hard Rust requirements from May onward"}]}