Infracción de acceso de BEX o APPCRASH se produce en Windows Server 2008 R2 con servicios de Terminal Server.


Síntomas


Puede experimentar una infracción de acceso cuando su aplicación:

-Utiliza la API de Winsock o crypto API y puede con frecuencia cargar o descargar un archivo DLL dinámicamente.
-Es una aplicación multiproceso.

Cuando se produce la infracción de acceso, se genera el siguiente mensaje de error. Puede recibir APPCRASH o BEX evento Error.

Sample.exe aplicación ha dejado de funcionar.

Firma con problemas:
Nombre del evento de problema: APPCRASH
Nombre de la aplicación: Sample.exe
Versión de la aplicación: 0.0.0.0
Marca de tiempo de aplicación: 4afa1ed3
Nombre del módulo de falla: MSVCR80.dll
Versión del módulo a errores: 8.0.50727.4927
Marca de tiempo del módulo a errores: 4a2752ff
Código de excepción: 40000015
Desplazamiento de excepción: 000046b4
Versión del sistema operativo: 6.1.7600.2.0.0.16.7
Identificador de configuración regional: 1041

Firma con problemas:
Nombre del evento de problema: BEX
Nombre de la aplicación: Sample.exe
Versión de la aplicación: 0.0.0.0
Marca de tiempo de aplicación: 4afa1ed3
Nombre del módulo de falla: mswsock.dll
Versión del módulo a errores: 6.1.7600.16385
Marca de tiempo del módulo a errores: 4a5bda77
Desplazamiento de excepción: 000016bf
Código de excepción: c0000005
Datos de excepción: 00000008
Versión del sistema operativo: 6.1.7600.2.0.0.16.7
Identificador de configuración regional: 1041

Causa


La causa de este problema es un cambio realizado en Windows Server 2008 R2 a la vez cuando se inicializa el módulo tsappcmp.dll (remoto escritorio servicios de compatibilidad DLL de aplicación), que por lo tanto, la aplicación se llame a funciones DLL antes de que establece un vínculo con las funciones dentro de la DLL.

Solución


Para resolver este problema, realice una de las cuatro opciones siguientes:

1. excluir de la aplicación que tiene el error que se producen desde la prevención de ejecución de datos (DEP).

2. Agregue la opción del vinculador /TSAWARE para compilar la aplicación.

3. Agregue la opción /TSAWARE con herramienta editbin.exe.

-Ejecutar línea de comandos de Vistual Studio.
-Escriba el comando siguiente.

EDITBIN.exe /TSAWARE < nombre de archivo de programa >

-Puede confirmar que el programa es consciente de los servicios de Terminal Server mediante el siguiente comando.

/headers EDITBIN.exe < nombre de archivo de programa >
 :
Características de la DLL 8540
Base dinámica
NX compatible
No hay controlador de excepciones estructurado
Preparada para Terminal Server

2229865 cambio en el comportamiento del indicador de TSAware en.NET Framework 3.5 SP1


Más información


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".