Skip to content

AxHost keeping parent alive #13499

Closed
@CogDanny

Description

@CogDanny

.NET version

.NET 8

Did it work in .NET Framework?

Yes

Did it work in any of the earlier releases of .NET Core or .NET 5+?

Haven't tried on earlier, but also broken on .NET 9

Issue description

The container of an AxHost never gets garbage collected. We originally discovered this while investigating a GDI Object leak, which is a manifestation of the container never getting collected.

Steps to reproduce

The attached projects demonstrate the issue by tracking when the container is constructed, disposed and finalized. The three projects are:
ActiveXControl_MFC - an MFC project that builds an ocx; the post-build step registers it (requires Visual Studio 2022 run as admin) and creates an interop assembly
AxHostContainer - a .NET 8 project that contains the AxHost
AxHostContainer_Framework48 - a .NET Framework 4.8 project that contains the AxHost
The AxHostContainer projects are identical, except for the targeted .NET platform.

Running AxHostContainer apps:
The AxHostContainer apps effectively execute four cases, two on .NET 8 and the same two repeated on .NET Framework 4.8. Each of the four cases open and close a Form multiple times.

	Without AxHost	With AxHost
.NET 8        +             x
.NET FW       +             +

Only the .NET 8 With AxHost case exhibits the bad behavior where the finalizers fail to execute.

AxHostLeak.zip

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions