При запуске с сети и обрыве сети ошибка C0000006
Windows 2000, Delphi 6, ADO.
Приложение запускается с сети. Если потом отключить сеть, то при выходе устойчиво получаю десяток External exception C0000006. При запуске со своей машины проблема исчезает.
Та же ошибка возникает иногда и в процессе работы при проблемах с сетью. После этого практически любое действие в программе приводит к той же ошибке вплоть до перезапуска приложения.
Отладка устойчивой ситуации (выход из программы при отсутствии сети) показал следующее.
Обрезание функциональности до минимума, т.е. запуск с одной пустой основной формой, но с подключенными библиотеками, ошибку не убирает (при этом ни одного обращения к базе не происходит).
Иногда спасают перестановки модулей в блоке uses.
Ошибка возникает при выполнении блоков Finalize некоторых модулей, а именно при освобождении строк в глобальных структурах данных этих модулей (в одной из сборок программы это ComCtrls и его глобальная запись RTFConversionFormat).
Похоже, кто-то при обрыве связи освобождает около 8 kb памяти в этих адресах.
Т.к
а) просмотрщик памяти среды показывает (сразу после обрыва), что эта память забита 0 (или, во всяком случае, он не может её просмотреть).
б) позднее в этой памяти начинают размещаться новые блоки (опять-таки судя по просмотрщику памяти).
в) любая попытка считать что-либо по этим адресам приводит к той же ошибке.
Ещё одна странность. Если до обрыва сети (в отладке) считать что-нибудь из этой памяти любым способом (хоть и просмотреть отладчиком), проблема уходит, память не страдает.
При запуске вне отладчика симптомы те же, но не всегда спасает просмотр памяти.
В итоге, пока что, перешли к локальным копиям exe-файлов.
В чём природа проблемы? Приветствуются любые идеи или подсказки.