De Amerikaanse ontwikkelaar Foone Turing ontdekte dat er enkele jaren geleden een vreemde bug bestond. Als je in Windows de programma’s Razer Synapse 3 en Docker installeerde, weigerde die laatste op te starten. De reden? Beide programma’s willen verzekeren dat er maar één kopie van zichzelf draait.

Dat kan eenvoudig door een globale mutex te creëren met de guid van hun .NET-assembly. Helaas implementeerden de ontwikkelaars van beide programma’s dat verkeerd, en wel op exact dezelfde manier. Ze gebruikten niet de guid van hun .NET-assembly, maar van het type van hun .NET-assembly, en dat was in beide gevallen System.Reflection.RuntimeAssembly, wat onderdeel uitmaakt van .NET zelf. Dus beide programma’s creëerden een globale mutex voor dezelfde guid en blokkeerden daarmee elkaars werking. Hoe kon dit gebeuren? Foone vond een post op StackOverflow uit 2009 waarin iemand de vraag stelde hoe je de guid van de huidige .NET-assembly opvraagt en hij kreeg exact dit, verkeerde, antwoord…