Нарушение доступа BEX или APPCRASH происходит в Windows Server 2008 R2 со службой терминалов.
Эта статья поможет устранить нарушение доступа BEX или APPCRASH в Windows Server 2008 R2 со службой терминалов.
Исходная версия продукта: Winsock
Исходный номер базы знаний: 2279689
Симптомы
Вы можете столкнуться с нарушением доступа, когда приложение:
- Использует API Winsock или API шифрования и может часто загружать или выгружать библиотеку DLL динамически.
- Многопоточное приложение.
При возникновении нарушения доступа создается следующее сообщение об ошибке. Вы можете получить сообщение об ошибке события APPCRASH или BEX.
приложение Sample.exe перестало работать.
Сигнатура проблемы :
Имя события проблемы: APPCRASH
Имя приложения: Sample.exe
Версия приложения: 0.0.0.0
Метка времени приложения: 4afa1ed3
Имя модуля сбоя: MSVCR80.dll
Версия модуля сбоя: 8.0.50727.4927
Метка времени модуля сбоя: 4a2752ff
Код исключения: 40000015
Смещение исключения: 000046b4
Версия ОС: 6.1.7600.2.0.0.16.7
Код языкового стандарта: 1041Сигнатура проблемы :
Имя события проблемы: BEX
Имя приложения: Sample.exe
Версия приложения: 0.0.0.0
Метка времени приложения: 4afa1ed3
Имя модуля сбоя: mswsock.dll
Версия модуля сбоя: 6.1.7600.16385
Метка времени модуля сбоя: 4a5bda77
Смещение исключений: 000016bf
Код исключения : c0000005
Данные исключения: 00000008
Версия ОС: 6.1.7600.2.0.0.16.7
Код языкового стандарта: 1041
Причина
Первопричиной этой проблемы является изменение, внесенное в Windows Server 2008 R2, к моменту инициализации модуля tsappcmp.dll (библиотека DLL с совместимостью приложений служб удаленных рабочих столов), что, следовательно, приводит к тому, что приложение вызывает функции DLL перед установкой связи с функциями в библиотеке DLL.
Решение
Чтобы устранить эту проблему, выполните один из следующих четырех вариантов:
Исключите приложение с ошибкой, возникающей из защиты от выполнения данных (DEP).
Добавьте параметр компоновщика /TSAWARE для сборки приложения.
Добавьте параметр /TSAWARE с помощью средства editbin.exe.
Запустите командную строку Visual Studio.
Введите следующую команду.
editbin.exe /TSAWARE <Program file name>
Вы можете убедиться, что программа знает о службе терминала, выполнив команду .
editbin.exe /headers <Program file name> : 8540 DLL characteristics Dynamic base NX compatible No structured exception handler Terminal Server Aware
Дополнительные сведения о флаге TSAware см. в статье Изменение поведения флага TSAware в платформа .NET Framework 3.5 с пакетом обновления 1 (SP1)