2012-01-30 8 views
8

Recientemente, dos usuarios de nuestro software de la misma empresa comenzaron a experimentar cierres aleatorios (sin mensajes de error, cuadros de diálogo bloqueados, diálogos de abandono, etc.). Pudimos aislar lo que los dos sistemas tenían en común con un software en particular (un administrador de dispositivos de banda ancha móvil). Cuando se ejecuta este software, nuestro software se cierra aleatoriamente en un plazo de ~ 2 minutos. Si salimos del administrador de banda ancha, nuestro software se ejecuta indefinidamente sin problemas.Proceso que ha sido eliminado por una aplicación de terceros (Sprint Smartview)

No puedo pensar en ninguna razón por la que habría alguna interacción entre nuestro software y el de ellos. Nuestro software no accede a la red y el módem de banda ancha ni siquiera está enchufado en ningún caso.

Proporcionamos una solución temporal para el cliente (ejecute nuestro software como administrador o salga del administrador de banda ancha móvil antes de ejecutar nuestro software) pero queremos resolver el problema para que no tengan que preocuparse por hacer cualquiera de estas cosas .

Adjunté un depurador remoto a nuestro software, pero no estaba muy seguro de dónde buscar para investigar exactamente cómo está muriendo nuestro software. La depuración simplemente termina con el código de salida 0 cuando nuestro proceso finaliza.

Mi pregunta es, ¿cómo puedo investigar cómo y por qué se está matando un proceso de Win32 y qué puedo hacer para evitar que ocurra?

Editar: Abrí el administrador de banda ancha y las DLL que usa en un editor hexadecimal y allí hace referencia a un ejecutable con el mismo nombre que el nuestro. Así que supongo que ese es el enlace. Cambiar el nombre de nuestro ejecutable soluciona el problema para nuestros usuarios, pero no, desafortunadamente, la estupidez del Sprint SmartView.

Editar: Para ayudar al otro desarrollador rara esta golpea: Si el ejecutable se llama phoenix.exe y sus usuarios finales se están ejecutando Sprint SmartView, es por eso que su programa está muriendo al azar. Renombrar el ejecutable resolverá esto (o pasar varios meses de tu vida tratando de descubrir a quién notificar en Sprint para que esto realmente se resuelva). El archivo que menciona phoenix.exe específicamente es WwanCoreSdk.dll.

+0

si 'el módem de banda ancha ni siquiera está enchufado', ¿no puede desinstalar el controlador y luego decirle a sus autores que tienen problemas? – tomfumb

+1

@tomfumb: ¿Desinstalar el controlador de las computadoras de los clientes? ¡Ciertamente espero que no! – ildjarn

+0

@ildjarn: haz que lo hagan, ¿y por qué no? Si un proveedor de software descubrió que tenía un software defectuoso (o incluso peor) malicioso en su máquina que no estaba utilizando, ¿no lo desinstalaría? – tomfumb

Respuesta

1

Si su aplicación es de 32 bits, trate de revisar WinAPIOverride32. Le mostrará todas las llamadas realizadas por programa, por lo que si puede cronometrar el tiempo de matar su programa correctamente en el registro del administrador mencionado, debería ser más fácil explicar por qué está sucediendo.

+0

Gran idea. Si no me hubiera enterado, lo habría intentado el próximo. – eco

+0

Voy a aceptar esto porque (a pesar de que lo descubrí por una corazonada) probablemente me hubiera llevado por el camino correcto para descubrir qué estaba pasando. – eco

+0

Hmmm ¿Quién está matando cualquier proceso llamado 'phoenix.exe' sin verificar si es lo que quieres matar? Al menos alguna prueba de ruta ejecutable debe hacerse antes de finalizar. Incluso he pensado que renombrar el archivo exefile podría ser útil, pero luego pensé "vamos, ¿quién sería tan tonto para producir una aplicación tan loca?" ;) –

3

Desafortunadamente,

Un proceso no puede evitarse que se dé por terminada.

http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx

+1

Esa respuesta parece correcta y filosófica al mismo tiempo. – Lostsoul

+0

No creo que haya ningún argumento sobre * prevenir * que se mate el proceso. Tenía la impresión de que OP solo quería saber quién lo estaba haciendo. –

+0

@Kerrek SB: Mi respuesta fue a la pregunta del OP "... ¿qué puedo hacer para evitar que suceda?", Es decir, nada. – demoncodemonkey

Cuestiones relacionadas