> Now I wrote a simple test program which Loadlibraries the dll, waits
> some ms and freelibraries it then and waits another few ms. This is done
> up to 1000 times to check whether it works or not. if only done a few
> times all is well, but when really trying to do it 1000x it crashes (the
> app hangs) and even windows explorer is crashed so that the PC has to be
> rebootet then. It crashes after 200-300 cycles mostly.

Just to be sure it is related to ICS: remove any ICS code from the DLL and
run your test again.

> - this thread has a message pump with peekmessage and pm_remove

Bad. Use GetMessage or your thread will eat all CPU available to it.

> How can I avoid to terminate the thread from finalize if the normal way
> fails maybe due to a program crash?

Why worry if program crash ? A crash is a crash.

> What happens if the dll is used statically and what if dynamically?

No change except the time when finalize called.

> What if several apps use the dll at the same time?

No change.

> is initialization/finalization being called several times?

Yes, but with different data sections. You can ignore the fact that your DLL 
is loaded by several apps.

--
[EMAIL PROTECTED]
http://www.overbyte.be


----- Original Message ----- 
From: "Markus Humm" <[EMAIL PROTECTED]>
To: "ICS support mailing" <twsocket@elists.org>
Sent: Saturday, March 25, 2006 5:04 PM
Subject: [twsocket] Still dll trouble


> Hello,
>
> now as I have sokme time to visit my dll problem again I recoded the
> whole thing according to your suggestions which I do appreciate.
>
> But it nevertheless crashes, although not as often as before. A TeabB
> member already told me that I shouldn't create and destroy my global dll
> thread I'm using in the initialization and finalization parts of the
> dll, but for the finalizing part I don't know how to avoid.
>
> The dll now looks like this:
>
> - initialization creates a TThread descendant which is unique
>  for the whole dll.
> - this thread has a message pump with peekmessage and pm_remove
> - it also has a state machine, the normal state is to process these
>  messages (peekmessage...)
> - there is a global list of open connections which also has the sockets
>  being used.
> - one can open a coonection by informing the thread to do so, the
>  statemachine changes state then until the connection is opened.
> - this is secured by a critical section
> - the finalize method sends .terminate to the thread and has a waiting
>  loop for timeout detection. In this loop I had message processing via
>  peermessage as well, but it also crashed as explained below.
> - when terminating, the thread looks at all open connections and
>  closes it
>
> I set it up this way so that a program which forgot (maybe it crashed)
> to close any connections doesn't do too much harm, the dll will close
> them then. The normal way would be to send another message to the thread
> to close the connection.
>
> Now I wrote a simple test program which Loadlibraries the dll, waits
> some ms and freelibraries it then and waits another few ms. This is done
> up to 1000 times to check whether it works or not. if only done a few
> times all is well, but when really trying to do it 1000x it crashes (the
> app hangs) and even windows explorer is crashed so that the PC has to be
> rebootet then. It crashes after 200-300 cycles mostly.
>
> How can I avoid to terminate the thread from finalize if the normal way
> fails maybe due to a program crash?
>
> What happens if the dll is used statically and what if dynamically? What
> if several apps use the dll at the same time? is
> initialization/finalization being called several times?
>
> Opening the connection (one time so far) works good. if I can solve the
> crash mentioned above I would be able to build the rest of it (using ICS).
>
> Greetings and sorry for the bit length post
>
> Markus
> -- 
> 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

-- 
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

Reply via email to