Month: March 2016

  • Happy Canyon

    Happy Canyon

    I’ve been doing a poor job of taking pictures in Europe. On the other hand, I’ve had a trip report on the back burner since last spring, so let’s look at a few pictures from that. Happy Canyon, in a remote part of southeast Utah, has a scenic and non-technical narrow section that would be…

  • SQLite with a Fine-Toothed Comb

    One of the things I’ve been doing at Trust-in-Soft is looking for defects in open-source software. The program I’ve spent the most time with is SQLite: an extremely widely deployed lightweight database. At ~113 KSLOC of pointer-intensive code, SQLite is too big for easy static verification. On the other hand, it has an incredibly impressive…

  • The Strict Aliasing Situation is Pretty Bad

    I’ll start with a quick review of the strict aliasing rules in C and C++ and then present some less well-known material. Strict Aliasing Compiler optimizations are often shot down by the potential for pointers to be aliases. For example, although we might naively expect a compiler to optimize this function to return zero, that…

  • A Variable Argument Hazard

    Variable argument functions in C and C++ can be tricky to use correctly, and they typically only get compiler-based type checking for special cases such as printf(). Recently I ran across an entertaining variable argument bug using tis-interpreter. Although I will use code from SQLite to illustrate this bug, this bug has not been found…

  • Python Exercises for Kids

    For the last year or so I’ve been giving Python exercises to my 11 year old. I thought I’d share some of them. If any of you have been doing similar things, I’d love to hear what worked for you. I think it is helpful that I’m not much of a Python programmer, this forces…