Uppstår samma problem om du använder dig av STLPort, dvs den STL som används av Borland? I så fall har du nog stött på en bugg vid exceptions, troligtvis orsakat av kompilatorn.
Synd att du inte kunde skapa ett reproducerbart exempel, det är svårt att göra en fel-rapport utan det. Du kan försöka posta problemet på news://msnews.microsoft.com/microsoft.public.vc.stl
Jag skulle rekommendera att du kör ditt program i Release-build, optimerat på min-size (glöm inte att slå på debug-info så du får symboler och kan debugga release-bygget). Poängen med det är att om du skriver där du inte får skriva är det mer sannolikt att upptäcka det i Release-bygge då du mer sannolikt skriver sönder något allvarligt.
Du kan också använda Pageheap, se http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q264471. Med det kan man lägga skrivskyddadde "guard"-sidor kring allokerade block. Om du sedan skriver utanför någon allokerad buffer är det troligt att man försöker skriva på en skrivskyddad sida, och det ger ett exception som du kan titta på i debuggern.
Ah, en sån rolig bugg. Minns att jag hade en sån i ett program under Solaris också. Den kraschade med 'bus error' som meddelande. Lösningen var fånig: man skrev detta på raden innan kraschen...
cout << "";
...och sedan funkade det. Fråga mig inte vad som var fel.
Har du lyckats göra något exempel som visar problemet? Visst kan det vara en bug i MS STL, men jag skulle ändå oroa mig i ditt fall. Jag har inte sett några problem på news-gruppen jag refererade i mitt tidigare inlägg, och det känns som en sådan bug borde ha hittats tidigare. Samtidigt är det symptom du berättar typiskt för en heap corruption, och det visa sig olika mycket beroende vilken miljö man bygger i, framförallt beroende på hur kompilatorn lägger ut koden.
När ditt problem inträffar, är det 100%igt i alla fall, eller händer det "ibland"?
Har du provat att köra i release-läge?
Har du bara en .exe-fil (eller är det dll:er eller lib:ar inblandade)? Hur är din code generation inställd? Har du "Multi-threaded Debug DLL (/MDd)" eller "Multi-threaded DLL (/MD)" i alla inblandade projekt?