Felaktig trådsynkronisering leder ofta till konvergens buggar som manifesterar icke-deterministiskt och är svåra att upptäcka och rätta. Tidigare arbete på att upptäcka konvergens buggar har tagit itu med det allmänna problemet på ett ad-hoc-sätt, med fokus främst på dataraser och atombrott. Att använda grafer för att representera ett multitrådat program exekvering är mycket naturligt, noder representerar statiska instruktioner och kanter representerar kommunikation via delat minne. I det här dokumentet gör vi den grundläggande iakttagelsen att sådana grundläggande sammanhangsoberoende grafer inte kodar tillräckligt med information för att möjliggöra korrekt feldetektering. Vi föreslår sammanhangsmedvetna kommunikationsgrafer, en ny typ av kommunikationsdiagram som kodar global beställningsinformation genom att inbädda kommunikationssammanhang. Vi bygger sedan Bugaboo, ett enkelt och generiskt ramverk som exakt upptäcker komplexa konvergensfel. Vårt ramverk samlar kommunikationsgrafer från flera utföranden och använder invariantbaserade tekniker för att upptäcka avvikelser i graferna. Vi byggde två versioner av Bugaboo: BB-SW, som är helt implementerad i programvara men lider av betydande nedgångar; och BB-HW, som bygger på anpassade arkitekturstöd men har försumbar prestandanedbrytning. BB-HW kräver blygsamma tillägg till en produkt multicore processor och kan användas i installationsinställningar. Vi utvärderar båda versionerna med hjälp av applikationer som MySQL, Apache, PARSEC och flera andra. Våra resultat visar att Bugaboo identifierar ett brett utbud av konvergensfel, inklusive utmanande flervariabla fel, med få (ofta noll) onödiga kodinspektioner.
Det arbete som beskrivs i REF föreslår ett mer allmänt tillvägagångssätt för att hitta konvergensfel baserat på att bygga sammanhangsmedvetna kommunikationsgrafer från körspår.
Finding concurrency bugs with context-aware communication graphs
{'venue': 'MICRO 42', 'journal': None, 'mag_field_of_study': ['Computer Science']}