Questão Problema com o comando Ferramentas Externas do Visual C ++ 2010 (Express)


Normalmente nós desenvolvemos no VS 2005 Pro, mas eu queria dar uma chance ao VS 2010. Temos ferramentas de compilação personalizadas baseadas nas ferramentas do GNU make que são chamadas ao criar um executável.

Este é o erro que vejo sempre que chamo a minha ferramenta externa:

...\gnu\make.exe): *** couldn't commit memory for cygwin heap, Win32 error 487

A ressalva é que ele ainda funciona perfeitamente no VS2005, além de ser chamado direto da linha de comando. Além disso, minha ferramenta externa é configurada exatamente da mesma forma que no VS 2005.

Existe alguma configuração em algum lugar que poderia causar esse erro ser lançado?


0


origem


isso não seria melhor em stackoverflow? - warren


Respostas:


A partir de problema com heap, erro win32 487 :

Cada aplicativo Cygwin recebe um heap especial   área para armazenar coisas que são herdadas   aos processos filhos. Por exemplo. todo arquivo   estruturas descritoras são armazenados em   essa área de heap (chamada de "cygheap").   O cygheap tem espaço para pelo menos 4000   estruturas de descritor de arquivo. Mas -   essa é a pista - é tamanho fixo. o   cygheap não pode crescer. É tamanho é   reservado no início da aplicação   e é blocos são cometidos em   exigem.

Por algum motivo, o seu servidor   aplicação precisa de todo o cygheap   espaço quando executando sob o descrito   condições.

Uma possível solução pode ser encontrada em Alterando a Memória Máxima do Cygwin:

O heap do Cygwin é extensível. Contudo,   ele começa em um tamanho fixo e   tenta estendê-lo pode entrar em   memória que foi anteriormente   alocado pelo Windows. Em alguns casos,   esse problema pode ser resolvido adicionando   uma entrada no ou o   HKEY_LOCAL_MACHINE (para alterar o   limite para todos os usuários) ou   HKEY_CURRENT_USER (apenas para o   usuário atual) do registro.

Adicione o valor DWORD heap_chunk_in_mb   e configurá-lo para o limite de memória desejado   em decimal MB. É preferível fazer   isso em Cygwin usando o regtool   programa incluído no Cygwin   pacote. (Para mais informações sobre   regtool ou os outros utilitários do Cygwin,   veja a seção chamada “Cygwin   Utilities ”ou use a opção --help de   cada util.) Você sempre deve ser   cuidado ao usar regtool desde   danificando seu registro do sistema pode   resultar em um sistema inutilizável. este   exemplo define limite de memória para 1024 MB:

regtool -i set /HKLM/Software/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygwin

Saia de todos os processos Cygwin em execução e   reinicie-os. Memória pode ser alocada   até o tamanho da troca do sistema   espaço menos qualquer tamanho de qualquer   processos em execução. A troca do sistema   deve ser pelo menos tão grande quanto o   RAM fisicamente instalada e pode ser   modificada sob a categoria Sistema de   Painel de Controle.

Não faria mal para garantir que o tamanho máximo do arquivo de troca do Windows seja grande o suficiente.

E, a propósito, quanta RAM você tem em seu computador?


1



1.5gb de RAM ... arquivo de swap é definitivamente grande o suficiente ... eu vou ver se eu posso encontrar onde essas configurações são definidas no nosso processo de make ... não há nenhum ambiente cygwin real rodando em tempo de compilação .. tudo janelas exe que são chamados - the_e
@espais: Você está usando o cygwin make. Foi por intenção? Ou você pode mudar para a marca da Microsoft? - harrymc
Não ... usando as ferramentas gnu é o padrão do departamento ... o que eu estava começando era que todos os exe's são chamados em um ambiente não-cygwin (através de algum script de arquivo de lote criativo) - the_e
@espais: Esse ambiente criativo não aloca espaço de heap suficiente para os executáveis ​​do cygwin. Por alguma razão, o problema é mais agudo com o VS2010 Express. Você precisa corrigir esse ambiente ou usar outra porta Linux ou usar os utilitários da Microsoft. - harrymc
ok obrigado! Verei o que posso fazer - the_e


Talvez seja um problema com a Expressividade versus o Profissionalismo da versão. Você poderia tentar experimentar o julgamento da versão profissional.


0



Isso não faria qualquer sentido. - SLaks