As seen in the papers assigned for today, diagnosing software failures that occur in production is important, yet quite challenging. Two particularly insidious types of bugs are race conditions and resource leaks (memory, file descriptors, etc.). What makes them hard to deal with is the fact that the distance (in time) between the occurrence of the bug and its externally visible manifestation can be very long, which means that it is hard to decide when exactly the bug occurred. This makes it hard to decide when to acquire the corresponding "interesting" system state that may help in debugging.
Choose one of these categories of bugs and devise an automated bug reporting system that would make such bugs easier to fix. You most likely would want to combine some amount of automated work at the customer site (to generate the report) with some amount of automated work at the developer's site (to help humans fix the bug). Keep in mind the key considerations raised in the papers discussed today: introducing minimal overhead during production, preserving customer privacy, etc.