ordcreate (0) internal error 8002 e error[35] general protec

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ReinaldoFreitas
Usuário Nível 2
Usuário Nível 2
Mensagens: 97
Registrado em: 02 Jul 2005 15:39

ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por ReinaldoFreitas »

alguem sabe como resolver estes erros:


ordcreate (0) internal error 8002 , quando vou indexar


error[35]:general protection fault, em um micro da rede com xp quando inicia o programa


obrigado..


uso clipper53 c/ exospace e optedit
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Reinaldo,

Este erro não tem solução. Eu também usava o Clipper53 + Exospace + Optedit e enfrentava o mesmo famigerado Erro 8002... Pesquisei meses (no Brasil e no exterior) à procura de uma saída e, pelo que li, ele é um bug (de algumas versões) do Clipper53 + Exospace e não tem solução. Para arquivos pequenos, beleza. Arquivos grandes com índices mais ou menos complexos? Esquece. Não funciona e ninguém sabe o porquê.

Aí, cansado de receber ligações de meus clientes, reclamando que o meu programa estava abortando, migrei de volta pro Clipper52 + Blinker51, com os mesmíssimos arquivos DBF e os mesmíssimos índices, e nunca mais ninguém me ligou reclamando.

Dá uma olhada em
"http://www.davep.org/clipper/FAQ/clipper-5.html#ss5.8",
um dos lugares onde achei alguma referência ao problema em questão.

Eles dizem o seguinte: "item 5.8 - O que é o Internal Error 8002? - O Clipper 5.3, linkado com o Exospace, falha ao criar índices com arquivos grandes e chaves complexas. Esta situação PODE resultar no erro 8002. Para corrigir isso, simplesmente use OPTEDIT: optedit programa.exe -extramin 4096. Talvez sua aplicação possa requerer valores maiores que 4096"

(note que eles dizem "...PODE resultar no erro...", ou seja, não é sempre que o erro acontece...)

Cara, tentei usar o tal OPTEDIT, com todas as opções e combinações possíveis, mas não funcionou. Tentei mudar os índices, a estrutura dos DBF, mas nada resolveu o problema. Aí voltei pro 52+Blinker e abri uma cerveja... eheheh

Eolo
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Todo erro deve possuir uma solução.

Verifique as chaves do indice que vc esta criando se as mesmas não devem estar causando este tipo de problema.

Exemplo:

Se voce estiver criando um indice de campo numerico onde os valores não tem tamanho fixo isto pode ser problema. Um caso é o uso de alltrim() ou outra função que devolva o resultado com len variavel.

INDE ON alltrim(nome) ...

Em primeiro lugar se usar algo assim, suas pesquisas nunca encontrarão nada e em segundo o indice ficará baleado na criação.

Verifique se por acaso a estrutura não esta baleando no uso ou na manutenção, exemplo: criou a tabela no Clipper com mais de 128 campos e foi abrir no dBase para fazer qualquer coisa.

Verifique se os seus indices possuem nomes diferentes para cada chave ou se dois comandos INDEX ON... para tabelas diferentes não estão criando o mesmo indice.

@braços :?)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Rochinha,

Bem, obrigado pelo "inho"... Me fez esquecer dos meus 55 anos! eheheh

Cara, trabalho com Clipper há muito tempo, tenho clientes que estão comigo desde 1985 (comecei com o Summer87+Rtlink rodando em XTs!), e lhe asseguro que a estrutura dos DBF e os índices estão 100% em ordem. Como eu disse no outro post, os mesmos fontes+DBFs, que hoje funcionam perfeitamente no 52+Blinker51 (Win95, 98, ME, XP), causavam o erro 8002 quando submetidos ao 53+Exospace+Optedit.

Você diz "todo erro DEVE possuir uma solução", ao invés de "todo erro TEM uma solução". Pois foi isso que eu achei em minhas pesquisas, tentando eliminar o 8002. As respostas são sempre "tente isso", "pode ser que seja aquilo" e por aí vai. Não achei, em nenhum lugar, uma resposta positiva para o problema, tipo "o erro 8002 acontece exatamente por causa de 'X'. Para solucionar, faça 'Y' e pronto"!

Ah, pra complicar: eu ensinei o Clipper para um funcionário de um cliente em SP e também o ajudei a montar o sistema deles (isso por volta de 1995). Hoje, ele usa o 53+Exospace+Optedit, e o erro 8002 nunca apareceu por lá... (????).

Abraço.

Eolo



PS. Dê, por exemplo, uma olhada em "http://www.ghservices.com/gregh/clipper/ie52.htm". O site está em inglês, então vou traduzir a seguir (com alguns comentários meus em letras MAIÚSCULAS), para ajudar quem só fala português. Eu tentei todas as opções apontadas abaixo; o erro 8002 ora aparecia, ora não, de forma absolutamente aleatória. Aí desisti.


"Erro de Indexação 8002 - Durante a indexação, o erro "ordcreate(0) internal error 8002" PODE acontecer. Isto PARECE acontecer USUALMENTE com programas compilados com o Clipper 5.3, linkados com o Exospace e rodando sob o Win95, EMBORA haja notícias de ter ocorrido também sob o Windows 3.1, com o Clipper 5.2e e 5.01, linkados com o Blinker. TIPICAMENTE, este erro acontece em arquivos "maiores" (mais de 10MB ou 80.000 registros), embora isso NÃO SEJA SEMPRE O CASO. Foi também reportado que o 8002 ocorre com a versão alemã do Clipper 5.3a, em um segmento do código que abre e fecha muitos arquivos DBF repetidamente. Quando o erro ocorre rodando sob Win95 um programa linkado com o Blinker, o programa termina com um "exception error" do Win. Quando linkado com o Exospace, o erro 8002 é apontado. O uso alternativo da opção "EXOSPACE PACKAGE NOVM" desativa o VMM, de forma que quando o Clipper usa toda a memória física disponível, PODE ocorrer tanto o erro 8002 quando o "memória convencional esgotada", então não é recomendado para aplicações comuns, embora ela possa ser apropriada para programas de instalação. O Blinker também tem uma opção semelhante. O erro 8002 PODE TAMBÉM SER CAUSADO por ALGUM erro em códigos C ou ASM, que alocam memória e depois não a liberam adequadamente. O sistema de memória do Win PODE INTERFERIR com o controlador de memória virtual do Clipper, causando o erro 8002. NÃO É POSSÍVEL DIZER se o erro é limitado ao DBFNTX RDD ou ocorre em outras (ou todas) RDDs. Solução: TENTE uma ou mais das seguintes opções:

1) TENTE aumentar a memória virtual disponível para os programas em Clipper. Inclua na variável de ambiente SET CLIPPER a opção //VMZISE:16834 (por exemplo set CLIPPER=//F:99 //VMSIZE:16834). TENTE usar valores diferentes (menores) para o //VMSIZE. O //F:99 é só um exemplo - você pode precisar de um número diferente.

2) o programa PODE estar precisando de mais STACK. Você pode ajustar o montante de STACK com o seguinte: no RTLINK, adicione /STACK:XXXX; no BLINKER, adicione /STACK XXXX (onde XXXX = número em bytes). O valor default para o XXXX é por volta de 5000. TENTE aumentar ele para 8192.

3) use o OPTEDIT com a opção EXTRAMIN. O programa OPTEDIT.exe é um utilitário que permite a você mudar o comportamento de seus programas em Clipper linkados com o Exospace. Tem sido reportado que valores de 4096 ou 8000 PODEM resolver o problema. Para reservar 4MB de memória, use o seguinte: OPTEDIT programa -EXTRAMIN 4096

4) uma aplicação linkada com o Exospace PODE estourar a memória virtual, se a memória virtual do Win estourar. TENTE aumentar o tamanho do arquivo de troca do Win"
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Vc já usava o bLinker, deveria ter continuado, pois o Exospace que vem com o Clipper 5.3 é a versão 1.0 enquanto que o Exospace encontrado por aí é mais atual.

Eu ja usei o BLinker 5.1 quando comecei a usar o Fivewin, foi então que me veio a idéia de usar o mesmo para meus programas em DOS então adaptei o .LNK da versão Windows e usei em meus aplicativos. Não tive mais problemas.

Hoje uso a versão 7.0. veja um exemplo do cabecalho de meu .LNK e veja que no caso de usá-lo com o DOS basta desativar a linha enfatizada.

BLINKER INCREMENTAL OFF
#// BLINKER EXECUTABLE COMPRESS
#BLINKER DEMONSTRATION DATA 2004/03/12
#BLINKER DEMONSTRATION MINUTES 1
#// BLINKER LINK VERSION 3.3
BLINKER CLIPPER SYMBOL OFF
#BLINKER OVERLAY THRESHOLD 256
#BLINKER OVERLAY UMB OFF
BLINKER CACHE XMS 50%,1024
BLINKER CACHE EMS 50%,1024
#BLINKER INCREMENTAL OFF
MAP A,S

PACKCODE
PACKDATA

DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
#exetype Windows 3.1
code moveable discardable
data preload moveable
stacksize 17000
heapsize 2048
segment 'PLANKTON_TEXT' nondiscardable
segment 'EXTEND_TEXT' nondiscardable
segment 'OM_TEXT' nondiscardable
segment 'OSMEM_TEXT' nondiscardable
segment 'SORTOF_TEXT' nondiscardable
segment 'STACK_TEXT' nondiscardable
DEFEND

NOBELL

OUT NFW.EXE

LIB TreeView
LIB Graph
LIB Internet, NFWLIB, SubNTX
LIB Five, FiveC, Objects, WinApi
LIB Clipper, Extend, DbfNtx, DbfCdx, _DbfCdx, Terminal
LIB FWEBEE52, FWPrint, NFLIB, ClipON

FILE NFW
FILE BLXCLP53 # Blinker DLL obj for the .EXE
FILE ERRSYSW # Blinker DLL obj for the .EXE
FILE REVISAO # Blinker DLL obj for the .EXE
FILE NFWRES

No caso do Win95, ele possui um bug na VREDIR.VXD que pode provocar problemas no tráfego dos arquivos em rede e por consequencia detonar os indices.

Outro dado significante é que o Win95 uso o SMARTDRV para manutenção do cache e melhora na velocidade de resposta de dados. O problema é que o SMARTDRV pode demorar alguns segundos para gravar a informação contida no cache em seus arquivos reais. Voce pode pegar o SMARTDRV.EXE do Win98 e colocar nestes Win95 e configura-lo com o parametro /X que desabilita escrita com delay, ou seja, grava os dados na hora.

Caso precise de mais informações sobre o SMARTDRV.EXE veja neste link.

Quanto ao VREDIR.VXD veaj neste link

@braços :?)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Rochinha,

Acho que vc não leu direito a minha resposta. Eu uso sim o Blinker51 + Clipper52 e não tenho problema nenhum de indexação em qualquer Windows (95, 98, ME, XP), em rede ou monousuário.

Na verdade, o caso aqui é o problema do Reinaldo Freitas, que tá enfrentando o erro 8002 usando o Clipper53 + Exospace + Optedit... A sua solução no LNK resolve em 100% o Erro 8002? Em qualquer Windows?

Reinaldo: talvez vc devesse tentar isso.

Abraço.

Eolo
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos

Este erro só aconteceu comigo nas vezes em que meu hd não tinha espaço de sobra e em se tratando de Windows o espaço retornado nunca é o real pois el aloca espaço para a pasta recycled, temporários de internet files e swap.

Se o erro ocorre em indices diferentes pode ser este o problema, não importa se o Windows reporta 2Gbytes livres, pois mesmo assim ainda é possivel não sobrar espaço fisico para trabalhos dos swap do exospace.

Se ocorre com o mesmo indice o problema pode ser resolvido verificando os campos e chaves do mesmo.

Mas, vamos resolver o problema, pois nestas horas é necessário reforço de fora pois nossas cabeças esquentam, clientes chiam, tlelefones tocam e não conseguimos ver a solução mesmo estando a nossa frente.

@braços :?)
clauber
Usuário Nível 3
Usuário Nível 3
Mensagens: 263
Registrado em: 22 Jul 2004 21:17
Localização: ceara

Mensagem por clauber »

ESSE ERRO ja aconteeu comigo te um rotina(funcao) de reindexaçao que tem a opcao de packear ou naum se o dbf tem mais de uma chave de indexacao uso so na primeira chave se fizer em mais de uma da o mesmo erro, ou quando uso na mesma chave dados diferentes sem suas devidas transformacoes:
dtos, str ou strzero, val e etc,,

uso rddcdx, clip53, exospace e o optedit
""
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Clauber,

O problema de packear só com um índice aberto é que, depois, vc tem que reconstruir os outros índices, certo?...

Cara, esse erro 8002 dá (ou PODE dar) mesmo que as suas chaves estejam absolutamente corretas (strzero, dtos, val, sem uso de alltrim, chaves únicas etc.). Repetindo o que eu disse aí pra cima: eu enfrentava o erro com o 53+exospace+optedit, aí peguei os mesmos arquivos, com as mesmas chaves (sem mudar NADA), passei a usar o 52+blinker51 e o problema sumiu... Abro simultaneamente, em um dos meus sistemas, 27 DBFs (total 31Mb) e 83 NTXs (total 36Mb), packeio um por um, os índices são todos atualizados normalmente...

Como já mencionei, pelo que eu já pesquisei esse parece ser um problema sem solução do 53 (ou em algumas versões dele). E, nessas pesquisas, nunca vi nenhuma resposta positiva, apontando pra uma solução definitiva.

Se alguém aí tiver a resposta definitiva, nós todos agradeceremos!

Eolo
Afonso Leal
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 09 Ago 2009 14:22
Localização: Brasília

Re: ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por Afonso Leal »

Olá pessoal !

Também precisei usar o exospace e me deparei com esse erro desanimador do comando de indexação.
Testei todo tipo de construção e, por mais boba que possa parecer, a solução me veio em um
complemento do comando INDEX. quando acrescentei na forma mais simples do comando a cláusula ALL
o problema parou de acontecer. Passo aqui prá quem quiser testar mais a sintaxe do comando:

- INDEX ON ( FIELD ) TO ( FILE ) ALL

Espero, apesar das postagens desse item serem todas de 2005, ser de ajuda a alguém.

Um abraço,

Afonso Leal
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por Maligno »

Olá.
Seja bem-vindo ao fórum. :)

Se você ainda usa Exospace, melhor seria abandoná-lo e passar a usar o BLinker, que está na versão 7. O BLinker é muito superior. No fórum há inúmeros tópicos tratando dele. É só fazer uma busca pela pesquisa do fórum.

As mensagens, bem antigas, tratam do BLinker 5.1, que já é bem antigo. Eu nunca usei o Exospace em produção. Apenas para teste. Também nunca tive esse erro 8002. Acho que fui "poupado" justamente porque sempre usei o BLinker. Aliás, eu nem lembrava dessa cláusula "ALL" do comando de indexação, que aliás, é default. Acho que ninguém usa. Se bem que eu só tenho uma única chamada de indexação em cada programa.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Afonso Leal
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 09 Ago 2009 14:22
Localização: Brasília

Re: ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por Afonso Leal »

Olá Maligno,

Obrigado pelas boas vindas e antes de mais nada quero agradecer pelas dicas que aqui achei para fazer
meu aplicativo rodar embaixo do XP. Esse Fórum é ótimo e já sei que me tornarei um frequentador assíduo.
Aceitei sua sugestão de atualizar compilador e linkeditor. Fiz os downloads que me sugeriu e vou estudar.
Mas logo de cara vou te fazer um pedido. Eu trabalho com comunicação direta através de porta serial com
impressoras fiscais. Antes usava a lib nt250 ( win98 ) e com o Clip5.3 passei a usar a Ct/Ctus ( xp ) e minha
pergunta é a seguite: É possível a partir do clipper trabalhar com porta USB? em caso positivo, qual o melhor
pacote para isso?

Em tempo: Também achei estranho um parâmetro default modificar o comportamento da função quando
passado explicitamente, mas fez diferença quando usei um loop de indexação de diversos arquivos tendo
pelo menos um deles maior que 10mb. Mas ( rsss ) foi o que deu ficar parado no tempo. Agora tenho que
correr atrás do prejuizo e me atualizar e agradeço a injeção de ânimo que esse site está me dando.
Obrigado mesmo...

Um grande abraço,
Afonso
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por Maligno »

É possível a partir do clipper trabalhar com porta USB?
Não. O acesso à porta USB depende de drivers que só estão disponíveis atualmente no Windows. Se realmente precisar de USB, há duas soluções: criar um programa Windows que faça o acesso à USB e que se comunique com seu programa via arquivo texto OU migrar seu programa para [x]Harbour.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por rochinha »

Amiguinhos,

Um abração para todos.

Amiguinhos será que neste caso não seria util usar um emulador como este que encontrei em:

http://www.electronica-pt.com/index.php ... fo/id,297/

Se ele faz o que promete voce faz acesso a uma porta COM virtual que se comunica com a porta USB.

Procure algo sobre FTDI, são drivers especializados neste tipo de ponte.

Não tenho certeza agora, mas acho que os drivers da balança PC Toledo possuem um virtualizador COM para USB.

@braços
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: ordcreate (0) internal error 8002 e error[35] general protec

Mensagem por Maligno »

O link quebrou, Rochinha. O Toledo avisou que na edição da nensagem alguns links estão ficando cortados.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder