Jump to content
Fivewin Brasil

Erros intermitentes tolos


oribeiro

Recommended Posts

Pessoal, Minha aplicao estdando uns erros intermitentes tolos, do tipo:

 

EXEMPLOS:

(1)

Aplicacao

=========

Aplicativo........: d:\sist\integr\mvend.exe

Versao............: 22.07.2013

Tamanho...........: 3.058.688 bytes

Maximo de arquivos: SetHandleCount( 0 )

Erro ocorrido em..: 29/07/2013 as 15:29:40 horas

Computador\Usuario: SERVTERM\ipawin\ELLEN

Descricao do erro.: Erro DBFCDX/1020 Data type error

Sequencia de erros

==================

Programa: NEWITEM Linha: 1809

Programa: (b)C_CEST Linha: 456

Na linha 1809 tem o comando:

CAIFORMATO[2] := (cDbfForm)->FORMATO

(2)

Aplicacao

=========

Aplicativo........: D:\sist\integr\mvend.exe

Versao............: 29.07.2013

Tamanho...........: 3.059.200 bytes

Maximo de arquivos: SetHandleCount( 0 )

Erro ocorrido em..: 29/07/2013 as 14:25:10 horas

Computador\Usuario: WIN-EK6GS1FGHP1\Mayara\ADMIN

Descricao do erro.: Erro BASE/1003 Variable does not exist: QTMOV

Sequencia de erros

==================

Programa: DEL_MOV Linha: 3483

Programa: APAGA_MOV Linha: 892

Nessa linha do programa esto comando (REPLACE abaixo):

Select(xDbMov)

If RLock()

REPLACE QTMOV WITH xQtMov

Não consigo reproduzir esses erros na minha rede, nem está acontecendo em todos os clientes, mas s intermitentes. Muito estranho!!!

Alguém já passou por isso?

Link to comment
Share on other sites

Olá

 

me parece que os erros acima listados ocorrem pq está utilizando uma área diferente, por causa de "Select(xDbMov)" , pois vc está usando sem o ponteiro (  -> )

 

coloque na sua rotina que documenta os erros para salvar/exibir qual o ALIAS atual que está em uso e a estrutura do arquivo associado a este ALIAS (dbstruct)

 

isso vai auxiliar vc a identificar oq está ocorrendo

 

Abraço

Link to comment
Share on other sites

Data type error

 

Ocorre quando tentamos gravar um campo com um conteúdo diferente do especificado na estrutura do arquivo.

 

Exemplo: gravar num campo tipo data um conteúdo ou variável caracter,    gravar mum campo numérico, um conteúdo alfanumérico ou vice-versa.

 

Analise os dados que estão sendo gravados nos campos, exibindo na tela o conteúdo e o tipo do dado que está sendo gravado.

 

DICA:

 

? CAMPO,TYPE("CAMPO")

 

REPLACE ALIAS->NOME_DO_CAMPO  WITH CAMPO

 

 

Espero ter ajudado.

Link to comment
Share on other sites

Vejam, por favor, que estranho:

Erro no sistema
===============
   Aplicativo........: d:\sist\integr\MVEND.EXE
   Versao............: 22.07.2013
   Tamanho...........: 3.058.688 bytes
   Erro ocorrido em..: 31/07/2013 as 08:22:36 horas
   Computador\Usuario: SERVERMAQ\win01\JUNIOR   
   Descricao do erro.: Erro DBCMD/2001  Workarea not in use: RLOCK

Sequencia de erros
==================
   Programa: FNRLOCK           Linha: 2789

Vejam essa funcao
=================
********************************************************************************************
FUNCTION FnRLOCK
********************************************************************************************
Local fLock := .T.
Local nTempo := 0
Local cDbf
PARAM fEsc // Permite escapar
DEFAULT fEsc := .F.
IF !USED()
   fLock := .F.
   MsgAlert("O Arquivo n estaberto para eu bloquear o registro.","Funo: FnRlock()")
ELSE
   cDbf := ALIAS()
   fLock := .T.
   nTempo := 0
   WHILE !(cDbf)->(RLOCK()) /// ====>>>> ESSA A LINHA ((( 2789 ))) <<<<====
      if !fEsc
         nTempo++
         SysWait(1)
         if nTempo=5
            nTempo=0
            MsgBeep()
            MsgAlert("O Registro ("+(cDbf)->(DBF())+") estsendo atualizado por outro!"+chr(13)+chr(13)+"Solicite que o registro seja libera do antes de continuar.","Ateno")
         endif
      else
         MsgBeep()
         MsgStop("O Registro ("+(cDbf)->(DBF())+") estsendo atualizado por outro.","N posso continuar")
         fLock=.F.
         EXIT
      endif
   ENDDO
ENDIF
RETURN(fLock)


Não é estranho? Eu verifiquei que o arquivo estava aberto com USED() e ainda assim, de vez em quando dá erro nessa linha. A minha dor de cabe que n acontece com frequência.

Aguardo, obrigado
.

Link to comment
Share on other sites

Vejam esse outro erro:
 

Aplicacao
=========
   Aplicativo........: D:\Suporte\Sist\sidnei\mvend.exe
   Versao............: 29.07.2013
   Tamanho...........: 3.059.200 bytes
   Maximo de arquivos: SetHandleCount( 0 )
   Erro ocorrido em..: 31/07/2013 as 09:28:34 horas
   Computador\Usuario: SERVSYS\Neto\ADMIN     
   Descricao do erro.: Erro BASE/1002  Alias does not exist: PPFtProdut
 
Sequencia de erros
==================
   Programa: FNPESQUISAPRODUT  Linha: 5391
 
Vejam o programa:
            Select PPFtProdut
            _Ordem = "Código"
            Set Order to 1 // Prod
            Seek oChave
            if Eof()
               _Ordem = "Descrição"
               Set Order to 2 // Descricao
               Seek oChave
               if Eof() // ===>>> ESSA É A LINHA 5391 <<<===
                  _Ordem = "Padrão"
                  Set Order to 3 // Padrao
                  Seek oChave
                  if Eof()
                     _Ordem = "Código de Barras"
                     Set Order to 4 // CodBar
                     Seek oChave
                     if Eof()
                        _Ordem = "Fornecedor + Descrição"
                        Set Order to 5 // Fornecedor
                        Seek oChave
                     endif
                  endif
               endif
            endif
 
Não dá para entender.
 
Link to comment
Share on other sites

Experimente este teste aqui para ver a reacao do seu sistema em rede. Troque o  Nome dos BANCOS para os seus...

 


FUNCTION VER_SE_ABRE_BANCOS()
 
 
   IF .NOT. FILE( "CADNFE.DBF" ) .OR. .NOT. FILE( "CADCESVE.DBF" ) .OR.     ;
      .NOT. FILE( "ICESVE.CDX" ) .OR. NETERR()
 
      MsgStop( OemToAnsi( "ATENۂO USUµRIO:                       " )+CRLF+ ;
               OemToAnsi( "PROBLEMAS NA REDE DE COMPUTADORES.     " )+CRLF+ ;
               OemToAnsi( "IMPOSSIVEL ABRIR BANCO DE DADOS.       " )+CRLF+ ;
               OemToAnsi( "VERIFIQUE SUAS CONEXÃ¥ES DE REDE.       " )+CRLF+ ;
               OemToAnsi( "O SEU COMPUTADOR NÇO CONSEGUE CONEXÇO  " )+CRLF+ ;
               OemToAnsi( "COM O SERVIDOR DE ARQUIVOS.            " )+CRLF+ ;
               OemToAnsi( "TENTE: DESLIGUE E RELIGUE O SEU COMPUTA" )+CRLF+ ;
               OemToAnsi( "DOR PELO <BOTÇO> DE DESLIGAR.          " )+CRLF+ ;
               OemToAnsi( "ESPERE 10 SEGUNDOS E RELIGUE-O.        " )+CRLF+ ;
               OemToAnsi( "SE MESMO ASSIM CONTINUAR ESTA MENSAGEM," )+CRLF+ ;
               OemToAnsi( "RETIRE TODOS OS USUµRIOS DA REDE E,    " )+CRLF+ ;
               OemToAnsi( "TENTE: DESLIGUE E RELIGUE O SERVIDOR DE" )+CRLF+ ;
               OemToAnsi( "ARQUIVOS ONDE ESTµ INSTALADO O PROGRAMA" )+CRLF+ ;
               OemToAnsi( "REINDEXAR TODOS OS ARQUIVOS DO PROGRAMA" )+CRLF+ ;
               OemToAnsi( "SE MESMO ASSIM CONTINUAR ESTA MENSAGEM," )+CRLF+ ;
               OemToAnsi( "CHAME O SEU TCNICO DE REDES(T.I.).    " ),      ;
               OemToAnsi( "Erro Fatal de Rede - Verifique Sua Rede" ) )
 
      DBCLOSEALL()
 
      QUIT
 
   ENDIF
 
RETURN( .T. )


Link to comment
Share on other sites

Agradeço seus comentários, mas, veja que em ambos os casos o arquivo está aberto, já executou funções nele ( veja as linhas que antecedem ao erro ) e eu não consigo reproduzir esse arquivo aqui no meu servidor. Ele acontece ( de vez em quando ) nos clientes.

 

No caso do PPFTProduto, a rotina mostra que foi dado o Select no arquivo, executados o cinco comandos nele (setorder, seek, eof(), setorder, seek) e no próximo comando eof() que deu erro, mas nem sempre esse erro dá nessa mesma linha.

 

Rapaz, estou ficando doido. (risos).

 

Obrigado, aguardo suas ponderações.

Link to comment
Share on other sites

HARBOURFLAGS =  -m  -w0

CFLAG1 =  -OS $(CFLAGS) -d -c -L$(HB_DIR)\lib;$(FWH)\lib

CFLAG2 =  -I$(HB_DIR)\include;$(CC_DIR)\include

RFLAGS =

LFLAGS = -L$(CC_DIR)\lib\obj;$(CC_DIR)\lib;$(HB_DIR)\lib -Gn -M -m -s -Tpe -x -aa -L$(FWH)\lib

IFLAGS =

LINKER = ilink32

 

ALLOBJ = c0w32.obj $(OBJFILES) $(OBJCFILES)

ALLRES = $(RESDEPEN)

ALLLIB = $(LIBFILES) import32.lib cw32.lib

.autodepend

 

#DEPENDS

 

#COMMANDS

.cpp.obj:

$(CC_DIR)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $**

 

.c.obj:

$(CC_DIR)\BIN\bcc32 -I$(HB_DIR)\include $(CFLAG1) $(CFLAG2) -o$* $**

 

.prg.obj:

$(HB_DIR)\bin\harbour -D__EXPORT__ -n -go -I$(HB_DIR)\include $(HARBOURFLAGS) -I$(FWH)\include -o$* $**

 

.rc.res:

$(CC_DIR)\BIN\brcc32 $(RFLAGS) $<

 

#BUILD
Link to comment
Share on other sites


xHarbour 1.2.3 Intl. (SimpLex) (Build 20130326)
Copyright 1999-2013, http://www.xharbour.org http://www.harbour-project.org/
 
Syntax:  c:\XHARBOUR1303\bin\harbour.exe <file[s][.prg]> [options]
 
Options:  /a               automatic memvar declaration
          /b               debug info
          /build           display detailed version info
          /credits         display credits
          /d<id>[=<val>]   #define <id>
          /es[<level>]     set exit severity
          /ex              create public function list (.xbx)
          /g<type>         output type generated is <type> (see below)
          /gc[<type>]      output type: C source (.c) (default)
                           <type>: 0=compact 1=normal 2=verbose (default)
                                   3=generate real C code
          /go              output type: Platform dependant object module
          /gh              output type: Harbour Portable Object (.hrb)
          /i<path>         #include file search path
          /j[<file>]       output i18n support [to <file>] to .hil
          /k               compilation mode (type -k? for more data)
          /l               suppress line number information
          /m               compile module only
          /n[<type>]       no implicit starting procedure (default)
                           <type>: 0=no implicit starting procedure
                                   1=no starting procedure at all
                                   2=force application starting procedure
          /o<path>         object file drive and/or path
          /p[o<path>]      generate pre-processed output (.ppo) file in <path>
          /pt[o<path>]     generate pre-processor trace (.ppt) file in <path>
          /q               quiet
          /q0              quiet and don't display program header
          /s               syntax check only
          /u[[+]<file>]    use command def set in <file> (or none)
          /undef:<id>      #undef <id>
          /v               variables are assumed M->
          /vd              external functions are assumed as dynamic functions
          /w[<level>]      set warning level number (0..3, default 1)
          /x[<prefix>]     set symbol init function name prefix (for .c only)
          /z               suppress shortcutting (.and. & .or.)
          @<file>          compile list of modules in <file>
xHarbour 1.2.3 Intl. (SimpLex) (Build 20130326)
Copyright 1999-2013, http://www.xharbour.org http://www.harbour-project.org/
 
Syntax:  c:\XHARBOUR1303\bin\harbour.exe <file[s][.prg]> [options]
 
Options:  /a               automatic memvar declaration
          /b               debug info
          /build           display detailed version info
          /credits         display credits
          /d<id>[=<val>]   #define <id>
          /es[<level>]     set exit severity
          /ex              create public function list (.xbx)
          /g<type>         output type generated is <type> (see below)
          /gc[<type>]      output type: C source (.c) (default)
                           <type>: 0=compact 1=normal 2=verbose (default)
                                   3=generate real C code
          /go              output type: Platform dependant object module
          /gh              output type: Harbour Portable Object (.hrb)
          /i<path>         #include file search path
          /j[<file>]       output i18n support [to <file>] to .hil
          /k               compilation mode (type -k? for more data)
          /l               suppress line number information
          /m               compile module only
          /n[<type>]       no implicit starting procedure (default)
                           <type>: 0=no implicit starting procedure
                                   1=no starting procedure at all
                                   2=force application starting procedure
          /o<path>         object file drive and/or path
          /p[o<path>]      generate pre-processed output (.ppo) file in <path>
          /pt[o<path>]     generate pre-processor trace (.ppt) file in <path>
          /q               quiet
          /q0              quiet and don't display program header
          /s               syntax check only
          /u[[+]<file>]    use command def set in <file> (or none)
          /undef:<id>      #undef <id>
          /v               variables are assumed M->
          /vd              external functions are assumed as dynamic functions
          /w[<level>]      set warning level number (0..3, default 1)
          /x[<prefix>]     set symbol init function name prefix (for .c only)
          /z               suppress shortcutting (.and. & .or.)
          @<file>          compile list of modules in <file>


Link to comment
Share on other sites

Agradeço seus comentários, mas, veja que em ambos os casos o arquivo está aberto, já executou funções nele ( veja as linhas que antecedem ao erro ) e eu não consigo reproduzir esse arquivo aqui no meu servidor. Ele acontece ( de vez em quando ) nos clientes.

 

No caso do PPFTProduto, a rotina mostra que foi dado o Select no arquivo, executados o cinco comandos nele (setorder, seek, eof(), setorder, seek) e no próximo comando eof() que deu erro, mas nem sempre esse erro dá nessa mesma linha.

 

Rapaz, estou ficando doido. (risos).

 

Obrigado, aguardo suas ponderações.

Oscar,

 

Passe o dbf explicitamente para a função, tipo

 

FUNCTION FnRLOCK(teuDBF)

 

E verifique dentro da função se o conteúdo de teuDBF contém o alias do dbf.

Link to comment
Share on other sites

Kleyber,

 

Fiz isso e o erro persiste e é intermitente.

 

Respondendo à pergunta do Kapiaba, o xHarbour 1.0.0 é o que veio com o FWH.

 

Se o xHarbour é desta versão, não acho que o problema seja do compilador.

 

Pergunta:

 

Este erro ocorre em modo REMOTO ou LOCAL?

 

Ocorre com windows XP e windows 7?

 

Tá dureza...

Link to comment
Share on other sites

Cara.. tu já experimentou trocar de servidor? Colocar numa outra máquina com o mesmo Win, e depois colocar em outra com uma versão diferente? 

Tu disse que o erro é "randômico", fica trocando de lugar(?!?!) já verificou a máquina??? Já tive problemas semelhantes e o culpado era superaquecimento do servidor!

Troca de cooler, ventilação do Rack e pasta térmica resolveram tudo!

 

Att.

Link to comment
Share on other sites

O erro está acontecendo em clientes diferentes, em momentos diferentes do programa, mas a maioria está com Windows 2003 Server.
Vejam esse novo:

Aplicacao
=========
Aplicativo........: \\servidor2\C\Sist\INTEGR\MVEND.EXE
Versao............: 22.07.2013
Tamanho...........: 3.058.688 bytes
Erro ocorrido em..: 05/08/2013 as 08:51:09 horas
Computador\Usuario: AUTO-86A426861C\Sai\ADMIN
Descricao do erro.: Erro GPFHANDLER/0 EXCEPTION_ACCESS_VIOLATION - O thread tentou ler/escrever num endereço virtual ao qual não tinha acesso.: GPFHANDLER

Sequencia de erros
==================
Programa: PRINTPRV Linha: 1191
Programa: PRINTPAGE Linha: 1128
Programa: (b)BUILDMENU Linha: 381
Programa: TMENU:COMMAND Linha: 416
Programa: TWINDOW:COMMAND Linha: 1002
Programa: _FWH Linha: 3300
Programa: TDIALOG:ACTIVATE Linha: 270
Programa: L_BOLC Linha: 262
Programa:(b)BUILDMENU Linha: 645
Programa: TMENU:COMMAND Linha: 416
Programa: TWINDOW:COMMAND Linha: 1002
Programa: TMDIFRAME:COMMAND Linha: 241
Programa:_FWH Linha: 3300
Programa: TMDIFRAME:ACTIVAT Linha: 951
Programa: MAIN Linha: 323

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...