Ir para conteúdo
  • Cadastre-se

dev botao

Erro "Segmentation fault" ao executar método NFE_DistribuicaoDFePorUltNSU


leoprates
Ver Solução Respondido por leoprates,
  • Este tópico foi criado há 198 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa Tarde Daniel!
Alterei para 4096 e ainda da o erro abaixo.
Creio que o certificado e a senha estejam sendo corretamente configurados no método "NFE_ConfigGravarValor", uma vez que se eu colocar a senha errada ou o diretório errado do certificado o erro muda.

 

10/10/23 15:52:56:433 -    SetRetorno(-16, WebService Distribuição de DFe:
- Inativo ou Inoperante tente novamente.
Erro Interno: -2
Erro HTTP: 500
error:140AB18E:SSL routines:func(171):reason(398)
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

O XML de retorno pode ser maior ainda, 6, 7, 8k.

Para efeito de testes, tente valores maiores, exemplo 16k e veja se resolve.

Outro teste, tente passar o ultNSU errado, o método vai retornar um XML pequeno e descartamos a hipótese do buffer se permanecer o problema.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Fundadores

@antonio.carlos,

Você consegue reproduzir esses testes, com esses métodos, no Demo do ACBr em C#

@leoprates,

Qual versão da DLL você está utilizando ?

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia!

Realizado teste com o programa exemplo em C# e Dll no ambiente Windows.

image.png

 

Citar

11/10/23 11:12:01:402 - NFe_DistribuicaoDFePorUltNSU(35,18760540000139,0)
11/10/23 11:12:01:406 - Travar
11/10/23 11:12:01:410 - NFe_DistribuicaoDFePorUltNSU, Executar
11/10/23 11:12:01:968 - NFe_DistribuicaoDFePorUltNSU, Proces.Resp DistribuicaoDFe
11/10/23 11:12:01:973 -    MoverStringParaPChar. StrLen:253, BufLen:256
11/10/23 11:12:01:978 -    SetRetorno(0, [DistribuicaoDFe]
CStat=137
CUF=0
DhRecbto=
Msg=Nenhum documento localizado
VerAplic=1.6.2
Versao=1.01
XMotivo=Nenhum documento localizado
arquivo=
dhResp=11/10/2023 11:12:02
indCont=1
maxNSU=000000000000000
tpAmb=2
ultNSU=000000000000000
)
11/10/23 11:12:01:982 - Destravar
 

 

Estamos montando um ambiente Linux para testar com o exemplo em Java.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Uma observação que talvez valha conferir.

Se verificarmos nas classes em C#, Java e VB6 que são fornecidas pelo ACBr, as mesmas aumentam automaticamente o tamanho do buffer quando o mesmo é pequeno demais em comparação ao tamanho real.

Veja o exemplo em Java onde ele aumenta em 30% o tamanho do buffer.

    protected String processResult(ByteBuffer buffer, IntByReference bufferLen){
        int bLen = bufferLen.getValue();
        if (bLen > STR_BUFFER_LEN) {
            int tamanhoBuffer = (int)(Math.round(bLen * 1.3));
            ByteBuffer nBuffer = ByteBuffer.allocate(tamanhoBuffer);
            IntByReference nBufferLen = new IntByReference(tamanhoBuffer);
            UltimoRetorno(nBuffer, nBufferLen);
            return fromUTF8(nBuffer, nBufferLen);
        }

        return fromUTF8(buffer, bufferLen);
    } 

No exemplo em Node.js que foi fornecido pela comunidade, isso não é feito.

Se possível tente implementar algo nesse sentido para ter uma segurança a mais nessa questão do tamanho do buffer.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Consultores

@leoprates por desencargo, além do teste realizado no C# utilizando ACBrLibNFe.dll 
Fiz um teste com a ultima versão ACBrLibNFe.so.. em uma VM utilizando o programa exemplo Java.. veja:
image.png

logacbrlib.txt

Referente ao Consumo indevido, foi por conta do teste que Diego fez e logo em seguida eu realizei o teste no Java, necessário aguardar 1 hora, para realizar uma nova consulta.. 

Parece ter alguma relação ao tamanho do buffer.
Veja que o @Diego Foliene comentou como funciona o buffer para o Java, seguimos este padrão para todos os Exemplos.. C#, VB6.. eles também aumentam o tamanho do buffer quando necessário..

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores
6 horas atrás, Renato Rubinho disse:

Mais uma coisa, a declaração da variável não deveria ser "var", "string", etc?

Em tese uma constante não receberia um retorno.

@leoprates, reforço também o que nosso amigo @Renato Rubinho lhe orientou aqui.

Você está usando:

const aloc_sResposta = Buffer.alloc(BUFF_LENGTH);
const aloc_esTamanho = ref.alloc(ref.types.int, BUFF_LENGTH);

Se conferirmos como é feito no exemplo em node.js disponível no SVN, é usado assim:

let aloc_sResposta = Buffer.alloc(buflength);
let aloc_esTamanho = ref.alloc('int', buflength);

Retirado da Developers Mozila:

Citar

const
A declaração const cria uma variável cujo o valor é fixo, ou seja, uma constante somente leitura. Isso não significa que o valor é imutável, apenas que a variável constante não pode ser alterada ou retribuída.

let

let permite que você declare variáveis limitando seu escopo no bloco, instrução, ou em uma expressão na qual ela é usada. Isso é inverso da keyword var (en-US), que define uma variável globalmente ou no escopo inteiro de uma função, independentemente do escopo de bloco.

 

  • Curtir 3
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Pessoal, tentei implementar as sugestões, porém ainda recebo o erro de Segmentation fault.
Vou deixar o código abaixo para que possam avaliar.

 

import ref from "ref-napi";
import acbrDLL from "../acbrDLL";
import EnvProtocol from './protocols/Env.protocol';
import { AcbrProtocol } from './protocols/Acbr.protocol';
import AcbrIniProtocol from './protocols/AcbrIni.protocol';
import { Result } from "./Result";
import { Util } from './Util';
 
interface IResponse {
  success: boolean;
  data?: object | any | undefined;
  message?: string | undefined;
}
 
type ResponseDFes = {
  success: boolean;
  DistribuicaoDFe: any;
  message?: string;
};
 
class Acbr implements AcbrProtocol {
 
  constructor(
    private readonly acbrIni: AcbrIniProtocol,
    private readonly env: EnvProtocol,
    private readonly result: Result,
    private readonly utilResult: Util
  ) { }
 
  private readonly BUFF_LENGTH = 16000;
  private readonly chaveCrypt: string = "";
  private aloc_sResposta = Buffer.alloc(this.BUFF_LENGTH);
  private aloc_esTamanho = ref.alloc(ref.types.int, this.BUFF_LENGTH);
 
  init() {
    let result: number = 0;
    result = acbrDLL.NFE_Inicializar(this.acbrIni.path, this.chaveCrypt);
    this.result.check(result, "NFE_Inicializar");
 
    this.setup();
  }
 
  private setup() {
    this.acbrIni.setValue(
      "DFe",
      "Senha",
      "minha_senha"
    );
 
    this.acbrIni.setValue(
      "Email",
      "Nome",
      this.env.getProperty("MAIL_DESCRIPTION")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Servidor",
      this.env.getProperty("MAIL_SERVER")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Usuario",
      this.env.getProperty("MAIL_USER")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Senha",
      this.env.getProperty("MAIL_PASSWORD")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Porta",
      this.env.getProperty("MAIL_PORT")!!
    );
 
    this.acbrIni.setValue("Email", "SSL", this.env.getProperty("MAIL_SSL")!!);
    this.acbrIni.setValue("Email", "TLS", this.env.getProperty("MAIL_TLS")!!);
  }
 
  finish() {
    const result = acbrDLL.NFE_Finalizar();
    this.result.check(result, "NFE_Finalizar");
  }
 
  async getFinalResponse(length: number): Promise<IResponse> {
    return new Promise((resolve, reject) => {
      const aloc_sResposta = Buffer.alloc(length);
      const aloc_esTamanho = ref.alloc(ref.types.int, length);
 
      acbrDLL.NFE_UltimoRetorno.async(
        //@ts-ignore
        aloc_sResposta,
        aloc_esTamanho,
        (err: any, result: any) => {
          try {
            if (err) throw new Error(err);
            this.utilResult.checkResult(result);
            resolve({
              success: true,
              message: Util.sTrim(aloc_sResposta.toString()),
            });
          } catch (error) {
            reject({
              success: false,
              message: error,
            });
          }
        }
      );
    });
  }
 
  async checkPointerResponse(
    result: number,
    alocResposta: Buffer,
    alocLength: ref.Pointer<number>
  ): Promise<any> {
    try {
      this.utilResult.checkResult(result, "NFE_DistribuicaoDFePorUltNSU");
 
      let message = Util.sTrim(alocResposta.toString()) || "";
      const bufferLength = alocLength.deref();
 
      let looping = true;
 
      if (bufferLength <this. BUFF_LENGTH) {
        looping = false;
      } else {
        if (message.length < bufferLength && message.length > this.BUFF_LENGTH) {
          looping = false;
        } else {
          if (message.length >= bufferLength) {
            looping = false;
          }
        }
      }
 
      if (looping === true) {
        // Aumentar o tamanho do buffer em 30%
        const novoTamanho = Math.round(bufferLength * 1.3);
        this.aloc_sResposta = Buffer.alloc(novoTamanho);
        this.aloc_esTamanho = ref.alloc(ref.types.int, novoTamanho);
 
        const resUltimoRetorno = await this.getFinalResponse(novoTamanho);
        if (!resUltimoRetorno.success)
          throw new Error(resUltimoRetorno.message);
 
        message = resUltimoRetorno.message || "";
      }
 
      return {
        success: true,
        data: message,
      };
    } catch (error) {
      return {
        success: false,
        data: error,
      };
    }
  }
 
  getDFesPorUltNSU = async (num_ult_nsu_recebido: string) => {
    console.log("getDFesPorUltNSU");
 
    return new Promise<ResponseDFes>(async (resolve, reject) => {
      const ufAutor = 35;
      const cnpjcpf = "06319316000127";
 
      console.log('NFE_DistribuicaoDFePorUltNSU')
      acbrDLL.NFE_DistribuicaoDFePorUltNSU.async(
        ufAutor,
        cnpjcpf,
        num_ult_nsu_recebido,
        // @ts-ignore
        this.aloc_sResposta,
        this.aloc_esTamanho,
        async (err: any, result: number) => {
          try {
            if (err) {
              console.error(err);
              reject(err);
            }
 
            const response = await this.checkPointerResponse(
              result,
              this.aloc_sResposta,
              this.aloc_esTamanho
            );
 
            console.log({ response });
 
          } catch (error: any) {
            console.error(error);
            reject({
              success: false,
              message: error.message,
            });
          }
        }
      );
    });
  };
 
}
 
export default Acbr;
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores
2 minutos atrás, leoprates disse:

Pessoal, tentei implementar as sugestões, porém ainda recebo o erro de Segmentation fault.
Vou deixar o código abaixo para que possam avaliar.

 

import ref from "ref-napi";
import acbrDLL from "../acbrDLL";
import EnvProtocol from './protocols/Env.protocol';
import { AcbrProtocol } from './protocols/Acbr.protocol';
import AcbrIniProtocol from './protocols/AcbrIni.protocol';
import { Result } from "./Result";
import { Util } from './Util';
 
interface IResponse {
  success: boolean;
  data?: object | any | undefined;
  message?: string | undefined;
}
 
type ResponseDFes = {
  success: boolean;
  DistribuicaoDFe: any;
  message?: string;
};
 
class Acbr implements AcbrProtocol {
 
  constructor(
    private readonly acbrIni: AcbrIniProtocol,
    private readonly env: EnvProtocol,
    private readonly result: Result,
    private readonly utilResult: Util
  ) { }
 
  private readonly BUFF_LENGTH = 16000;
  private readonly chaveCrypt: string = "";
  private aloc_sResposta = Buffer.alloc(this.BUFF_LENGTH);
  private aloc_esTamanho = ref.alloc(ref.types.int, this.BUFF_LENGTH);
 
  init() {
    let result: number = 0;
    result = acbrDLL.NFE_Inicializar(this.acbrIni.path, this.chaveCrypt);
    this.result.check(result, "NFE_Inicializar");
 
    this.setup();
  }
 
  private setup() {
    this.acbrIni.setValue(
      "DFe",
      "Senha",
      "minha_senha"
    );
 
    this.acbrIni.setValue(
      "Email",
      "Nome",
      this.env.getProperty("MAIL_DESCRIPTION")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Servidor",
      this.env.getProperty("MAIL_SERVER")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Usuario",
      this.env.getProperty("MAIL_USER")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Senha",
      this.env.getProperty("MAIL_PASSWORD")!!
    );
 
    this.acbrIni.setValue(
      "Email",
      "Porta",
      this.env.getProperty("MAIL_PORT")!!
    );
 
    this.acbrIni.setValue("Email", "SSL", this.env.getProperty("MAIL_SSL")!!);
    this.acbrIni.setValue("Email", "TLS", this.env.getProperty("MAIL_TLS")!!);
  }
 
  finish() {
    const result = acbrDLL.NFE_Finalizar();
    this.result.check(result, "NFE_Finalizar");
  }
 
  async getFinalResponse(length: number): Promise<IResponse> {
    return new Promise((resolve, reject) => {
      const aloc_sResposta = Buffer.alloc(length);
      const aloc_esTamanho = ref.alloc(ref.types.int, length);
 
      acbrDLL.NFE_UltimoRetorno.async(
        //@ts-ignore
        aloc_sResposta,
        aloc_esTamanho,
        (err: any, result: any) => {
          try {
            if (err) throw new Error(err);
            this.utilResult.checkResult(result);
            resolve({
              success: true,
              message: Util.sTrim(aloc_sResposta.toString()),
            });
          } catch (error) {
            reject({
              success: false,
              message: error,
            });
          }
        }
      );
    });
  }
 
  async checkPointerResponse(
    result: number,
    alocResposta: Buffer,
    alocLength: ref.Pointer<number>
  ): Promise<any> {
    try {
      this.utilResult.checkResult(result, "NFE_DistribuicaoDFePorUltNSU");
 
      let message = Util.sTrim(alocResposta.toString()) || "";
      const bufferLength = alocLength.deref();
 
      let looping = true;
 
      if (bufferLength <this. BUFF_LENGTH) {
        looping = false;
      } else {
        if (message.length < bufferLength && message.length > this.BUFF_LENGTH) {
          looping = false;
        } else {
          if (message.length >= bufferLength) {
            looping = false;
          }
        }
      }
 
      if (looping === true) {
        // Aumentar o tamanho do buffer em 30%
        const novoTamanho = Math.round(bufferLength * 1.3);
        this.aloc_sResposta = Buffer.alloc(novoTamanho);
        this.aloc_esTamanho = ref.alloc(ref.types.int, novoTamanho);
 
        const resUltimoRetorno = await this.getFinalResponse(novoTamanho);
        if (!resUltimoRetorno.success)
          throw new Error(resUltimoRetorno.message);
 
        message = resUltimoRetorno.message || "";
      }
 
      return {
        success: true,
        data: message,
      };
    } catch (error) {
      return {
        success: false,
        data: error,
      };
    }
  }
 
  getDFesPorUltNSU = async (num_ult_nsu_recebido: string) => {
    console.log("getDFesPorUltNSU");
 
    return new Promise<ResponseDFes>(async (resolve, reject) => {
      const ufAutor = 35;
      const cnpjcpf = "06319316000127";
 
      console.log('NFE_DistribuicaoDFePorUltNSU')
      acbrDLL.NFE_DistribuicaoDFePorUltNSU.async(
        ufAutor,
        cnpjcpf,
        num_ult_nsu_recebido,
        // @ts-ignore
        this.aloc_sResposta,
        this.aloc_esTamanho,
        async (err: any, result: number) => {
          try {
            if (err) {
              console.error(err);
              reject(err);
            }
 
            const response = await this.checkPointerResponse(
              result,
              this.aloc_sResposta,
              this.aloc_esTamanho
            );
 
            console.log({ response });
 
          } catch (error: any) {
            console.error(error);
            reject({
              success: false,
              message: error.message,
            });
          }
        }
      );
    });
  };
 
}
 
export default Acbr;

Por favor, procure sempre disponibilizar em forma de arquivo, disponibilizando como print, dificulta análise dos colegas.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Ainda com relação ao problema, na maioria das vezes (independente do tamanho so buffer) o erro Segmentation Fault é retornado.
No entanto, algumas vezes o código executa e retorna o erro:
'WebService Distribuição de DFe:- Inativo ou Inoperante tente novamente.\n' +
      'Erro Interno: -2\n' +
      'Erro HTTP: 500\n' +
      'URL: https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx\n' +
      'error:140AB18E:SSL routines:func(171):reason(398)'.

WhatsApp Image 2023-10-11 at 17.58.36.jpeg

WhatsApp Image 2023-10-11 at 17.58.12.jpeg

Diego, peço desculpas por ter enviado o código por escrito.

Tentei enviar por arquivo e não consegui. Todas as tentativas a página me deu erro com código -200.

Editado por leoprates
Link para o comentário
Compartilhar em outros sites

  • Consultores

 

async getFinalResponse(length: number): Promise<IResponse> {
    return new Promise((resolve, reject) => {
      const aloc_sResposta = Buffer.alloc(length);
      const aloc_esTamanho = ref.alloc(ref.types.int, length);

Na getFinalResponse permanece a aloc_sResposta como const, talvez seja o problema.

Se não resolver mudando a constante acima, como ajustando automaticamente o tamanho do buffer permaneceu o problema, acredito que seja a hora de dar um passo para trás.

Consegue fazer um exemplo bem enxuto, somente com o básico para a comunicação?

Você tem algum outro método funcionando nesta lib? Se tiver, tente fazer um bem enxuto também para compararmos o que funciona com o que está com erro.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Renato! 

Alterei as const para let mas não funcionou.
Os métodos que utilizo antes desse são o NFE_Inicializar e o NFE_ConfigGravarValor que funcionam corretamente.

Simplifiquei ao máximo o método NFe_DistribuicaoDFePorUltNSU mas ao chegar nele é acusado o erro Segmentation fault ou é gerado o log em anexo.

ACBrLibNFE-20231013.log

Link para o comentário
Compartilhar em outros sites

  • Consultores

Se pesquisarmos esse erro no Google:

 

Citar

140AB18E:SSL routines:func(171):reason(398)

Ele trás 3 resultados, sendo um deles este próprio tópico.

Apelando um pouco mais e pesquisando no ChatGPT, ele nos devolve:

Citar

A mensagem de erro que você forneceu, "140AB18E:SSL routines:func(171):reason(398)," está relacionada ao OpenSSL, uma biblioteca amplamente usada para implementar os protocolos Secure Socket Layer (SSL) e Transport Layer Security (TLS) para comunicação segura pela internet.

Essa mensagem de erro geralmente indica que houve um problema com uma conexão SSL/TLS. O código de erro "140AB18E" pode ser desmembrado da seguinte forma:

O "14" indica que é um erro relacionado ao SSL/TLS.

O "0AB18E" é o código de erro específico que fornece mais detalhes sobre o problema.

O significado exato desse código de erro pode variar dependendo do contexto e da versão específica da biblioteca OpenSSL que você está usando. O erro é um código hexadecimal que corresponde a uma condição de erro específica dentro da biblioteca OpenSSL.

Ambos indicando ser algo relacionado a OpenSSL/Certificado.

Veja se não tem nenhuma outra versão da OpenSSL além da 1.1.1.0 que possa estar conflitando.

Já voltamos um pouco fazendo um programinha mais simples, é possível voltar e testar em um novo ambiente? Primeiro Windows, depois Linux e por fim no Docker?

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá, Diego!

No windows tem funcionado sem problema.
Meu microsserviço de emissão de NFE funciona no mesmo ambiente que o de recepção de XML e não da problema com o SSL.
Para sanarmos essa possibilidade removi o openssl instalado, vou criar um novo ambiente no WSL com conda e instalar todas as dependências do zero para testar.
Logo menos retorno. De já, obrigado pelo retorno!

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Criei um novo ambiente do zero e o problema continua.

(recepcao-2) root@maure:/home/node/erp-cloud-recepcao-xml-automatica# openssl version
OpenSSL 1.1.1q  5 Jul 2022

Ou da o erro de segmentation
image.png.4be2ed2f573947b3730198c435d72159.png

ou o do log

13/10/23 14:24:56:644 - NFe_DistribuicaoDFePorUltNSU(35,06319316000127,000000000000001)
13/10/23 14:24:56:644 - Travar
13/10/23 14:24:56:644 - NFe_DistribuicaoDFePorUltNSU, Executar
13/10/23 14:24:56:700 - Destravar
13/10/23 14:24:56:700 -    SetRetorno(-16, WebService Distribuição de DFe:
- Inativo ou Inoperante tente novamente.
Erro Interno: -2
Erro HTTP: 500
error:140AB18E:SSL routines:func(171):reason(398)
 
  MotivoRetornadoDoWebService: "")
13/10/23 14:24:56:703 - LIB_UltimoRetorno
13/10/23 14:24:56:703 -    MoverStringParaPChar. StrLen:272, BufLen:39000
13/10/23 14:24:56:703 -    Codigo:-16, Mensagem:WebService Distribui[195][167][195][163]o de DFe:[CR][LF]- Inativo ou Inoperante tente novamente.[LF]Erro Interno: -2[LF]Erro HTTP: 500[LF]URL: https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx[LF]error:140AB18E:SSL routines:func(171):reason(398)[LF][LF]  MotivoRetornadoDoWebService: ""
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Debugando com segfault-handler o retorno é o log abaixo:

 

NFE_DistribuicaoDFePorUltNSU
PID 24905 received SIGSEGV for address: 0x18
/home/node/erp-cloud-recepcao-xml-automatica/.esbuild/.build/node_modules/segfault-handler/build/Release/segfault-handler.node(+0x37a5)[0x7f4bb009f7a5]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x14420)[0x7f4bb23b2420]
/lib/x86_64-linux-gnu/libpthread.so.0(pthread_rwlock_wrlock+0x16)[0x7f4bb23abd46]
node(CRYPTO_THREAD_write_lock+0x9)[0x1966af9]
node(ossl_x509v3_cache_extensions+0x3e)[0x19dbbde]
node(X509_get_extension_flags+0x11)[0x19dca81]
/usr/local/lib/libssl.so(+0x6c4a5)[0x7f4b904c84a5]
/usr/local/lib/libssl.so(SSL_CTX_use_certificate+0x2a)[0x7f4b904a021a]
/home/node/erp-cloud-recepcao-xml-automatica/assets/acbr/dllacbrnfe/bin/Linux/libacbrnfe64.so(+0x50a452)[0x7f4b92425452]
Segmentation fault
Link para o comentário
Compartilhar em outros sites

  • Consultores

Infelizmente não consegui montar um ambiente com seu exemplo.

Não tenho conhecimento profundo da linguagem e precisaria de um exemplo básico para tentar simular o problema.

Por favor, tente fazer um teste com o demo que temos no projeto( lib_test_teste-acbrlibnfe.js ) adicionando somente o método da Distribuição.

Caso consiga reproduzir o erro com este demo, por favor, anexe o arquivo com seus ajustes para tentarmos simular aqui também.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 198 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.