SIGFPE (division by zero) in random number app

Aberta
#160 3 comentários 1 reação 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
cpp
Domínio
embedded-iot

Direção de pesquisa

Reproduza o crash no aplicativo de números aleatórios e, em seguida, inspecione InfiniTime/src/components/motion/MotionController.cpp e MotionController::ShouldShakeWake, concentrando-se no caso time == lastTime. Analise o patch anexado InfiniTime_FPE.zip e determine se o guard deve ficar em InfiniTime ou se apenas contorna um problema do simulador. Considera-se concluído quando a geração repetida de números aleatórios não encerra mais o simulador com SIGFPE.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Enter the random number app.
Click the "generate random number" button, or one of the "+" or "-" buttons, a few times.
Most of the times, this will stop the simulator process with a SIGFPE due to a division by zero in InfiniTime/src/components/motion/MotionController.cpp, function MotionController::ShouldShakeWake, because time == lastTime

This looks like having time == lastTime could be a simulator bug, not an issue on actual hardware, not sure.

Here's the patch I have applied locally to InfiniTime; let me know if you think it should go to InfiniTime (cleaned up of debugging output to cerr, obviously) for better robustness or is just a work-around for a simulator bug.

InfiniTime_FPE.zip

(sorry I upload it as a ZIP file, github doesn't let me attach a patch file with a messaging listing the supported file types, among which "PATCH")

Linguagem predominante
C++
Estrelas
205
Forks
99
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

  • Sem Dockerfile nem arquivo Docker Compose
  • Sem modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de InfiniTimeOrg/InfiniSim

Todas as issues de InfiniTimeOrg/InfiniSim

Issues semelhantes

Mais issues de C++

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.