Os processos do ArcMap.exe permanecem abertos após o fechamento do ArcMap? [fechadas]

23

Percebi que isso estava acontecendo meses atrás, quando não consegui alterar a estrutura da tabela em uma instância do ArcMap depois que outra instância foi fechada. Quando, por exemplo, removo ou adiciono alguns campos a uma classe de recurso no ArcMap, salve e feche o documento, abra o ArcCatalog e tente excluir essa Classe de recurso específica que recebo o erro Excluir falha: falha ao excluir o (s) objeto (s) selecionado (s). Isso geralmente acontece quando uma instância do ArcMap que contém camadas que estou tentando excluir é aberta, portanto, a solução alternativa é iniciar o Gerenciador de Tarefas do Windows e matar os processos do ArcMap.exe que, por algum motivo, ainda estão abertos.

Alguém mais tendo este problema?

Agora executando o SP3 e o problema não foi resolvido.

insira a descrição da imagem aqui


Estou executando uma configuração muito semelhante em uma máquina comparável e não tenho esse problema lá.

Jakub Sisak GeoGraphics
fonte
4
SIM! Por favor, veja minha postagem no fórum da ESRI. Estou tentando reproduzi-lo (parece aleatório ...) para abrir um ticket com a ESRI.
SaultDon
Você tem alguma extensão de terceiros carregada? Gostaria de saber se uma exceção no IExtension.Shutdown pode explicar isso.
21411 Kirk Kuykendall
@kirk Eu não tenho nenhum e nunca instalei nenhum nesta instalação da v10. Esta é até uma nova instalação do windows7. Semelhante a você, isso persistiu desde antes do SP1.
SaultDon
2
Você está executando quase 100 processos, pode ser algo realmente, mas eu desconfiaria de antivírus, software de backup e serviços de indexação de pesquisa.
blah238
@ Kirk - não há extensões nesta configuração específica, mas vou verificar novamente quando chegar ao trabalho. Eu tenho algumas das minhas próprias ferramentas add-own. Eu tenho uma configuração semelhante em outra máquina Windows 7 com os mesmos complementos e sem problemas.
Jakub Sisak GeoGraphics

Respostas:

18

Não é sua culpa e não há muito que você possa fazer sobre isso. No entanto, se você estiver curioso sobre o motivo, o que acontece é que existe uma referência circular COM (provavelmente algo que está ouvindo alguma fonte de eventos - como o Editor) e quando os aplicativos tentam sair, não podem, porque alguns objetos estão mantendo um ao outro vivo. Isso pode ser de uma extensão que você instalou ou mesmo do próprio código ESRI. Isso costumava acontecer o tempo todo e só pode se manifestar sob certas condições, como certos comandos sendo visíveis na barra de ferramentas.

Em um antigo tutorial do ArcObjects sobre conceitos de COM :

Quando o aplicativo sai, ele libera a referência que mantém no comando. Se o comando também servir como um coletor de eventos, o aplicativo manterá outra referência ao comando, que não poderá ser liberada até que o comando seja desconectado da origem. Como o comando não sabe de um ponto em que pode desconectar-se além do seu próprio destruidor, isso causa uma referência circular na qual o aplicativo não pode sair sem o comando destruir e o destruidor do comando nunca é chamado porque o aplicativo mantém uma referência ao comando . Isso faz o aplicativo travar na saída.

Se você estiver ainda mais curioso, exclua (ou faça backup) o seu Normal.mxt, que eliminará todas as personalizações e verificará se esse problema persistir.

Ragi Yaser Burhum
fonte
3
+1 boa explicação. Me faz pensar se fechando todas as barras de comando, exceto uma, salve e saia e tente reproduzir o problema. Eu não acho que ICommand.OnCreate é chamado até que a barra de ferramentas esteja visível. Se você ativar gradualmente as barras de ferramentas e repetir os testes, talvez possa restringir sua lista de comandos suspeitos.
Kirk Kuykendall
Boa explicação. Obrigado. @ Kirk - Eu tenho uma ferramenta de terceiros que eu esqueci (ArcBruTile) e removerei isso. Meu suplemento realmente escuta alguns eventos, então eu imagino que minha barra de ferramentas possa ser a fonte do problema. O estranho é que tenho as mesmas ferramentas em minha outra máquina e o mesmo conjunto de barra de ferramentas padrão carregado e não tenho esse problema lá. Vou tentar começar com um novo Normal.mxt, que é uma boa sugestão.
Jakub Sisak GeoGraphics
Além disso, às vezes quando o ato de ser apenas visível pode não ser suficiente para causar a referência circular - pode ser necessário que ocorra algum evento para que essa condição se manifeste. Por exemplo, o comando pode estar visível e tudo está bem, aguardando o evento "StartEditing" acontecer. Uma vez acionado, decide começar a buscar referências para outras coisas - e aí estabelece outras referências que causam a condição circular. Este foi um problema clássico com extensões VB e ainda mais com .NET comandos por causa da coleta de lixo não-determinístico
Ragi Yaser Burhum
2

Obrigado @Kirk e @Ragi por resolver este problema! Aqui está o que eu fiz ao monitorar os processos do Gerenciador de tarefas:

  1. Backup e exclusão de Normal.mxt
  2. Novo documento do ArcMap iniciado (ArcMap aberto na configuração padrão)
  3. ArcMap Fechado (Processo fechado conforme o esperado)
  4. Toobars adicionados: analista 3D, edição avançada, ferramentas de quadro de dados, desenho, edição de vértices, editor, georreferenciamento, etiquetagem, layout, encaixe
  5. Barras de ferramentas organizadas
  6. ArcMap Fechado (Processo fechado conforme o esperado)
  7. Novo documento do ArcMap iniciado
  8. Adicionei minha própria barra de ferramentas personalizada com suplementos
  9. ArcMap Fechado (Processo fechado conforme o esperado)
  10. Iniciou um documento existente do ArcMap
  11. Usei o início e a edição personalizados na minha barra de ferramentas, bem como várias ferramentas personalizadas
  12. ArcMap Fechado (Processo fechado conforme o esperado)

Também removi e excluí o ArcBruTile

Processos do ArcMap agora fecham conforme o esperado

Jakub Sisak GeoGraphics
fonte
2
falou muito cedo. O problema está de volta.
Jakub Sisak GeoGraphics
Infelizmente, o suporte da ESRI copia e cola a resposta acima como solução, quando parece não estar funcionando: / #
MaryBeth 31/13/13
@Jakub Você já encontrou uma solução para esse problema? Estou criando um suplemento e notei recentemente vários processos do ArcMap sendo executados após a saída.
Barbarossa
Parece que o consenso é que os processos são abertos e não fechados adequadamente por addins / extensões de terceiros. Eu construo meus próprios suplementos e posso ter passado por todo o meu código, garantindo que todos os objetos sejam liberados ou, e mais provavelmente, o problema foi corrigido na origem pela ESRI, já que não está mais acontecendo na versão 10.3 e acredito que já desapareceu. 10.2 Se isso ainda estiver acontecendo, desinstale e ou remova TODOS os suplementos de terceiros e veja se o problema ainda existe. Caso contrário, adicione um por um para localizar o culpado. Espero que isto ajude.
Jakub Sisak GeoGraphics
2

Não tentando recuperar esta postagem dos mortos, mas enquanto trabalhava com o suporte da ESRI nesse problema com um servidor Citrix (os usuários travam ou saem, o arcgiscachemanager.exe não fecha 20 a 30 minutos mais tarde ou mais, se houver, os usuários não podem voltar ao ArcMap e precisam contar com dois administradores de servidor para estarem disponíveis para efetuar login no servidor e liberá-los manualmente), a ESRI está copiando e colando uma solução desta página e não funciona. Pelo menos não ao trabalhar em um ambiente Citrix.

Para a Citrix, descobrimos que a criação de duas chaves do Registro (uma para interromper o processo interrompido e outra para retornar as configurações ao estado original) "corrigiu" o problema.

Para os que não são da Citrix, brincamos com a idéia de apenas criar um script para interromper o processo, mas como quando não estamos na Citrix, já estamos no servidor, decidimos que não era necessário.

Espero que isto ajude.

------- dados copiados do tíquete de suporte escalado -------- O Citrix possui configurações de chave do Registro que ajudarão a gerenciar aplicativos que geram processos secundários em segundo plano. Você tem muitos dos sintomas que devem tornar essa solução uma configuração plausível. Veja os seguintes artigos de conhecimento da Citrix:

Logoff gracioso de um aplicativo publicado renderiza a sessão no estado ativo: http://support.citrix.com/article/CTX891671

Sessões ativas após o logoff do usuário em um ambiente XenApp quando atualizado do Windows Server 2003 para o Windows Server 2008: http://support.citrix.com/article/CTX134956

O XenApp 6.5 AppCenter Console exibe o status do aplicativo O aplicativo não está em execução: http://support.citrix.com/article/CTX133328

Nesses artigos, ele discute como aplicativos publicados podem fazer com que uma sessão não seja fechada ou que um usuário não seja desconectado corretamente. Nesses casos, as sessões precisavam ser redefinidas / encerradas por um administrador ou encerrando o processo no servidor que ainda estava em execução. O que acontece no Citrix é que você publica o aplicativo principal, no seu caso, o ArcMap. Somente esse exe é fechado ao sair de um aplicativo (ou se ele falha). Como resultado, qualquer exe associado ao aplicativo gerado quando o aplicativo foi aberto não será totalmente fechado no Citrix, resultando nesse estado. Portanto, quando o ArcGISCacheMgr.exe leva muito tempo para ser executado ou o aplicativo trava, os usuários finais ficam impossibilitados de iniciar uma nova sessão.

Os artigos discutem como você pode adicionar esses processos secundários a uma chave do Registro para fechá-los automaticamente ao fechar o aplicativo principal. Outra opção que você pode explorar é um script de logoff para verificar os processos e finalizá-los, se existirem.

MaryBeth
fonte
2

Crie um arquivo .bat, cole-o e salve na área de trabalho.

 taskkill /IM ArcGisCacheMgr.exe /f
 taskkill /IM ArcGisConnection.exe /f
 "C:\Program Files (x86)\ArcGIS\Desktop10.1\bin\ArcMap.exe"
shane
fonte
4
Uma explicação do que esses comandos (e suas opções) estão fazendo ajudaria os não iniciados a entender sua solução.
whuber
1

O PsKill do SysInternals Suite (um kit de ferramentas quase obrigatório na minha opinião) pode ser vinculado a um atalho e acionado à vontade para limpar os processos interrompidos. Fazer isso é feio, pois não ajuda a resolver o problema original, mas permite que você continue com rapidez e eficiência.

pskill -t arcmap.exe

Tenho recebido processos invisíveis do arcmap.exe várias vezes por semana ultimamente, não com tanta frequência antes, mas isso vem acontecendo há algum tempo. Normalmente, estou usando licenciamento simultâneo. Parece acontecer com mais frequência quando tenho mais de uma sessão do Arcmap ativa. Usamos o antivírus Sophos, no Win7 de 64 bits.

Matt Wilson
fonte