Linux - это замечательное средство выпалывать баги с критическими секциями.
Вы можете думать, что ваш код без багов, и он даже может работать - а под капотом у вас может твориться страшная п0рнография, и WinAPI просто говорит: ":okay: и не такие ужасы видали"
Собираем тот же код под линуксами, запускаем - ииии, surprise buttsecks!
На моём конкретном примере: выходил из критической секции дважды. Винда: чё-чё?.. Не, не слышали. Линуксятина: ХРЯП! EInOutError
Кроме того, wine под линуксом - более общее средство править радиус кривизны в работе с WinAPI в целом. Там, где винда морщится, но глотает, вайн блюётЪ от вашего говнокода (тоже на своей шкуре выучено).