Posted by Peter on April 25, 2006
I have a couple points I want to bring up today, none of which are lengthy enough to warrant their own post.
Point 1: Debugging multi-threaded applications sucks (in C++ at least). As you may know I have been working on asynchronous garbage collection. I have been debugging some of the basic parts in the last few days, and am constantly being bit by multi-threading. Some of it admittedly is my own fault, for example I forgot how to write a blocking queue properly. Unfortunately any mistakes, no matter how small, turn into major bug hunting excursions, because they are affected by timing in the most unpredictable ways, making it is hard to repeat them. For example putting in print statements to find out where a bug was caused the bug to disappear. Secondly I can’t step through the threaded code with the debugger, meaning that I have to rely on print statements. At the moment I think I have the bugs on the defensive, but if any more pop up I am going to have to implement an asynchronous logging routine.
Point 2: My bile got posted to reddit; i.e. last time’s post “In Defense of Change”. Admittedly it is nice to have so many people hear your opinions, but at the same time it has a downside, since many of them will come to the conclusion that I am full of hate after reading it and will never visit the blog again.
p.s. If you want to take a look at the garbage collector I wouldn’t be opposed to sending the code out on request, but since it is not really ready for public consumption it isn’t on Sourceforge yet.