Question: I have been looking at an issue for a week straight and have been unable to figure it out and I am *desperate* for the fix.

On a client site, we have two environments: UAT and PROD. UAT works perfect (Please keep this in mind). We are now trying to deploy the solution to PROD but certain parts of the solution are not working.

We have developed an asp.net application that we provide to clients to allow them to invoke SSIS packages (there are a couple of drop downs that they first select then click a button named "invoke").
When the user clicks the Invoke button, a batch file named InvokeSSIS.bat is called that assembles a command line call to dtexec with the appropriate parameters.

I'm having a problem with a particular package that is responsible for calling an executable which generates a spreadsheet that i will be importing into my system.

The executable is on an mapped H:\ drive.

I have modified the InvokeSSIS.bat batch file to capture the command the batch file is generating. If I execute this command from the command line, it works perfectly. From the webapp Invoker, it executes the package but the tasks responsible for calling the executable doesn't execute as the entire package takes only 1 second to complete (whereas it should take about a minute.)

The executable DOES have a GUI, but it is NOT interactive. This is because when you call the GUI with specific parameters, it automatically runs in batch mode and executes a macro used to generate the desired spreadsheet.

I know this is ok because it works on the UAT server AND it works from the command line!

I have checked the permissions on the executable (bu right-clicking the executable and clicking properties.) I have granted Full Control on the executable to the same user specified as the identity tab of the application pool i am using.

Can someone please help me? As I said I am dying over here!

Please let me know if you have any ideas or what other info you need.

Environment (both UAT and PROD)
OS: Windows Server 2003  

IIS 6  

asp.net 2.0  

SQL Server 2008 

Thanks!

Steve

Answer: 
That is correct. Any leak of memory after the lifetime of a process on a protected mode operating system is as a really nasty bug in the kernel (sometimes processes crash). 

Having said that, the simplest way to check for memory leaks is to ensure that the heap has exactly the same number of allocated cells at the end of execution as it has at the beginning of execution. If you do not `delete` on exit, you have no way of checking this and will never discover legitimate memory leaks.
You need to be more careful with other resources like file handles, database connections, etc. However, all memory is definitely reclaimed.