Att testa multitrådade program är svårt eftersom trådar kan interfoliera på ett icke-deterministiskt sätt. Oprövade interleavings kan orsaka misslyckanden, men att testa alla interleavings är ogenomförbart. Många interlegerande prospekteringsstrategier för upptäckt av fel har föreslagits, men deras relativa effektivitet och prestanda är fortfarande oklara eftersom de ofta saknar offentligt tillgängliga genomföranden och inte har utvärderats med hjälp av gemensamma riktmärken. Vi beskriver NeedlePoint, en öppen källkodsram som gör det möjligt att välja och jämföra ett brett spektrum av interleaving prospekteringsstrategier för felsökning som föreslagits av tidigare arbete. Vår erfarenhet med NeedlePoint visar att prioritetsbaserad probabilistisk konvergenstestning (PCT-algoritmen) snabbt hittar fel, men den kör bara en tråd åt gången, vilket förstör parallellism genom att serialisera avrättningar. För att lösa detta problem föreslår vi en parallell version av PCT-algoritmen (PPCT). Vi visar att den nya algoritmen överträffar originalet med en faktor på 5× när du testar parallella program på en åtta-kärnig maskin. Vi bevisar formellt att parallella PCT ger samma probabilistiska täckningsgarantier som PCT. Dessutom är PPCT den första algoritmen som kör flera trådar samtidigt som den ger täckningsgarantier.
Den parallella PCT-algoritmen REF ] förbättrar PCT-algoritmen genom att tillåta parallell körning av många trådar, i motsats till att alltid serialisera utförandet.
Multicore acceleration of priority-based schedulers for concurrency bug detection
{'venue': "PLDI '12", 'journal': None, 'mag_field_of_study': ['Computer Science']}