ThinkGeo.com    |     Documentation    |     Premium Support

MapSuite V10.6 - GDIObjectLeak

MapSuite Team,

The exception below is occurring intermittently under Windows-11. It does not occur under Windows-7, not sure about Windows-10.

The exception occurs even if the map extent remains unchanged.

There are several GPS tracking-layers that are being refreshed.

Any suggestions as to the cause of this?

Thanks,
Dennis

Log Name: Application
Source: Windows Error Reporting
Date: 9/2/2025 7:55:16 AM
Event ID: 1001
Task Category: None
Level: Information
Keywords:
User: SYSTEM
Computer: WKS18 Windows-11
Description:
Fault bucket type 0
Event Name: GDIObjectLeak
Response: Not available
Cab Id: 0

Problem signature:
P1: ViewOfChicago.exe
P2: 4.8.1.0
P3: 262152.65536
P4: 4
P5: 65d8cc64
P6:
P7:
P8:
P9:
P10:

Hi Dennis,

This issue along with this one (MapSuite V10.6 - Exception Refresh Layer) actually come from the same root cause — a leak in GDI objects after repeated refreshes . Over time, the number of GDI handles grows until the OS blocks further allocations.

On Windows 7 this often went unnoticed because the system was more forgiving and did not aggressively enforce GDI limits. On Windows 11 , however, resource tracking is stricter, so the same leak that was “tolerated” before now surfaces as an application crash.

We completely addressed this problem in v14 , where GPS points can be drawn directly on the canvas using hardware acceleration without creating images. This avoids GDI altogether and is far more efficient. Upgrading to v14 is the best long-term solution.

However, I understand it could be a lot of work upgrading to v14 from v10. If you prefer to remain on your current version, the practical workaround is to stop calling overlay.Refresh() for GPS point updates and implement it yourself. One approach is to add an Image element on top of the MapView in XAML, and update the image’s position as needed. We provide a helper method to convert world coordinates to screen coordinates, so you can place and move the image accurately. Since no new image objects are created in this approach, you avoid any GDI-related leaks entirely.

I hope that makes sense, let us know if you have any questions.

Thanks,
Ben

hi Ben,

Much appreciate your information on these two issues. The production environment is only now slowly transitioning to Windows-11, which is why this issue has surfaced in the last 2-3 months.

The application takes care to limit Refresh by processing GPS messages in bulk by updating the tracking layer, and only doing one refresh of the displayed extent, and only then doing it only once if the current extent has a GPS update. This had to be done because of the great number of GPS messages that come in from nearly a thousand vehicles.

I’ve already upgraded to ThinkGeo V14, but cannot deploy until another SDK that I make use of is complete with its’ upgrade to .NET V8, which is supposed to be in the next month or two.

It seems best to wait until V14 is deployed rather than embark on something that by the time it was complete we’d be ready to deploy V14.

Thanks for your words-of-wisdom.
Dennis

You are welcome, Dennis! Glad to know you don’t have to stay up with the old version, just let us know whenever you have any questions.