It is rather urgent for us to get this fixed. We have a release date coming up soon. Not including the OracleMonitor unit in the project does not help. I am not quite sure the problem is really related to the Monitor. Debugging this problem is really hard.
I have tried to include the call to InternalMonitorFinalize in my own code, right after the database session is logged off. Right before this call the Thread status shows there are three threads in my application. After the call one thread disappears, which is OK. However, I am a bit confused as to why there are three threads - what is the third one? As far as I know, we should have only one thread in the application. After watching that thread 3 disappeared, I pressed Run, and then suddenly there were three threads again. And the application was hanging again. I noticed the Monitor finalization procedure is not a class method. Since it will point to nil after it has been called once, it will indeed be a problem if for any reason several monitor threads have been created.
I don't know if this is of any help to you, but the main message is I am starting to feel a bit desperat and I am running out of time...
I also found that it is a tedious job to go back to the previous DOA version to try wheter that makes the problem go away. Even if you have not made use of any new funcionality the default value of all new properties is automatically stored in the dfm file once you open it and save it to file. I strongly suggest for the future that you make use of the default keyword for all published properties.
property X: Boolean read fX write fX default false;
and then include X:=false; in the constructor of the component.
Pro's: This makes the DFM files smaller, makes it easier to see which properties actually have been given a value different from the default, and also makes it a lot easier to revert to a previous version of a component if necessary. Con's: none ??
PLEASE do this for the next main version you release!