Issues with porting COM+ applications from Windows

2019-07-15 07:08发布

问题:

We are migrating our applications from Windows Server 2003 to Windows Server 2008 R2. I am facing some issues with the migration.

I have deployed many COM+ components (32 bit) and DCOM components (32 bit) in the Windows Server 2008 R2. These COM+ and DCOM components are VC++ code.

I have a .net 3.5 service 32 bit deployed in the same server, which calls the COM+ components mentioned above.

Whenever i try to start the Service , it does not start and throw multiple errors in the event log.

The main error that we get are the Remote procedure call failed errors**.(**The remote procedure call failed. (Exception from HRESULT: 0x800706BE))**** Based on observation during debugging, the COM objects are created ,but when some method is called the remote procedure exception is thrown.

The same works fine in a Win 2003 Server Box.

ERROR

1st error:

Faulting application name: dllhost.exe, version: 6.1.7600.16385, time stamp: 0x4a5bc6b7

Faulting module name: KERNELBASE.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdbdf

Exception code: 0xe06d7363

Fault offset: 0x0000b727

Faulting process id: 0x8ac

Faulting application start time: 0x01cb437094216ea7

Faulting application path: C:\Windows\SysWOW64\dllhost.exe

Faulting module path: C:\Windows\syswow64\KERNELBASE.dll

Report Id: d25f6a31-af63-11df-8252-0050568e251b

2nd error:

The system has called a custom component and that component has failed and generated an exception. This indicates a problem with the custom component. Notify the developer of this component that a failure has occurred and provide them with the information below.

Server Application ID: {727318BC-A725-4ED6-8DDD-9DE80262D3CA}

Server Application Instance ID:

{739972C1-74DA-4169-A093-32AAAA965EC9}

Server Application Name:

The serious nature of this error has caused the process to terminate.

Exception: E06D7363

3rd error:

Fault bucket , type 0

Event Name: APPCRASH

Response: Not available

Cab Id: 0

Problem signature:

P1: dllhost.exe

P2: 6.1.7600.16385

P3: 4a5bc6b7

P4: KERNELBASE.dll

P5: 6.1.7600.16385

P6: 4a5bdbdf

P7: e06d7363

P8: 0000b727

P9:

P10:

Attached files:

These files may be available here:

C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c

Analysis symbol:

Rechecking for solution: 0

Report Id: d25f6a31-af63-11df-8252-0050568e251b

4th error:

Fault bucket , type 0

Event Name: APPCRASH

Response: Not available

Cab Id: 0

Problem signature:

P1: dllhost.exe

P2: 6.1.7600.16385

P3: 4a5bc6b7

P4: KERNELBASE.dll

P5: 6.1.7600.16385

P6: 4a5bdbdf

P7: e06d7363

P8: 0000b727

P9:

P10:

Attached files:

These files may be available here:

C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c

Analysis symbol:

Rechecking for solution: 0

Report Id: d25f6a31-af63-11df-8252-0050568e251b

Report Status: 0

5th error:

Service cannot be started. System.Runtime.InteropServices.COMException (0x800706BE): The remote procedure call failed. (Exception from HRESULT: 0x800706BE)

We have checked for the following based on analysis,

1. Permission issues - Checked if Everyone, authernticated users , IWAM_ServerName and IUSR_ServerName have full control. Saw in a forum that they should have NTFS read/execute permissions on some system folders. Dont know how to check this.

2. DLL Hell problems - Checked registration and everything seems to be fine.

3. Process 'bitness' problems - Checked registry and all entries are under WoW6432 and all the application compoentns are 32 bit. There are no in process calls to 64 bit components. Also used COM for 32 applications.

4. FireWall issues - This service is in the same machine as the COM component. Should we change some settings related to MSTDC security, Advanced firewall configuration like enabling COM+ inbound? We are not sure as we are configuring the server for the first time.

  1. Enabling 'Run 32 bit applications' check box

But none of the above is helping.

Also, we are trying to replicate the issue with sample components.We have created a .NET component and deployed it in COM+. Tried accessing it through VB script and C# console application and it works fine in Windows 2003 box. Same doesnt work in Windows 2008 Server box. We are not getting RPC errors but the following,

vb script error :800a01ad activex component cant create object

.net client invoking com+ : CLASS NOT REGISTERED : HRESULT 0x80040154 (REGDB_E_CLASSNOTREG)

After analysis found that these problems may be due to permission issues, dll hell or process 'bitness' issues.

It would be great if someone could help us out in resolving this issue.

Thanks, Vijay

回答1:

This is all the same crash reason. Your component threw a C++ exception and it wasn't caught with a catch statement. Use a debugger to find out why it is throwing exceptions.