Heute trat es wieder auf, und ich konnte es
endlich reproduzieren.
Es ist eine Verkettung unglücklicher Zustände:
- Eine selbst geschriebene DLL leakt zeitweise Sockets, also schließt sie nicht, obwohl sie es müsste
- Unter bestimmten Umständen (nur während etwas anderes bestimmtes gleichzeitig abläuft) fängt diese DLL an und tut das mit ca. tausendfacher Geschwindigkeit
- Unter noch bestimmteren Umständen spawnt unsere Anwendung zeitgleich noch zwei Konsolenanwendungen und vererbt alle ihre Handles noch an diese Kindprozesse (darunter halt zehntausende ungültige Sockets). Da diese Handles alle dupliziert werden lastet das den Rechner noch weiter aus, teilweise bis zum vollständigen Absturz
Das war echt einer der spannendsten Bugs seit langer Zeit