none
Error al llamar a un thread desde mi aplicación windows: 0x7340942b hace referencia a la memoria en 0x00000037 la memoria no se puede "read" RRS feed

  • Pregunta

  • Hola, tengo una aplicación windows que básicamente escucha peticiones desde un servidor de SAP. En el momento que le llega una petición, la aplicación crea y ejecuta un proceso hijo que ejecuta una aplicación por debajo que opera con ciertos datos y los escribe en un fichero que una vez acabado el proceso, la aplicación padre leerá.

    La aplicación la he desarrollado en un equipo W7 de 32 bits con el VS2005 y framework 2.0. En desarrollo la aplicación funciona correctamente.

    Sin embargo, cuando instalo la aplicación en los equipos de producción (winXP 32 bits, framework 2.0) la aplicación muestra una ventana de error después de ejecutar cada proceso hilo. Esto no supone que la aplicación se acabe ni que deje de funcionar correctamente, pero en cada ejecución salen varias ventanas de estas y esto no es válido para ponerlo en productivo.

    Adjunto pantallazo del error. A alguien se le ocurre algo? puede ser algo de dll? drivers?

     

     

    Muchas gracias!!


    • Editado Ivanyc miércoles, 21 de septiembre de 2011 17:41
    miércoles, 21 de septiembre de 2011 17:39

Respuestas

  • Hola a todos, por fín conseguí resolver el problema.

    La cuestión era que Windows XP gestiona "peor" la memoria utilizada por los hilos que Windows 7. El problema residía en que había accesos a memoria compartida no permitidos (el hilo padre accedía a memoria utilizada por el hilo hijo aún en ejecución).

    Para solucionar esto, simplemente hay que matar al hilo hijo cuando finalice de hacer su trabajo, de esta manera no esperamos a que lo haga el sistema operativo y nos aseguramos solventar los problemas de concurrencia:

    Dim p As New Process

    p = System.Diagnostics.Process.GetCurrentProcess

    p.Kill()

    Un saludo.

    • Marcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 8:13
    lunes, 26 de septiembre de 2011 8:12

Todas las respuestas

  • Una pista más: hemos descubierto que al depurar las aplicaciones que ejecutan los threads en un equipo de producción no aparece el popup, sólo aparece cuando se llama al thread desde la aplicación principal.
    • Marcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 7:58
    • Desmarcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 7:59
    • Marcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 8:04
    • Desmarcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 8:05
    • Marcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 8:12
    • Desmarcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 8:12
    miércoles, 21 de septiembre de 2011 18:06
  • Hola a todos, por fín conseguí resolver el problema.

    La cuestión era que Windows XP gestiona "peor" la memoria utilizada por los hilos que Windows 7. El problema residía en que había accesos a memoria compartida no permitidos (el hilo padre accedía a memoria utilizada por el hilo hijo aún en ejecución).

    Para solucionar esto, simplemente hay que matar al hilo hijo cuando finalice de hacer su trabajo, de esta manera no esperamos a que lo haga el sistema operativo y nos aseguramos solventar los problemas de concurrencia:

    Dim p As New Process

    p = System.Diagnostics.Process.GetCurrentProcess

    p.Kill()

    Un saludo.

    • Marcado como respuesta Ivanyc lunes, 26 de septiembre de 2011 8:13
    lunes, 26 de septiembre de 2011 8:12