Comment on: Hardest/craziest bug anecdotes?
I was working on a project that injected profiling and debugging instrumentation into existing C or C++ code. In order to test the project, I was using Google's open source Javascript engine, V8, as it's a reasonably large, reasonably complex C++ code-base. On its own, V8 worked fine, but with the additional instrumentation added by the project I was working on, there was a very strange looking crash.
After about 2 days of stepping through assembly code in a debugger, I figured out what was going wrong. The V8 engine was JIT compiling Javascript to x64 machine code then executing that on the fly. The general pattern was that any registers clobbered by a JIT compiled block were preserved on the stack before execution, then restored afterwards. In one particular fragment, the rdi register was being used without being properly preserved (the rsi register was being accidentally preserved instead). The existing V8 code just happened to work despite this register being accidentally clobbered, but the instrumentation that my project injected was using this register both before and after the execution of the JIT compiled block. Since it was being accidentally clobbered by V8, my instrumentation was crashing! In short, the bug was in V8 itself but was hidden and only became apparent with the addition of my instrumentation.
It was registered as issue 2238 and was fixed here!
At the end of the day, I was quite pleased that it wasn't my bug, but that was certainly a rough debugging session!
Comment on: VOAT back-end?
I've seen sites written in plenty of languages that scale exceptionally well and sites written in plenty of languages that scale terribly. The platform doesn't matter nearly as much as how well the system is designed and implemented. Obviously some platforms make doing the right thing easier than others but at the end of the day, if you don't know what you're really doing then you're going to struggle to build a scalable system regardless of what stack you happen to be using.
Seems like an interesting and simpler alternative to d3.js