understanding and genera ng high quality patches for
play

Understanding and Genera-ng High Quality Patches for Concurrency - PowerPoint PPT Presentation

1 Understanding and Genera-ng High Quality Patches for Concurrency Bugs Haopeng Liu , Yuxi Chen and Shan Lu 2 What are concurrency bugs Synchroniza-on mistakes in mul--threaded programs 3 What are concurrency bugs Synchroniza-on


  1. 1 Understanding and Genera-ng High Quality Patches for Concurrency Bugs Haopeng Liu , Yuxi Chen and Shan Lu

  2. 2 What are concurrency bugs • Synchroniza-on mistakes in mul--threaded programs

  3. 3 What are concurrency bugs • Synchroniza-on mistakes in mul--threaded programs //parent thread //child thread if(…){ unlock(f->mut); return; f->mut = NULL; }

  4. 4 What are concurrency bugs • Synchroniza-on mistakes in mul--threaded programs //parent thread //child thread if(…){ unlock(f->mut); return; f->mut = NULL; }

  5. 5 What are concurrency bugs • Synchroniza-on mistakes in mul--threaded programs //parent thread //child thread if(…){ unlock(f->mut); return; f->mut = NULL; }

  6. 6 Concurrency bugs need to be fixed • Prevalence – Widely exist in mul--threaded programs • Seriousness – Cause real world disasters • Difficulty – Time-consuming to fix [LuASPLOS’08] – Patches are the most error-prone [YinFSE’11] • 2X -mes more oXen to be buggy than memory/seman-c bugs

  7. 7 Concurrency bug automated fixing • Observa-on: – Program is correct in most -ming interleavings. • Solu-on: – Only need to remove some bad -ming. • add lock-related synchroniza-on [AFix PLDI’11] [CFix OSDI’12] [Grail FSE’14] .

  8. 8 An automated fixing example //child thread //parent thread if(…){ + lock(L) unlock(f->mut); + while(…){ + lock(L); + wait(con, L); + signal(con); + } + unlock(L); + unlock (L) return; } f->mut = NULL; + lock(L); Overall: • + signal(con); – 9 new synchroniza-ons + unlock(L); – 1 new while loop Reality is even worse!

  9. 9 The manual patch //child thread //parent thread if(…){ + thread_join(…); unlock(f->mut); f->mut = NULL; return; Overall: • } – New sycn.: 1 VS. 9 – New while loop: 0 VS. 1 Simpler patch à Easier to read and maintain Can we automa7cally generate such simple patches?

  10. 10 Contribu-ons • Manual patch study – 77 real-world concurrency bugs – The limita-on of exis-ng techniques – Guidance to design new tools • HFix Bug AFix[1] Reports Bug CFix[2] Reports Bug Grail[3] Reports Bug … Reports Bug HFix [1] Guoliang Jin etc. AFix. In PLDI’11 Reports [2] Guoliang Jin etc. CFix. In OSDI’12 [3] Peng Liu etc. Grail. In FSE’14

  11. 11 Outline • Mo-va-on • Manual patch study • HFix • Evalua-on • Conclusion

  12. 12 Research Ques-ons • Q1: Do manual patches mostly use lock- related synchroniza-ons? • Q2: Do manual patches mostly disable buggy -ming by adding synchroniza-on ops?

  13. 13 Manual patch study methodology [1] App. Source Descrip7on #. Bugs Apache Web Server 13 Mozilla Browser Suite 41 Lu ASPLOS’08 MySQL Database Server 12 OpenOffice Office Suite 5 Misc Recent papers[2-4] 6 Total 77 • Study developer patches & on-line discussion [1] Threads to validity are listed in paper. [2] Guoliang Jin etc. AFix. In PLDI’11 [3] Guoliang Jin etc. CFix. In OSDI’12 [4] Wei Zhang etc. ConSeq. In ASPLOS’11

  14. 14 Q1: How many patches use lock? Use Sync. primi7ves? Yes None

  15. 15 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches

  16. 16 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches

  17. 17 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches

  18. 18 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches Thread pc Thread r P R C

  19. 19 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches Thread pc Thread r P R C

  20. 20 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches Thread pc Thread r Thread A Thread B P A R B C

  21. 21 Q1: How many patches use lock? Use Sync. primi7ves? Synchroniza7on primi7ves Yes None Lock/Con. Var Create/Join Misc. AV patches OV patches Thread pc Thread r Thread A Thread B P A R B C

  22. 22 Q1 implica-on • Use non-lock synchroniza-on to fix OV. Synchroniza7on primi7ves Lock/Con. Var Create/Join Misc. AV patches OV patches

  23. 23 Q1 implica-on • Use non-lock synchroniza-on to fix OV. Synchroniza7on primi7ves Lock/Con. Var Create/Join Misc. � AV patches OV patches

  24. 24 Q2: What are developers’ fix strategy? Disable Tolerate

  25. 25 Q2: What are developers’ fix strategy? Disable (Adds)[1-3] Tolerate [1] Guoliang Jin etc. AFix. In PLDI’11 [2] Guoliang Jin etc. CFix. In OSDI’12 [3] Peng Liu etc. Grail . In FSE’14

  26. 26 Q2: What are developers’ fix strategy? Disable (Adds) Disable (Data priv.)[1] Tolerate [1] Jeff Huang etc . Execu-on Priva-za-on of Scheduler-Oblivious Concurrent Programs. In OOPSLA’11

  27. 27 Q2: What are developers’ fix strategy? Disable (Adds) Disable (Data priv.) Disable (Moves) Tolerate

  28. 28 Q2: What are developers’ fix strategy? Disable (Adds) Disable (Data priv.) Disable (Moves) Disable (Bypass) Tolerate

  29. 29 Q2 implica-on • Add-Sync widely applies, but oXen not best • Need to automate : � – Move synchroniza-on Disable (Adds) Disable (Data priv.) – Bypass Disable (Moves) Disable (Bypass) – Tolerate Tolerate • Different bugs are suitable different strategies

  30. 30 Outline • Mo-va-on • Manual patch studying • HFix – HFixJoin – HFixmove • Evalua-on • Conclusion

  31. 31 HFix overview HFix HFixJoin Sta-c Code analysis transform Thd pc Thd r Thd A Thd B HFixMove P R A B Sta-c Code C analysis transform • Goal: – Fix bugs with simple patches – Do not introduce new bugs

  32. 32 HFixjoin Intui-on • Which kind of bugs can be fixed by HFixjoin? Thread A Thread B create S cre A B

  33. 33 HFixjoin Intui-on • Which kind of bugs can be fixed by HFixjoin? Thread A Thread B create S cre A B

  34. 34 HFixjoin • Step1: Suitability checking – Goal: do not introduce new bugs. • Step2: Insert join synchroniza-on – Goal: fix the bug

  35. 35 Suitability checking (sta-c analysis) • Is Thread A a joinable child thread of Thread B ? • Only one Thread B ? • Is Thread A already joined? • Will there be deadlock/severe performance slow-down? Thread A Thread B create S cre A B

  36. 36 Suitability checking (sta-c analysis) • Is Thread A a joinable child thread of Thread B ? • Only one Thread B ? • Is Thread A already joined? • Will there be deadlock/severe performance slow-down? //parent thread //child thread + thread_join(…); fputs( fp ,…); fp = NULL; wait(condV); signal(condV);

  37. 37 Insert join synchroniza-on • Insert join before opera-on B • Patch Example //child thread //parent thread if(…){ pthread_create(&tid,…) unlock(f->mut); return; ... } f->mut = NULL;

  38. 38 Insert join synchroniza-on • Insert join before opera-on B • Patch Example //child thread //parent thread if(…){ pthread_create(&tid,…) unlock(f->mut); tmp = tid; return; ... pthread_join(tmp); } f->mut = NULL;

  39. 39 HFixmove Intui-on • What kind of bugs can be fixed by HFixmove? Thread A Thread B create S cre A B (a) Move create fixes OV bug move-up A or move-down S

  40. 40 HFixmove Intui-on • What kind of bugs can be fixed by HFixmove? Thread A Thread B Thread A Thread B A * create S cre A B join S join B (a) Move create fixes OV bug (b) Move join fixes OV bug move-up A or move-down S move-up S or move-down B

  41. 41 HFixmove Intui-on • What kind of bugs can be fixed by HFixmove? Thread A Thread B Thread A Thread B Thread pc Thread r Thread pc Thread r A * p create p S cre ck A S lock join S join r r B c ck S unlock B* c (a) Move create fixes OV bug (b) Move join fixes OV bug (c) Move unlock fixes AV bug (d) Move lock fixes AV bug move-up A or move-down S move-up S or move-down B move-up c or move-down S move-up S or move-down p

  42. 42 Step1: iden-fy two opera-ons to move Thread A Thread B Thread A Thread B Thread pc Thread r Thread pc Thread r ck A * S lock A create join p S cre S join P* C* c r r B B* ck S unlock (a) Move create fixes OV bug (b) Move join fixes OV bug (c) Move unlock fixes AV bug (d) Move lock fixes AV bug move-up A or move-down S move-up S or move-down B move-up c or move-down S move-up S or move-down p

  43. 43 Step1: iden-fy two opera-ons to move Thread A Thread B Thread A Thread B Thread pc Thread r Thread pc Thread r ck A * S lock A create p S cre join S join P* C* c r r B B* ck S unlock (a) Move create fixes OV bug (b) Move join fixes OV bug (c) Move unlock fixes AV bug (d) Move lock fixes AV bug move-up A or move-down S move-up S or move-down B move-up c or move-down S move-up S or move-down p X Y Y X

  44. 44 Step 2: decide the moving des-na-on X* • Goal # of execu-ons of X == # of execu-ons of X*

  45. 45 Strawman solu-on doesn’t work # of execu-ons of X ≠ # of execu-ons of X* 1≠0 Naïve sol X * Y Y X Originally, X executes once. AXer moving, X * does not execute.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend