¿Los procesos de ArcMap.exe permanecen abiertos después de cerrar ArcMap? [cerrado]

23

Me di cuenta de que esto está sucediendo hace meses cuando no pude alterar la estructura de la tabla en una instancia de ArcMap después de que se cerró otra instancia. Cuando, por ejemplo, elimino o agrego algunos campos a una clase de entidad en ArcMap, guardo y cierro el documento y abro ArcCatalog e intento eliminar esa clase de entidad en particular obtengo el error Eliminar: no se pudo eliminar el objeto u objetos seleccionados. Esto generalmente ocurre cuando se abre una instancia de ArcMap que contiene capas que estoy tratando de eliminar, por lo que la solución es iniciar el Administrador de tareas de Windows y eliminar los procesos de ArcMap.exe que, por alguna razón, todavía están abiertos.

¿Alguien más tiene este problema?

Ahora ejecuta SP3 y el problema no se ha resuelto.

ingrese la descripción de la imagen aquí


Estoy ejecutando una configuración muy similar en una máquina comparable y no tengo este problema allí.

Jakub Sisak GeoGraphics
fuente
44
¡SÍ! Por favor vea la publicación de mi foro en los foros de ESRI. Estoy tratando de reproducirlo (parece aleatorio ...) para abrir un ticket con ESRI.
SaultDon
¿Tiene alguna extensión de terceros cargada? Me pregunto si una excepción en IExtension.Shutdown podría explicar esto.
Kirk Kuykendall
@kirk No tengo ninguno y nunca instalé ninguno en esta instalación de v10. Esta es incluso una nueva instalación de windows7. Similar a usted, esto ha persistido desde antes de SP1.
SaultDon
2
Está ejecutando casi 100 procesos, podría ser cualquier cosa realmente, pero sospecharía mucho de los escáneres de virus, software de respaldo y servicios de indexación de búsqueda.
blah238
@Kirk: no hay extensiones en esta configuración en particular, pero volveré a verificar cuando llegue al trabajo. Tengo algunas de mis propias herramientas add-own. Tengo una configuración similar en otra máquina con Windows 7 con los mismos complementos y sin problemas.
Jakub Sisak GeoGraphics

Respuestas:

18

No es tu culpa y no puedes hacer mucho al respecto. Sin embargo, si tiene curiosidad sobre el motivo, lo que sucede es que hay una referencia circular COM (lo más probable es que algo escuche algún origen de eventos, como el Editor) y cuando las aplicaciones intentan salir, no pueden, porque algunos objetos se mantienen entre ellos vivos. Esto puede ser desde una extensión que haya instalado, o incluso desde el propio código ESRI. Esto solía suceder todo el tiempo y solo puede manifestarse bajo ciertas condiciones, como ciertos comandos visibles en la barra de herramientas.

De un antiguo tutorial de ArcObjects sobre conceptos COM :

Cuando la aplicación sale, libera la referencia que tiene al comando. Si el comando también sirve como un receptor de eventos, la aplicación contiene otra referencia al comando, que no se puede liberar hasta que el comando se desconecte de la fuente. Como el comando no conoce un punto en el que pueda desconectarse que no sea su propio destructor, esto causa una referencia circular por la cual la aplicación no puede salir sin que el comando destruya y el destructor del comando nunca es llamado porque la aplicación tiene una referencia al comando . Esto hace que la aplicación se cuelgue al salir.

Si tiene más curiosidad, elimine (o haga una copia de seguridad) su Normal.mxt, lo que borrará todas las personalizaciones y verá si este problema persiste.

Ragi Yaser Burhum
fuente
3
+1 buena explicación. Me hace preguntarme si cerrar todas las barras de comandos excepto una, luego guardar y salir e intentar reproducir el problema. No creo que se llame a ICommand.OnCreate hasta que la barra de herramientas esté visible. Si activa gradualmente las barras de herramientas y repite las pruebas, tal vez podría reducir su lista de comandos sospechosos.
Kirk Kuykendall el
Buena explicación. Gracias. @Kirk: tengo una herramienta de terceros que olvidé (ArcBruTile). La eliminaré. Mi complemento realmente escucha algunos eventos, así que me pregunto si mi barra de herramientas podría ser la fuente del problema. Lo extraño es que tengo las mismas herramientas en mi otra máquina, así como el mismo conjunto de barra de herramientas predeterminada cargada y no tengo este problema allí. Intentaré comenzar con un Normal.mxt nuevo, esa es una buena sugerencia.
Jakub Sisak GeoGraphics
Además, a veces, cuando el acto de ser simplemente visible puede no ser necesariamente suficiente para causar la referencia circular, puede requerir algún evento para que esa condición se manifieste. Por ejemplo, el comando puede ser visible y todo está bien y listo esperando que ocurra el evento "StartEditing". Una vez que se dispara, decide comenzar a tomar referencias a otras cosas, y allí establece sus otras referencias que causan la condición circular. Este fue un problema clásico con las extensiones VB y aún más con los comandos .NET debido a la recolección de basura no determinista
Ragi Yaser Burhum
2

¡Gracias @Kirk y @Ragi por resolver este problema! Esto es lo que he hecho al monitorear los procesos del Administrador de tareas:

  1. Copia de seguridad y eliminación Normal.mxt
  2. Comenzó un nuevo documento de ArcMap (ArcMap se abrió en la configuración predeterminada)
  3. ArcMap cerrado (proceso cerrado como se esperaba)
  4. Toobars agregados: analista 3D, edición avanzada, herramientas de marco de datos, dibujar, editar vértices, editor, georreferenciación, etiquetado, diseño, ajuste
  5. Barras de herramientas dispuestas
  6. ArcMap cerrado (proceso cerrado como se esperaba)
  7. Comenzó un nuevo documento de ArcMap
  8. Agregué mi propia barra de herramientas personalizada con complementos
  9. ArcMap cerrado (proceso cerrado como se esperaba)
  10. Comenzó un documento ArcMap existente
  11. Utilicé la edición personalizada de inicio y detención en mi barra de herramientas, así como varias herramientas personalizadas
  12. ArcMap cerrado (proceso cerrado como se esperaba)

También eliminé y eliminé ArcBruTile

Los procesos de ArcMap ahora se cierran como se esperaba

Jakub Sisak GeoGraphics
fuente
2
habló demasiado pronto El problema ha vuelto.
Jakub Sisak GeoGraphics
Desafortunadamente, el soporte de ESRI ha estado copiando y pegando la respuesta anterior como una solución, cuando no parece estar funcionando: /
MaryBeth
@Jakub ¿Alguna vez encontró una solución a este problema? Estoy creando un complemento y recientemente noté múltiples procesos de ArcMap ejecutándose después de salir.
Barbarroja
Parece que el consenso es que los procesos se abren y no se cierran correctamente por complementos / extensiones de terceros. Construyo mis propios complementos y es posible que haya revisado todo mi código asegurándome de que se liberen todos los objetos o, y lo más probable, ESRI ha solucionado el problema en la fuente, ya que ya no ocurre en 10.3 y creo que ya desapareció en 10.2 Si esto sigue sucediendo, desinstale o elimine TODOS los complementos de terceros y vea si el problema persiste. Si no sigue girando, agregue uno por uno para localizar al culpable. Espero que esto ayude.
Jakub Sisak GeoGraphics
2

No estoy tratando de recuperar esta publicación de la muerte, pero al trabajar con el soporte de ESRI en este problema con un servidor Citrix (los usuarios se bloquean o cierran sesión, arcgiscachemanager.exe no se cierra 20-30 minutos más tarde o más, si es que lo hace, los usuarios no pueden volver a ArcMap y luego deben confiar en que 2 administradores del servidor estarán disponibles para iniciar sesión en el servidor y liberarlos manualmente), ESRI está copiando y pegando una solución de esta página y no funciona. Al menos no cuando se trabaja en un entorno Citrix.

Para Citrix, descubrimos que la creación de dos claves de registro (una para eliminar el proceso bloqueado y otra para devolver la configuración a su estado original) "solucionó" el problema.

Para los que no son Citrix, hemos jugado con la idea de simplemente crear un script para matar el proceso, pero como no estamos en Citrix, ya estamos en el servidor, decidimos que no era necesario.

Espero que esto ayude.

------- datos copiados del ticket de soporte escalado -------- Citrix tiene configuraciones de clave de registro que ayudarán a administrar aplicaciones que generan procesos secundarios en segundo plano. Tiene muchos de los síntomas que deberían hacer que esta solución sea una configuración plausible. Eche un vistazo a los siguientes artículos de conocimiento de Citrix:

El cierre de sesión correcto de una aplicación publicada representa la sesión en estado activo: http://support.citrix.com/article/CTX891671

Sesiones activas después de que el usuario cierre sesión en un entorno XenApp cuando se actualiza de Windows Server 2003 a Windows Server 2008: http://support.citrix.com/article/CTX134956

XenApp 6.5 AppCenter Console muestra el estado de la aplicación La aplicación no se está ejecutando: http://support.citrix.com/article/CTX133328

En estos artículos, se analiza cómo las aplicaciones publicadas pueden hacer que una sesión no se cierre o que un usuario no cierre la sesión correctamente. En esos casos, un administrador tenía que restablecer / cerrar las sesiones o finalizar el proceso desde el servidor que todavía se estaba ejecutando. Lo que sucede en Citrix es que publica la aplicación principal, en su caso ArcMap. Solo ese exe se cierra al salir de una aplicación (o si se bloquea). Como resultado, cualquier exe asociado con la aplicación que se generó cuando se abrió la aplicación no se cerrará completamente en Citrix, lo que provocará este estado. Entonces, cuando ArcGISCacheMgr.exe tarda mucho tiempo en ejecutarse o la aplicación se bloquea, los usuarios finales no pueden iniciar una nueva sesión.

Los artículos discuten cómo puede agregar estos procesos secundarios a una clave de registro para cerrarlos automáticamente al cerrar la aplicación principal. Otra opción que puede explorar es un script de cierre de sesión para verificar los procesos y finalizarlos si existen.

MaryBeth
fuente
2

Cree un archivo .bat, péguelo y guárdelo en el escritorio.

 taskkill /IM ArcGisCacheMgr.exe /f
 taskkill /IM ArcGisConnection.exe /f
 "C:\Program Files (x86)\ArcGIS\Desktop10.1\bin\ArcMap.exe"
shane
fuente
44
Una explicación de lo que hacen estos comandos (y sus opciones) ayudaría a los no iniciados a comprender su solución.
whuber
1

PsKill de SysInternals Suite (un kit de herramientas casi obligatorio en mi opinión) se puede vincular a un atajo y disparar a voluntad para limpiar los procesos colgados. Hacerlo es feo porque no hace nada para resolver el problema original, pero permite que uno continúe de manera rápida y eficiente.

pskill -t arcmap.exe

Últimamente he estado recibiendo procesos invisibles de arcmap.exe varias veces a la semana, no con tanta frecuencia antes, pero ha estado sucediendo durante algún tiempo. Usualmente estoy usando licencias concurrentes. Parece suceder más a menudo cuando tengo más de una sesión de Arcmap activa. Utilizamos antivirus Sophos, en Win7 de 64 bits.

wilkie mate
fuente