Rise of the Heisenbug<br />Gil Zilberfeld<br />
Who Am I?<br /><ul><li>Software developer for 15 years
Product Manager at Typemock
@gil_zilberfeld
www.gilzilberfeld.com</li></li></ul><li>What’s the plan?<br />A humble beginning<br />Heisenbugs<br />Tools and solutions<...
My First TDD Project<br />
Progress has beaten us<br />The Multicore<br />Mainstream Languages don’t help<br />Tools are complex<br />
We can do so much more<br />
Concurrency problems<br />State problems<br />Race conditions<br />Deadlocks<br />
Heisenberg’s Uncertainty Principle<br />It is impossible to know both the exact position and the exact velocity of an obje...
Heisenbug<br />The process of hunting the bug impacts our ability to catch it<br />
Heisenbugs<br />Identification is hard<br />Reproduction is hard<br />Fixing is easy<br />Checking the fix is hard<br />
A Methodological Solution<br />Reproduce<br />Write a failing test<br />Fix it<br />Keep the test<br />
It should work!<br />Works for logic<br />Shouldn’t it work for concurrency?<br />
Repeatability is the issue<br />Produce the same result<br />Any computer<br />Any configuration<br />
What’s the Solution?<br />Proper tools<br />
Catching Race Conditions<br />Example using CThru<br />
Catching deadlocks<br />Using Racer<br />
Other Tools<br />Static Analysis<br />http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis<br />AOP<br />ht...
Upcoming SlideShare
Loading in …5
×

Rise of the Heisenbug

1,989 views

Published on

Gil Zilberfeld's presentation from ADC2011 on identifying and preventing multithreading issues.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,989
On SlideShare
0
From Embeds
0
Number of Embeds
633
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Damage
  • Rise of the Heisenbug

    1. 1. Rise of the Heisenbug<br />Gil Zilberfeld<br />
    2. 2. Who Am I?<br /><ul><li>Software developer for 15 years
    3. 3. Product Manager at Typemock
    4. 4. @gil_zilberfeld
    5. 5. www.gilzilberfeld.com</li></li></ul><li>What’s the plan?<br />A humble beginning<br />Heisenbugs<br />Tools and solutions<br />
    6. 6. My First TDD Project<br />
    7. 7. Progress has beaten us<br />The Multicore<br />Mainstream Languages don’t help<br />Tools are complex<br />
    8. 8. We can do so much more<br />
    9. 9. Concurrency problems<br />State problems<br />Race conditions<br />Deadlocks<br />
    10. 10. Heisenberg’s Uncertainty Principle<br />It is impossible to know both the exact position and the exact velocity of an object at the same time<br />
    11. 11. Heisenbug<br />The process of hunting the bug impacts our ability to catch it<br />
    12. 12. Heisenbugs<br />Identification is hard<br />Reproduction is hard<br />Fixing is easy<br />Checking the fix is hard<br />
    13. 13. A Methodological Solution<br />Reproduce<br />Write a failing test<br />Fix it<br />Keep the test<br />
    14. 14. It should work!<br />Works for logic<br />Shouldn’t it work for concurrency?<br />
    15. 15. Repeatability is the issue<br />Produce the same result<br />Any computer<br />Any configuration<br />
    16. 16. What’s the Solution?<br />Proper tools<br />
    17. 17. Catching Race Conditions<br />Example using CThru<br />
    18. 18. Catching deadlocks<br />Using Racer<br />
    19. 19. Other Tools<br />Static Analysis<br />http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis<br />AOP<br />http://www.bodden.de/tools/aop-dot-net/<br />Microsoft CHESS<br />http://research.microsoft.com/en-us/projects/chess/<br />
    20. 20. Back to Basics<br />Code reviews<br />Awareness<br />Architecture<br />Safe guards<br />Tools<br />
    21. 21. Questions?<br />Twitter: @gil_zilberfeld<br />http://www.gilzilberfeld.com<br />gilz@typemock.com<br />

    ×