Category Archives: Investigative Reporting

Programming is Puzzles

When I’m describing what I do for a living to non-programmers I sometimes say that I solve puzzles. I solve fascinating puzzles that are different every day, and there’s no answer key, and very often nobody else knows the solution. … Continue reading

Posted in Investigative Reporting, Performance, Programming, Visual Studio | Tagged , , , | 11 Comments

Profiling the profiler: working around a six minute xperf hang

Anytime my computer is a little bit slow I’m likely to record a trace and take a quick look. If I’m lucky I’ll find an easy workaround, in which case I’ve got a potential blog post and a smoother running … Continue reading

Posted in Investigative Reporting, Performance, Programming, xperf | Tagged , | 15 Comments

Hidden Costs of Memory Allocation

It’s important to understand the cost of memory allocations, but this cost can be surprisingly tricky to measure. It seems reasonable to measure this cost by wrapping calls to new[] and delete[] with timers. However, for large buffers these timers … Continue reading

Posted in Investigative Reporting, Performance, xperf | Tagged , | 46 Comments

Slow Symbol Loading in Microsoft’s Profiler, Take Two

When I run into a problematically slow program I immediately reach for a profiler so that I can understand the problem and either fix it or work around it. This guidance applies even when the slow program is a profiler. … Continue reading

Posted in Investigative Reporting, xperf | Tagged , , , , | 21 Comments

Intel Underestimates Error Bounds by 1.3 quintillion

Intel’s manuals for their x86/x64 processor clearly state that the fsin instruction (calculating the trigonometric sine) has a maximum error, in round-to-nearest mode, of one unit in the last place. This is not true. It’s not even close. The worst-case … Continue reading

Posted in Floating Point, Investigative Reporting, Programming | Tagged , , | 152 Comments

Self Inflicted Denial of Service in Visual Studio Search

After upgrading to Visual Studio 2013 I noticed that find-in-files had a problem when searching directories. The VS IDE would repeatedly hang, rendering it completely useless for the duration of the search. I filed a bug, complete with ETW traces … Continue reading

Posted in Investigative Reporting, Performance, Programming, Visual Studio, xperf | Tagged , | 13 Comments

You Got Your Web Browser in my Compiler!

I recently discovered that Microsoft’s VC++ compiler loads mshtml.dll – also known as Internet Explorer. The compiler does this whenever the /analyze option (requesting static code analysis) is used. I’m no compiler architecture expert, but a compiler that loads Internet … Continue reading

Posted in Code analysis, Investigative Reporting, Performance, Visual Studio, xperf | Tagged , , , | 91 Comments

How to Report a VC++ Code-Gen Bug

My coworkers recently found a bug in the x64 code generated by Visual C++. This bug exists in VC++ 2010 to VC++ 2013 RC. We put in a workaround (the traditional one of disabling optimizations for the afflicted function) and … Continue reading

Posted in Bugs, Investigative Reporting, Programming, Visual Studio | Tagged , , | 18 Comments

50 Bytes of Code That Took 4 GB to Compile

While doing evil things with macros and the inline assembler (trying to run a weird test whose purpose is not really relevant) I managed to write a program that caused Visual Studio’s C++ compiler to allocate 4 GB of memory … Continue reading

Posted in Investigative Reporting, Programming, Visual Studio, xperf | Tagged | 44 Comments

Defective Heat Sinks Causing Garbage Gaming

Sometimes being hot is not cool. When Valve’s customers have performance problems in our games we sometimes ask them to send in xperf traces for us to examine. In some cases this lets me find performance bugs that didn’t show … Continue reading

Posted in Investigative Reporting, Programming, xperf | Tagged | 53 Comments