Internet Explorer + ActiveX + Memory Size
От: vladgolovkov  
Дата: 15.04.09 20:36
Оценка:
Добрый день!

Достался по наследству проект ActiveX написанный на C++ (Visual Studio 6.0 sp5) с использованием ATL и библиотеки Object Grid 8.01.
ActiveX представляет собой grid, используемый на web страницах. Данные в grid передаются в виде xml. Он данные обрабатывает и соответствующим образом заполняет/конфигурирует grid.
Столкнулся с проблемой: после определенного порогового объема данных ActiveX обрушивает Internet Explorer. При этом никаких сообщений пользователю не выдается, окно браузера тихо закрывается.

Отладка показала две ситуации при которых падает браузер:
1. в определенной ситуации оператор new поднимает исключение CMemoryException. При этом объем памяти процесса iexplorer.exe составляет порядка 100М (т.е. физической памяти предостаточно). Написал обработчик этого исключения. Это исправило данную ситуацию, но появилась другая.
2. в определенной ситуации возникает SEH исключение Access Violation. Перехватить данное исключение никак не удается: Visual Studia говорит Unhandled Exception. (перехватить его при помощи catch(...) не получается)

Ситуация осложняется еще те, что есть подозрения на то что ошибка в библиотеке Object Grid и исправить ее не удастся. Поэтому, хотелось хотя бы обойти ошибку.

Сам я новичок в c++ поэтому прошу отнестись снисходительно.
Подскажите:
1. Есть ли в IE какие-либо ограничения на потребляемую ActiveX кучу и стек? Можно ли каким то образом подсказать IE, что для моего ActiveX нужно больше кучи и больше стек?
2. Каким образом перехватывать SEH исключение Access Violation? .

И, знатоки C++, будьте добры, подскажите, куда в подобной ситуации копать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.