Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Проблемы с запуском 32бит exe в WinSrv 2008 R2


Автор: kami 23.12.2013, 22:56
Здравствуйте, уважаемые!
Есть проблема - периодически (непонятно почему) 32 битный экзешник пытается подхватить 64-битные длл со всеми вытекающими последствиями типа AppCrash.
Первый раз с таким столкнулся, просьба не пинать, возможно вопрос даже не сюда, а в форум по Windows.
В качестве примера (скопирована часть данных из журнала событий):
Код

<System>
  <Provider Name="Application Error" /> 
</System>
<EventData>
  <Data>H:\MyApp\Router.exe</Data> 
  <Data>C:\Windows\system32\rtutils.dll</Data> -- а вот оно тут как-то очень не.

А, например, сейчас приложение  стартовало нормально, в ProcessExplorer наблюдаю подключенную длл: C:\Windows\SysWOW64\rtutils.dll

Приложение своё, 32битное. "Ручками" ничего из этой библиотеки не импортирую, но подозреваю, что этим занимается IWebBrowser2 (вообще не нашел у себя в D2010, в моем коде и в сторонних сырцах упоминания rtlutils).
Ось: Win Server 2008 R2 Ent. x64 SP1
IE: v10
Сами dll (что 32, что 64 бит) "подлинные", ProcessExplorer говорит "Verified".

Проблема с этой dll выскакивает чаще всего. Пару дней назад вываливалось еще где-то на msxml6 (кажется), но сейчас уже не уверен в этом.

Собственно - не знаю даже, с какой стороны подступиться к этому. Подскажите что-нибудь, а?

Автор: Delvish 24.12.2013, 16:06
День добрый!
Смею предположить, что не работает механизм перенаправления WOW64
http://support.microsoft.com/kb/971163/ru

Автор: kami 24.12.2013, 20:58
Цитата(Delvish @  24.12.2013,  16:06 Найти цитируемый пост)
Смею предположить, что не работает механизм перенаправления WOW64

Полностью поддерживаю предположение, но - не понял, при чем здесь STDХХХ? Поясните, пожалуйста.

Автор: Delvish 24.12.2013, 22:11
В самою суть работы ядра х64 я не вдавался, но если грубо, то х32 приложения в ОС х64 выполняются не нативно, а в неком эмуляторе, т.е. существует прослойка, подключающая необходимые х32 библиотеки для обратной совместимости приложений (эдакий DosBox для 16-битных приложений). Т.о. у Вас происходит ситуация, когда один из механизмов перенаправления дает сбой и ОС считает что приложение не требует запуска эмуляторной прослойки. Более подробно (хотя отвлеченно немного от темы) по ссылке http://rakafon.blogspot.ru/2009/04/32-bit-dll-64-bit.html
Исправление беды кроется в каком-то из KB от Microsoft. Точнее подсказать, увы, не могу.

Автор: kami 25.12.2013, 13:31
Цитата(Delvish @  24.12.2013,  22:11 Найти цитируемый пост)
х32 приложения в ОС х64 выполняются не нативно, а в неком эмуляторе, т.е. существует прослойка, подключающая необходимые х32 библиотеки для обратной совместимости приложений

Да, я понимаю, что все дело в подсистеме WOW64, но мне от этого не легче.
Пересобрать приложение под х64 не могу, т.к. D2010.
В сети нашел еще несколько жалоб на краши, связанные с этой dll именно на этой оси, но однозначного решения в прочитанных топиках не было, только в одном проскользнула рекомендация внести в исключения DEP.

Проблему обошли - поставили приложение на комп с Win7 smile


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)