Hi Wilfried! Here are the results when tracing all occurrences of WSocketGCount in the ICS code. I tested the both the original example code and the one that manually loads/unloads winsock, on two different computers.
Please let me know if I can do some other tracing that could shed light on the problem... Best Regards Henrik ON THE EXAMPLE COMPUTER WHERE THE ERROR SHOWS ============================================= Original code that hangs ------------------------ (Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form) constructor TCustomWSocket.Create: 0 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 destructor TCustomWSocket.Destroy: 1 -> 0 procedure WSocketUnloadWinsock: 0 destructor TCustomWSocket.Destroy: 0 (Creating smtpTestForm from main form, pressing connect, hang...) constructor TCustomWSocket.Create: 0 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 -!- The application hangs -!- Manually ForceLoadWinsock and CancelForceLoadWinsock ---------------------------------------------------- (ForceLoadWinsock on main form creation, Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form) procedure WSocketForceLoadWinsock 0 -> 1 constructor TCustomWSocket.Create: 1 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 destructor TCustomWSocket.Destroy: 2 -> 1 destructor TCustomWSocket.Destroy: 1 (Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form, CancelForceLoadWinsock in mainform.OnCloseQuery) constructor TCustomWSocket.Create: 1 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 destructor TCustomWSocket.Destroy: 2 -> 1 destructor TCustomWSocket.Destroy: 1 procedure WSocketCancelForceLoadWinsock: 1 -> 0 procedure WSocketUnloadWinsock: 0 Wsocket finalization: 0 procedure WSocketUnloadWinsock: 0 ON THE COMPUTER WHERE THE ERROR DO NOT SHOW =========================================== Original code that hangs on some computers ----------------------------------------- (Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form) constructor TCustomWSocket.Create: 0 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 destructor TCustomWSocket.Destroy: 1 -> 0 procedure WSocketUnloadWinsock: 0 destructor TCustomWSocket.Destroy: 0 (Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form) constructor TCustomWSocket.Create: 0 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 procedure SafeIncrementCount: 1 -> 2 procedure SafeDecrementCount: 2 -> 1 destructor TCustomWSocket.Destroy: 1 -> 0 procedure WSocketUnloadWinsock: 0 destructor TCustomWSocket.Destroy: 0 Wsocket finalization: 0 procedure WSocketUnloadWinsock: 0 Manually ForceLoadWinsock and CancelForceLoadWinsock ---------------------------------------------------- (ForceLoadWinsock on main form creation, Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form) procedure WSocketForceLoadWinsock 0 -> 1 constructor TCustomWSocket.Create: 1 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 destructor TCustomWSocket.Destroy: 2 -> 1 destructor TCustomWSocket.Destroy: 1 (Creating smtpTestForm from main form, pressing connect, close smtpTestForm, release smtpTestForm from main form, CancelForceLoadWinsock in mainform.OnCloseQuery) constructor TCustomWSocket.Create: 1 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 procedure SafeIncrementCount: 2 -> 3 procedure SafeDecrementCount: 3 -> 2 destructor TCustomWSocket.Destroy: 2 -> 1 destructor TCustomWSocket.Destroy: 1 procedure WSocketCancelForceLoadWinsock: 1 -> 0 procedure WSocketUnloadWinsock: 0 Wsocket finalization: 0 procedure WSocketUnloadWinsock: 0 -----Ursprungligt meddelande----- Från: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] För Wilfried Mestdagh Skickat: den 14 december 2006 16:31 Till: ICS support mailing Ämne: Re: [twsocket] Freeze when using smtp after recreating itsparentform Hello Henrik, What you could do is set in IDE some breakpoints at the places the dll is loaded / unloaded. To see if this mechanism is working fine on the offending machines. It is a counter that increment / decrement to decide if winsock should be load or unload. -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be