Página 1 de 1

Erro de swap

Enviado: 24 Fev 2008 10:53
por Marquizeppe
Bom dia a todos.

Estou desenvolvendo um sistema comercial, e o módulo de estoques digamos que ficou gigante. Quanto estou incluindo um novo ítem no arquivo ou mesmo navegando entre eles, sistema interrompe a execução e sai para o promtp exibindo a seguinte mensagem:

__ATPROMPT (0) Urencoverable error:5311 Cannot create VM swap file

Alguém já passou por essa situação?

Antecipadamente agradeço.

Um abraço...

Enviado: 24 Fev 2008 11:04
por Maligno
Seja bem-vindo ao fórum. :)

Esse erro, segundo o manual, pode ter origem em 5 problemas diferentes:

1) disco cheio
2) diretório destino do swap não existente
3) número de FILE HANDLES insuficientes
4) path inválido (equivalente ao motivo 2)
5) direitos de usuário insuficientes

No caso de diretório inexistente e path inválido, normalmente o erro já acontece de cara, ao executar o programa. Acho que o mesmo deveria acontecer com direitos de usuário insuficientes. Então, provavelmente deve ser disco cheio. Ou mesmo o esgotamento do número de FILE HANDLES. Mas pelo que você comenta, parece mesmo ser disco cheio.

Mas pode ser interessante questionar se o swap deveria mesmo ocorrer. O sistema fica mais lento logo antes do swap?

Erro swap

Enviado: 24 Fev 2008 11:47
por Marquizeppe
Obrigado, por responder.

Disco cheio não pode ser, meu note tem 120Gb de HD e estou utilizando somente 40 Gb. Quanto ao diretório de swap eu não tenho ele criado, você poderia me explicar como faço para direcionamento do swap para este diretório. E quanto a File handles, o que vem a ser, como eu detecto isso?

Enviado: 24 Fev 2008 12:12
por Maligno
Se você nunca configurou o diretório para swap, então não deve ser isso, pois na falta dessa configuração, o linker utiliza ou o diretório de onde a aplicação foi executada ou o raiz. Não sei dizer ao certo. Nem lembro quando foi a última vez que usei o RTLink. Então não sei dizer como configurá-lo. Mas se for BLinker, você tem três alternativas: no script de linkedição, na linha de comando ou numa variável de ambiente. Leia o help dele para saber os detalhes.

O parâmetro FILE HANDLES (ou alças de arquivos) é uma variável ambiental do DOS que lhe diz qual é a quantidade máxima de arquivos que ele pode manter abertos ao mesmo tempo. É configurado no arquivo CONFIG.SYS em Windows não-NT e no arquivo CONFIG.NT em Windows de kernel NT. O formato é simples: FILES=<n>.

Agora, swap é coisa que dificilmente acontece com quem prefere montar seus programas para utilizar o modo protegido, onde eles passam a utilizar toda a memória extendida que lhe for dada (2MB, 4MB, 8MB, etc). É que nesse caso o endereçamento de memória deixa de ser segmentada e passa a ser linear, e numa quantidade bem maior. Dificilmente um programa, por maior que seja, precisaria de swap em uma situação dessas. Pelo jeito, você ainda usa o modo real, onde os swaps são mais corriqueiros. No fórum esse assunto já foi tratado à exaustão. Caso se interesse, faça uma busca pelo termo "modo protegido". Vários links serão informados.

Enviado: 24 Fev 2008 12:36
por Clipper
Prezado Colega

Esse erro acontece mais frenquentemente quando especificamos o diretório de SWAP na variável de ambiente Clipper e esqecemos de criar o mesmo diretório.

Para corrigir esse problema basta criar o diretório que está especificado no SET CLIPPER.

Exemplo :

SET CLIPPER=//F:240 //SWAPPATH:C:\TEMP
Neste caso você deverá criar o diretório TEMP no disco C

Até logo.

Marcelo

Enviado: 24 Fev 2008 12:40
por Maligno
No modo real, ao especificar um diretório de swap que não existe, o mais comum é que o programa aborte logo na execução e não durante o uso do programa.