Я получил типичное нарушение прав доступа:
access violation at 0x4ebb7456: read of address 0x4ebb7456
Это происходит в потоке, который создается, когда остальная часть программы уже закрывается.
Основной поток работает System.FinalizeUnits
во время исключения.
Я обнаружил, что адрес принадлежит области памяти, в которую загружен gdiplus.dll
.
Проблема исчезнет, если я добавлю LoadLibrary('gdiplus.dll')
вызов в файл dpr без вызова FreeLibrary
для возвращаемого дескриптора, таким образом gdiplus.dll
не выгружается во время выполнения разделов финализации.
Какузнать, какая часть программы создает поток, приводящий к нарушению доступа?
Есть ли способ идентифицировать код, который вызывает в освобожденное пространство памяти?
FastMM и madExceptНебольшая помощь, окно отчета об ошибках MadExcept появляется, но сразу же снова закрывается и не записывает файл журнала.
Я мог бы разорвать программу, но это не тривиальное приложение, и я бы предпочелрешить эту проблему с помощью какой-либо техники отладки.