Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Estevaok

ERRO - Esvaziamento de pilha

Recommended Posts

Bom, apesar do título ser curto e grosso. meu problema acho que é um pouco mais complicado que isso.Problema, fiz um software no meu PC (windows XP PRO). Rodo o software aqui neste PC sem problemas atraves de F9, ou seja depois quando eu crio um instalador final. Até agora funcionou tudo perfeitamente.Fui testar em um outro PC com windows 98 com menos memoria que o meu com win XP.Perfeito, rodou sem problemas.Tentei rodar em um outro PC com win XP de um amigo.Problema, o software nem roda pois ocorre um erro e teve que ser fechado.Alias, não consegui fazer o programa rodar em nenhum outro win XP, seja PRO seja HOME. O unico que o software roda é o meu.Tentei rodar em outros windows 98. Em alguns da problema, de esvaziamento de pilha. mas como falei antes, em outros roda normalmente.Mas o problema, (quando da problema) acontece apenas quando tento ligar o programa, e não quando tento fazer algo dentro dele, não da nem pra entrar.Alguem me ajuda ae dessa vez ?obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Realmente é um erro cabuloso! <_< Já tentou aumentar o tamanho da pilha para ver o que acontece? E depurar na máquina que acontece o problema, já fez isso? Eu uma vez tive que fazer uma depuração remota na máquina de um usuário só pra achar o danado de um erro, tentar fazer isso.Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,Por experiência não poderei lhe ajudar, pois nunca passei por isso. No entanto, coloque algumas das características básicas para que possamos ter uma idéia melhor do problema. Você está utilizando algum banco? Qual conexão? Qual instalador foi utilizado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom. Respondendo:Modo depuração ? mas nunca apresentou erro quando tento rodar no meu PC no qual construi o programa. Edit: não li a mensagem toda, desculpa. mas uma depuração remota ? bah. é muita mão. mas se não achar o problema talvez eu tente mesmo.Caracteristicas:Uso database paradox. Um total de 6 tabelas por enquanto. Instalador, usei o INNO SETUP e a instalação ocorre sem problemas, pois jah isntalei em outros 2 PCs que já funcionaram o meu software. e incluo nessa conta mais a minha máquina que também instala e roda sem o menor erro.O software não mexe em nada no sistema operacional ou no computador, ele somente faz calculos matematicos com os valores das tabelas. só isso e mais nada.O único porém que um amigo meu comentou, é que meu software é um mar de recursividade e IFs. Ele comentou que isso pode estar ocasionando o problema com a memória.Mas nem esse problema consigo isolar, pois testei o software em uma máquina Athlon 1600 256 RAM DDR e funciona, mas não funciona em um P IV 3,0Ghz com 1Gb RAM DDR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu de novo,

 

Cálculos matemáticos hein! http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif Pode ser bem provável que seja o tamanho da pilha mesmo, softwares de equações matemáticas tendem a terem muitos cálculos recursivos o que estoura a pilha fácil fácil.

Pergunto de novo, já aumentou o tamanho da pilha? Pois independentemente da quantidade de memória que o computador onde você esteja testando tenha, a pilha tem um limite e se seus procedimentos precisam mais do que o especificado bye bye. B)

Vá em Project | Options | TabSheet Linker | GroupBox Memory Size, nas opções Min stack size e Max stack size. Veja que por default o Delphi coloca o valor máximo em 1048576 bytes (1Mb), aumente para 2Mb e faça uns testes, se funcionar vá diminuindo gradativamente até chegar num valor adequado ou deixe com 2Mb mesmo.

 

Boa Sorte! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, abuso de calculos matematicos nesse programa, e uso ainda mais o artificio random.Bom, isso é novidade para mim. Entao setando essa quantidade de memoria, seria a memoria que o software precisaria para rodar o programa ? interessante...e obrigado.farei novos testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

(neste momento começo a duvidar da capacidade dos meus amigos em fazer os testes que peço)Obrigado !PS: mas não rode o jogo pois entra em loop. ainda estou na metade da programação. e ainda nem cheguei a 10% da coisa pronta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, isso é novidade para mim. Entao setando essa quantidade de memoria, seria a memoria que o software precisaria para rodar o programa ? interessante...e obrigado.

Calma lá, esse valor dis respeito apenas a pilha de chamadas (e outros detalhes que não lembro agora) e não a quantidade de memória que o software precisa para rodar, essa memória já é outra história.Abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tirei o final de semana de folga e viajei pra praia, voltei ontem a tarde.Não pude ainda fazer mais testes, mas o software nunca deu problema comigo, sempre funcionou.Não está a fim de baixar ae pra ver se funciona ae tb ? :D Mas enquanto isso, seguirei com a programação normal pois aqui no meu PC funciona que é uma belezura.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recebi este e-mail do fórum IMasters e como a pergunta é bem relevante ao assunto estou postando aqui a resposta! :D

Existe um valor padrão p/ o tamanho da pilha?

ou melhor, um tamanho q seje bom p/ a aplicação mas q ñ cause nenhum tipo de dano....

 

Em resumo,  na sua opinião...

 

Qual o tamanho ideal p/ a pilha?

Bem, o valor padrão para o tamanho da pilha é 16,384 (16K) até 1,048,576 (1M), respectivamente, $MINSTACKSIZE e $MAXSTACKSIZE. O tamanho inicial pode ser extendido em blocos de 4,096 (4K) até o estabelecido em $MAXSTACKSIZE, mas este não pode ultrapassar 10,458,576 (10M).

 

Se o seu programa iniciar com uma pilha muito grande, ele consumirá mais tempo para iniciar, mas em compensação ele não precisará (teoricamente) aumentar a pilha no decorrer do uso.

 

Não existe uma fórmula ou método que possa ser usado para saber exatamente quanto de pilha o programa poderá vir a fazer uso (pelo menos desconheço), pois você precisaria saber: 1) a profundidade do seu código (qual a chamada de método que mais chama outros métodos); 2) Qual o tamanho de cada parâmetro e a quantidade destes em cada método; 3) O tamanho de cada variável local usada nestes métodos e por aí vai... :wacko:

 

Então o tamanho ideal da pilha é o que está especificado como padrão pelo Delphi, já tabalhei em projetos ERPs com mais de 1500 forms :blink: e este projeto atualmenet está com 35M ou mais de executável, o pessoal de programação diz que é o único executável que dá pra ver a olho nú no HD :lol: , acessando o Oracle, com várias threads e nunca precisei mexer nestes valores.

 

Conselho: Só mexa se você tiver problemas de estouro de pilha e se tiver certeza que esse estouro não é um erro de programação seu. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Abraços a todos B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, estou de volta.Rodados mais testes.Windows 98 - 5 testes, funciona em 5 das 5 testadas.Windows 2000 - funcionou no único PC que testei.Windows XP (todos PRO) - dos 5 PCs testados, não funcionou em 4, sendo que o unico que funcionou é o meu próprio no qual o estou criando o software.Existem diferenças dos windows que preciso saber na hora de fazer um programa que não mexe em nada do sistema ? só pego um monte de números de uma database paradox normal, faço umas operações matematicas com esses numeros e sai a resposta pro usuario e ao mesmo tempo guarda novos numeros na tabela.só.alguma dica ae ? alguem jah passou por isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A resposta se calhar é idiota, mas não haverá por aí softwares de protecção, tipo Firewalls? É que o programa não rebenta, já que nem sequer roda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.