Finding a VS Code Memory Leak

In 2021 I found a huge memory leak in VS code, totalling around 64 GB when I first saw it, but with no actual limit on how high it could go. I found this leak despite two obstacles that should have made the discovery impossible:

  1. The memory leak didn’t show up in Task Manager – there was no process whose memory consumption was increasing.
  2. I had never used VS Code. In fact, I have still never used it.

So how did this work? How did I find an invisible memory leak in a tool that I have never used?

Continue reading
Posted in Bugs, Code Reliability, Debugging, Investigative Reporting, memory, Programming, Rants | Tagged , , , , | 17 Comments

Acronis True Image Costs Performance When Not Used

Over two years ago I installed Acronis True Image for Crucial in order to migrate my data to a new SSD I had just purchased. It worked. I then left True Image installed “just in case”, and what harm could that possibly cause.

Well, funny you should ask.

I recently noticed that whenever I plugged or unplugged my external monitor Explorer.exe would consume a lot of CPU time – dozens of seconds of it. It was enough CPU time to make my computer noticeably sluggish until things calmed down which could take 15+ seconds. “That’s odd” is how most of my investigative reporting starts so I grabbed an ETW trace and drilled in. It didn’t take long to find the culprit.

Aside: I have worked with Acronis to help them understand this issue and they have provided a mitigation and have said that they plan to address the problem in the next release of their software. See “Workarounds and fixes” for details.

Continue reading

Posted in Investigative Reporting, Performance, uiforetw, xperf | Tagged , , | 17 Comments

Google Maps Doesn’t Know How Street Addresses Work

(or actually they do, but they don’t use this knowledge effectively)

Update, April 26, 2025: the address fix for W 6th Ave is live, mostly. Going forward I wish that Google Maps would make it harder to get bad data into maps, I wish they would respond to feedback faster, and I wish they would make their estimates for when changes go live more accurate (two weeks versus 24 hours).

I was driving around Vernon, BC a few weeks ago and I asked Google Maps for directions to 3207 30th Ave. It confidently told me where to go but luckily my passenger noticed that it was actually directing me to 3207 34th Ave, four blocks north. Well that’s odd.

A few days later my cousin asked me (as the ex-Google still-nerd member of the family) if I could help with a Google Maps issue. The problem was that the address 138 W 6th Ave in Vancouver was being mapped at a location 2.4 km (that’s 1.5 miles or 12 furlongs) away from the actual location.

Continue reading

Posted in Bugs, Rants | Tagged , , , | 14 Comments

What this blog is about

I’ve recently told a few people that I write, that I have a blog, and then I try to describe what I write about. I’m kinda proud of some of the stuff that I’ve covered here on randomascii over the years but I struggle when trying to summarize it to a non-technical audience. So here goes:

I’ve got a few human interest stories such as sharing my grief in 2024, sharing my loss of my right ear in 2016, and sharing the fun of commute-challenge 2017 (2017 video here) and commute-challenge 2018 (2018 video here). I’ve also got some quirky posts such as how to make a warm weather snowman, how to unicycle faster, and the time I unicycled a really long way.

But what about the investigative reporting, the revealing of hidden stability or performance problems (usually in Windows) that I’m particularly proud of discovering? What about the bug fixes that have happened because of my work? How can I share (brag?) about those to my non-technical friends?

I decided to try writing one-paragraph summaries of some of the stories that I’m most proud of, that made an impact, and which can just possibly be understood by non-experts. Here goes.

Continue reading

Posted in Fun, Investigative Reporting, Programming, Quadratic | Tagged | 1 Comment

Find me on bsky

I used to really enjoy the other microblogging site but it became too much of a democracy-destroying disinformation hell site so I haven’t been there in a long time.

I’ve moved to bsky – I’m https://bsky.app/profile/randomascii.bsky.social. Follow me there for ranting on base 2 versus base 10, transportation and housing, and tech failures. I also seem to post occasional vacation photos and astronomy blurbs, and anything else that seems amusing.

I hope to see some of you there, and I hope to see fewer of you on that other place.

Want thoughts on why leaving X/Twitter is a good idea? Bill Gates has some ideas, or you could just look at the number of organizations that are abandoning the site and think about whether they might have a point.

Posted in Uncategorized | 6 Comments

Life, death, and retirement

I haven’t been blogging much lately, and it turns out there is a very good reason.

My last technical blog post was October 1st of last year. After I hit publish on that one I went to get ready for bed and found my wife lying on the bathroom floor in excruciating pain.

I took her to the hospital. She was diagnosed with pancreatitis which is a truly horrible disease. Her hospital stay was an insane rollercoaster and she ultimately died nine weeks later.

Heartbeat

So yeah. It’s been a shit year.

Continue reading

Posted in Uncategorized | Tagged , , , | 73 Comments

Localization Failure: Temperature is Hard

The Guardian is one of my favorite news sources. I’m a subscriber (support news organizations!) and I read it daily. But it is not immune to errors, as this headline shows:

Record heat: Malawi swelters with temperatures nearly 68F above average

68 °F above average is a lot. For a tropical country it is not credible for temperatures to be that much warmer than average because the average is too high to give enough headroom. So what gives?

Continue reading

Posted in Math, metric, Rants | Tagged , , | 5 Comments

32 MiB Working Sets on a 64 GiB machine

Memory is a relatively scarce resource on many consumer computers, so a feature to limit how much memory a process uses seems like a good idea, and Microsoft did indeed implement such a feature. However:

  • They didn’t document this (!)
  • Their implementation doesn’t actually save memory
  • The implementation can have a prohibitively high CPU cost

This feature works by limiting the working set of a process – the amount of memory mapped into the address-space of the process – to 32 MiB. Before reading any further take a moment to guess what the maximum slowdown might be from this feature. That is, if a process repeatedly touched more than 32 MiB of memory – let’s say 64 MiB of memory – then how much longer could these memory operations take compared to if the working set was not limited? Take a moment and write down your guess. The answer is later in this post.

Continue reading

Posted in Computers and Internet, Investigative Reporting, memory, Performance, Programming, uiforetw, xperf | Tagged , , | 10 Comments

When Debug Symbols Get Large

TL;DR – upgrade your tools, including Visual Studio, windbg, and Windows Performance Toolkit, if you want to handle Chromium’s symbol files.

Details:

Death, taxes, and browser engines relentlessly growing – those are the three things that you can really be certain of. And so it was in early 2020 when I realized that Chromium’s inexorable growth meant that we were eventually going to produce PDB (Windows debug symbol) files that exceeded the PDB format’s 4 GiB limit.

I filed a Visual Studio bug in February 2020 requesting that the limit be raised, and three years and three days later we flipped the switch so that Chromium can produce larger PDBs. At that point the PDB for Chrome was at 95% of 4 GiB, and several test binaries had already crossed over the threshold, so it was just in time.

Continue reading

Posted in Debugging, Programming, Symbols, uiforetw, xperf | Tagged , | 12 Comments

No Start Menu for You

I tend to launch most programs on my Windows 10 laptop by typing the <Win> key, then a few letters of the program name, and then hitting enter. On my powerful laptop (SSD and 32 GB of RAM) this process usually takes as long as it takes me to type these characters, just a fraction of a second.

Usually. Continue reading

Posted in Code Reliability, Debugging, Investigative Reporting, Performance, Programming, Rants, uiforetw, xperf | Tagged , , | 28 Comments