<p>O KSCrash detecta a falha, mas a pilha de falhas está vazia</p>

Criado em 27 jul. 2017  ·  17Comentários  ·  Fonte: kstenerud/KSCrash

Recebo algum relatório de falha do nosso usuário, mas descobri que parte da pilha de falhas está vazia.
2017-07-27 3 00 07

Estes são alguns dos relatórios brutos de falhas do json.
1.txt
2.txt
3.txt

Comentários muito úteis

Vou dar uma olhada neste problema na próxima semana

Todos 17 comentários

Eu recebo o mesmo problema.

Eu encontro o mesmo problema. Alguém conserta?

Eu encontro o mesmo problema, mas por quê?

Como reproduzir o problema?

KSCrash define o cursor imageAddress para 0 na função kssymbolicator_symbolicate() ao analisar a tabela de símbolos sem Depurar Símbolos (Xcode --> configurações de compilação --> Estilo de tira --> Símbolos de depuração)
Boa sorte ...

Eu encontro o mesmo problema. Alguém conserta?

Todos os três relatórios fornecidos pelo autor do problema estão relacionados a exceções C++. Alguém recebeu falhas não-C++ sem backtrace?

@bamx23 #205 mostra por que as falhas do C++ não podem obter a pilha com falha. eu tenho uma pergunta, até agora, o problema foi resolvido? eu ainda posso obter uma pilha vazia quando exceções C++ em estruturas incorporadas?

Vou dar uma olhada neste problema na próxima semana

@ bamx23 eu recebo uma pilha muito vazia, "diagnóstico": "Tentativa de desreferenciar o ponteiro nulo."
vazio.txt

Se atender a pilha vazia para exceção C++, pode encontrar o motivo desse problema. https://github.com/kstenerud/KSCrash/issues/205

Desculpe, teria sido melhor dizer "próximo mês".
Eu verifiquei o KSCrash na falha do C++ no meu aplicativo de exemplo, mas os encadeamentos estavam ok. Alguém poderia fornecer um código de exemplo que reproduza o problema?

@chzhij5 irmão, qual versão do ks você está usando? 1.15.8?

Oi! Investigamos o problema e as possíveis soluções em nossa equipe. Há um:

Durante o processo de instalação do KSCrashMonitor_CPPException, podemos usar um "hack" descrito e implementado em https://github.com/facebook/fishhook. Ele permite ligar qualquer chamada de função do binário vinculado dinamicamente. Então nós conectamos __cxa_throw para todos os binários carregados.

Se alguma biblioteca tiver um símbolo fraco __cxa_throw (como o KSCrash tem atualmente), nós a chamaremos da mesma forma que fazemos agora. A ordem seria como [fishhooked one] -> [weak one] -> [libc++abi one] .

O único problema que não pode ser resolvido é se algum binário tiver um símbolo __cxa_throw forte nele, não podemos conectá-lo. Mas acho que não há opção para lidar com essa situação.

@kstenerud , o que você acha? Lemos sua postagem em stackoverflow e parece que a ideia acima pode resolvê-lo, pelo menos parcialmente.

Podemos ir em frente e criar um pull-request onde o anzol será uma dependência do KSCrash (ou subespecificação do KSCrash como 'KSCrash/Recording/ImprovedCPPExceptionsHandling').

[fishhooked one] -> [weak one] -> [libc++abi one] .

Na verdade, podemos chamar [libc++abi one] de [fishhooked one] caso [weak one] não chame, isso satisfaça os requisitos de @kstenerud .

Isso soa bem, vamos tentar na próxima semana em nosso aplicativo interno.

Aqui o PR: #375

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

pdrtrifork picture pdrtrifork  ·  12Comentários

kstenerud picture kstenerud  ·  4Comentários

1t2t3t4t picture 1t2t3t4t  ·  3Comentários

ferrous777 picture ferrous777  ·  30Comentários

happy201993 picture happy201993  ·  10Comentários