Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 Build 1235 available to private forum
 New Topic  Topic Locked
 Printer Friendly
Author Previous Topic Topic Next Topic  

support
Whole Tomato Software

5566 Posts

Posted - May 08 2004 :  1:25:05 PM  Show Profile
http://www.wholetomato.com/downloads/VA_X_Setup1235.exe

Fixes are described at:
http://www.wholetomato.com/support/history1235.html

Among other changes, build 1235 includes a few new templates for C# users. If you use C#, overwrite your existing template files during install or look in Templates\\Latest\\cs.tpl to see what's new.

VS.NET users do not need to reset toolbars during install to get the fixes in this build. Last build requiring reset is 1214.

Modifed to bump build number from 1234 to 1235 -- we forgot to include a few, minor changes.

Whole Tomato Software, Inc.

Edited by - support on May 17 2004 6:36:10 PM

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 08 2004 :  9:40:37 PM  Show Profile
Whats the point in needing to restart after installing this build? Something really changed or just a new "feature" of the installer? I suppose the new C# templates wont require a restart.
Go to Top of Page

support
Whole Tomato Software

5566 Posts

Posted - May 09 2004 :  01:10:01 AM  Show Profile
What makes you believe a restart is needed? And we assume you mean, restart of the IDE.

Whole Tomato Software, Inc.
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 09 2004 :  10:59:21 AM  Show Profile
No, the installer tells me that I have (had) to restart (to be precise: reboot).

Edited by - Uniwares on May 09 2004 10:59:53 AM
Go to Top of Page

LarryLeonard
Tomato Guru

USA
1041 Posts

Posted - May 09 2004 :  12:03:23 PM  Show Profile
Hmmm... didn't ask me to reboot...
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 09 2004 :  12:53:48 PM  Show Profile
It's the first time ever that I saw that from the VAX installer. Running now with XP SP2 since a few VAX builds, so I suppose it has nothing to do with that either.

Edited by - Uniwares on May 09 2004 2:41:54 PM
Go to Top of Page

support
Whole Tomato Software

5566 Posts

Posted - May 09 2004 :  9:02:24 PM  Show Profile
This usually happens if you install before a closed instance actually has a chance to unload all the VAX dll's. If the installer is unable to update a dll, it puts a flag in the registry to replace it on next start-up.

Whole Tomato Software, Inc.
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 09 2004 :  10:33:43 PM  Show Profile
Hmmm, that may be. I closed VS.NET just before launching the setup...
Go to Top of Page

SvenC
Tomato Guru

Germany
339 Posts

Posted - May 10 2004 :  01:53:45 AM  Show Profile
Maybe the part of the setup which does the check if VS6 or VS.NET is still running should be replaced from looking for a window title "Microsoft Visual Studio" to looking for a process name: msdev.exe or devenv.exe?
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 10 2004 :  10:44:42 AM  Show Profile
SvenC, while this might be a good idea (doh, ever wrote a installer script?) it is not the culprit in this case. The app window might be already gone, also the process, yet the DLL is not unloaded from memory. It might happen that Windows keeps the DLL "loaded" for a short time, until it has time to "unload" it.
Go to Top of Page

ether
Tomato Guru

USA
130 Posts

Posted - May 10 2004 :  12:31:03 PM  Show Profile
Actually, DLLs are unloaded first, before the application is unloaded. SvenC's idea may be the solution to the problem.
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 10 2004 :  12:50:57 PM  Show Profile
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnesscom/html/serverlifetime.asp

Quote from it:COM will then wait an unspecified period of time before it will free these idle server DLLs to ensure that no residual Release calls are still being executed.16 This means that in multithreaded environments, it may take considerably longer for a DLL to unload from its client than is expected.

Edited by - Uniwares on May 10 2004 12:51:28 PM
Go to Top of Page

ether
Tomato Guru

USA
130 Posts

Posted - May 10 2004 :  2:51:09 PM  Show Profile
I keep forgetting that these plugins use COM.
Go to Top of Page

SvenC
Tomato Guru

Germany
339 Posts

Posted - May 11 2004 :  03:43:19 AM  Show Profile
The MSDN quote doesn't say anything to the dll lifetime in relation to process lifetime. I'm pretty sure that there is no way that a dll will be loaded for a process after that process has exited. The dll is loaded at some memory address which is only relevant to that process memory space. Unloading a process will free all memory which was bound to that process so I strongly assume that there is no place a dll could "live" after a process finished. There actually has to be at least one thread which could execute any functionality that could implement the quoted lifetime issues of COM objects. And without a process there is no thread.

The only problem to my solution is that you have no control after the check for loaded process names that a relevant process is started which than loads and locks the dll again. But I think that it is a bit unlikely to start VS.Net just inbetween of a VAX setup.
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 11 2004 :  10:57:23 AM  Show Profile
SvenC, you are totally right - in regards to normal DLLs. But unfortunately, these COM modules are a bit different from normal DLLs, in any way. They shouldnt be named DLLs at all.
Give it a try yourself and you'll see that their lifetime is solely depending on the OS.
Go to Top of Page

SvenC
Tomato Guru

Germany
339 Posts

Posted - May 11 2004 :  11:55:44 AM  Show Profile
Hmm - How should I try that?

When CoCreateInstance(Ex) is called for an inproc COM server it will call LoadLibraryEx, GetProcAddress("DllGetClassObject") and start using the class factory. How could COM be different anyhow than load the dll and start by calling an exported function? All you can do is implement DllCanUnloadNow to keep the dll loaded as long as it can be - but that will not be longer than the processes life time.

The only place I see is MTS, COM+ or Enterprise Services - that is mtx.exe or dllhost.exe to execute COM inproc servers (dlls) outside of the client process. Than of course mtx.exe or dllhost.exe take hold of the dll and its lifetime. But a COM dll loaded inproc is loaded into the process memory space. Where should that dll be hold after the process is gone? Can you give me some details how that should work and how I could test it?
Go to Top of Page

Uniwares
Tomato Guru

Portugal
2321 Posts

Posted - May 11 2004 :  3:57:49 PM  Show Profile
We should continue this thread by mail or IM. Its getting kinda long here
Go to Top of Page

Cezariusz
Tomato Guru

Poland
244 Posts

Posted - May 12 2004 :  03:53:59 AM  Show Profile
quote:
We should continue this thread by mail or IM. Its getting kinda long here

But it's very interesting, please come back here, or open a new topic.

Cezariusz Marek
https://midicat.net/
Go to Top of Page

SvenC
Tomato Guru

Germany
339 Posts

Posted - May 12 2004 :  05:28:14 AM  Show Profile
Done: created a new topic "COM dll life time issues"
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Topic Locked
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000