title: Most common reasons for unstable bugs in C++?
body: <p>I am currently working on a large project, and I spend most of the time debugging. While debugging is a normal process, there are bugs, that are unstable, and these bugs are the greatest pain for the developer. The program does not work, well, sometimes... Sometimes it does, and there is nothing you can do about it.</p>
  
  <p>What can be done about these bugs? Most common debugging tools (interactive debuggers, watches, log messages) may lead you nowhere, because the bug will disappear ... just to appear once again, later. That is why I am asking for some heuristics: what are the most common reasons for such bugs? What suspicious code should we investigate to locate such a bugs?</p>
  
  <p>Let me start the list:</p>
  
  <ol>
  <li>using uninitialized variables.
  Common misprints like mMember =
  mMember; </li>
  <li>thread synchronization.
  Sometimes it can be a matter of
  luck; </li>
  <li>working with non-smart
  pointers, dereferencing invalid
  ones;</li>
  </ol>
  
  <p>what else?</p>