6 ms·
I wish I hadn't read this article because now I know that I've been mispronouncing Valgrind for nearly 20 years but I'm not going to stop. (Kidding. Thanks for
by cjbprime 4y ago
I wish I hadn't read this article because now I know that I've been mispronouncing Valgrind for nearly 20 years but I'm not going to stop.
(Kidding. Thanks for Valgrind! I still use it for assessing memory corruption vulnerabilities along with ASan.)
- dtgriscom 4y agoI've been promoting proper pronunciation of Valgrind at work, an am making passable progress...
- quickthrower2 4y agoValarie smiled. Is how I will remember it. That said I sometimes get the "V" tools mixed up (Vagrant, Valgrind, Varnish)
- galangalalgol 4y agoOur pipelines have asan ( and cpp check clang tidy coverity and coverage stuff) but no valgrind, is there something it is good at that we are missing?
- cjbprime 4y agoThe main reason for Valgrind would be if you're working with a binary that you can't recompile to add the ASAN instrumentation.
- Jason_Gibson 4y agoASAN on its own doesn't detect uninitialized memory. MSAN can, though. Valgrind is also more than just the memcheck sub-tool - there are others, like Cachegrind, which is a cache and branch-prediction profiler. https://github.com/google/sanitizers/wiki/AddressSanitizerComparisonOfMemoryTools https://github.com/google/sanitizers/wiki/AddressSanitizerCo... https://github.com/google/sanitizers/wiki/MemorySanitizer https://github.com/google/sanitizers/wiki/MemorySanitizer https://valgrind.org/docs/manual/manual.html https://valgrind.org/docs/manual/manual.html
- deleted 4y ago[deleted]
- glouwbug 4y agoYeah, valgrind can report L1/L2 cache misses and report the percentage of branch mispredictions. It also reports the exact number of instructions processed, and how many of those instructions cache missed. It's great for improving small code that needs to be performant. I'd use asan over valgrind only for memory leaks. It's faster.
- Sesse__ 4y agoIf you only want memory leaks, LSan will do that for you. In general, I tend to use ASan for nearly everything I used Valgrind for back in the day; it's faster and usually more precise (Valgrind cannot reliably detect small overflows between stack variables). Valgrind if I cannot recompile, or if ASan doesn't find th issue. Callgrind and Cachegrind never; perf does a much better job, much faster. DHAT never; Heaptrack gives me what I want. Valgrind was and is a fantastic tool; it became part of my standard toolkit together with the editor, compiler, debugger and build system. But technology has moved on for me.
- gpderetta 4y agoAmen. Between the various sanitizers and perf, I stopped needing valgrind a few years ago. But when it was the only option it was fantastically useful.
- themulticaster 4y agoIf I understand correctly valgrind (cachegrind) reports L1/L2 cache misses based on a simulated CPU/cache model. On Linux, you can easily instrument real cache events using the very powerful perf suite. There is an overwhelming number of events you can instrument (use perf-list(1) to show them), but a simple example could look like this: $ perf stat -d -- sh -c 'find ~ -type f -print | wc -l' ^Csh: Interrupt Performance counter stats for 'sh -c find ~ -type f -print | wc -l': 47,91 msec task-clock # 0,020 CPUs utilized 599 context-switches # 12,502 K/sec 81 cpu-migrations # 1,691 K/sec 569 page-faults # 11,876 K/sec 185.814.947 cycles # 3,878 GHz (28,71%) 105.650.405 instructions # 0,57 insn per cycle (46,15%) 22.991.322 branches # 479,863 M/sec (46,72%) 643.767 branch-misses # 2,80% of all branches (46,14%) 26.010.223 L1-dcache-loads # 542,871 M/sec (36,80%) 2.449.173 L1-dcache-load-misses # 9,42% of all L1-dcache accesses (29,62%) 517.052 LLC-loads # 10,792 M/sec (22,53%) 133.152 LLC-load-misses # 25,75% of all LL-cache accesses (16,02%) 2,403975646 seconds time elapsed 0,005972000 seconds user 0,046268000 seconds sys Ignore the command, it's just a placeholder to get meaningful values. The -d flag adds basic cache events, by adding another -d you also get load and load miss events for the dTLB, iTLB and L1i cache. But as mentioned, you can instrument any event supported by your system. Including very obscure events such as uops_executed.cycles_ge_2_uops_exec (Cycles where at least 2 uops were executed per-thread) or frontend_retired.latency_ge_2_bubbles_ge_2 (Retired instructions that are fetched after an interval where the front-end had at least 2 bubble-slots for a period of 2 cycles which was not interrupted by a back-end stall). You can also record data using perf-record(1) and inspect them using perf-report(1) or - my personal favorite - the Hotspot tool (https://github.com/KDAB/hotspot https://github.com/KDAB/hotspot). Sorry for hijacking the discussion a little, but I think perf is an awesome little tool and not as widely known as it should be. IMO, when using it as a profiler (perf-record), it is vastly superior to any language-specific built-in profiler. Unfortunately some languages (such as Python or Haskell) are not a good fit for profiling using perf instrumentation as their stack frame model does not quite map to the C model.
- gkfasdfasdf 4y agoIf your tests can take the performance hit, Valgrind would tell you about uninitialized memory reads, which isn't covered by those tools you mentioned. If however, you are able to add MSAN (i.e. able to rebuild the entire product, including dependencies, with -fsanitize=memory) to the pipeline, then you would have the same coverage as Valgrind.
- klyrs 4y agoI learned of the tool from a native German speaker who pronounced it wall-grinned, which is apparently half-right. Like latex, I can't keep the pronunciation straight from one sentence to the next.
- koolba 4y agoWhat other ways are there to (mis)pronounce it?
- meowface 4y agoPronouncing the "-grind" like the word "grind". I think that's probably how most English-speakers first assume it's pronounced.
- Buttons840 4y agoSafe to assume many pronounce grind as "grind".
- dahart 4y agoThere are so many amazing ways! ;) Since it’s an old Norse word, try using Google Translate to hear what happens in Danish, Dutch, German, Icelandic, Norwegian, and Swedish. I don’t know if it’s a modern word in those languages, but Translate is showing translations “election gate” for several languages, and “fall gravel” for Swedish. According to the audio pronunciations on Translate… Danish: “vale grint”, long a, hard tapped r, hard d sounds like t Dutch: sounds like “fall hint” but there’s a slight throaty r in there hard to hear for English speakers, so maybe “hrint” German: “val grinned”, val like value, grinned with the normal German r Icelandic: “vall grint”, vall like fall, hard tapped r Norwegian: “vall grin”, hard tapped r, almost “vall g’din”, silent or nearly silent d/t at the end. Swedish: “voll grint / g’dint”, hard tapped r, hard d German is the only one that has “Val” like “value”, all the rest sound more like “fall”. The word valgrind is the door to Valhalla, which means literally “fall hall”, as in hall of the fallen. For that reason, I suspect it makes the most sense to pronounce valgrind like “fall grinned”, but Old Norse might have used val like value, I’m not sure. BTW Valhalla has an equally amusing number of ways to pronounce it across Germanic languages, “val” sometimes turns into what sound like “fell” instead of “fall”, and in Icelandic the double ell makes it fall-hat-la. Languages are cool!
- stormbrew 4y agoFwiw I've literally worked with Nicholas (but not on valgrind) and I only learned this today somehow.
- harry8 4y agoI was introduced to valgrind by Andrew Tridgell during the main content of a vaguely famous lecture he gave that finished with the audience collectively writing a shellscript bitkeeper client [1] demonstrating beyond doubt that Tridge had not in any way acted like a "git" when bitkeeper's licenseholder pulled the license for the linux kernel community. Tridge said words to the effect "if you program in C and you don't aren't using valgrind you flipping should be!" And went on to talk about how some projects like to have a "valgrind clean" build the same way they compile without warnings and that it's a really useful thing. As ever well expressed with examples from samba development. He was obviously right and I started using valgrind right there in the lecture theatre. apt-get install is a beautiful thing. He pronounced it val grind like the first part of "value" and "grind" as in grinding coffee beans. I haven't been able to change my pronunciation since then regardless of it being "wrong". [1] https://lwn.net/Articles/132938/ https://lwn.net/Articles/132938/ Corbett's account of this is actually wrong in the lwn link above. Noted by akumria in the comments below it. Every single command and suggestion came from the audience, starting with telnetting to Ted Tso's bitkeeper ip & port that he made available for the demo. Typing help came from the audience as did using netcat and the entire nc command. The audience wrote the bitkeeper client in 2 minutes with tridge doing no more than encouraging, typing and pointing out the "tridge is a wizard reverse engineer who has used his powers for evil" Was clearly just some "wrong thinking." Linus claimed thereafter that Git was named after himself and not Tridge.
- throwawaylinux 4y agoTridgell is possibly the most intelligent person I've ever met, and I've met Torvalds and a bunch of other Linux developers -- not that they aren't intelligent too, among them might be a challenger to that title. Tridge has a way of explaining complicated ideas in a way that pares them down to their essence and helps you to understand them that just really struck me (a smart person is able to talk about a complicated thing in a way that makes you feel dumb, a really smart person is able to talk about a complicated thing in a way that makes you feel like a genius). As well as the ability and intellectual curiosity to jump seemingly effortlessly across disciplines. And he's a fantastic and very entertaining public speaker. Highly recommend any talk he gives.
- hgs3 4y agoIt's giving me flashbacks to the hard G vs soft G in gif image format.
- dietr1ch 4y agoNow you are really on track to mispronounce Valgrind for nearly 21 years :P
- glandium 4y agoI've known the right pronunciation for about 10 years. I still say it wrong.
- opan 4y agoHow do you pronounce it? I hoped it'd be near the start, but several paragraphs in and I'm still not sure. edit: val as in value + grinned