맞춤형 임베디드 Linux 보드를 개발 중입니다.Power PC 기반 SOC그리고 디스플레이 패널.
비디오 재생 중에 Linux 커널이 정지되고 sysrq-trigger에 응답하지 않는 문제를 디버깅하고 있습니다.
활성화하면 ftrace
문제가 사라집니다 . 우리는 또한 등과
같은 다양한 커널 해킹 옵션을 시도했습니다 debug soft irq
. detect hung task
아직 시도하지 않았 kdb
거나 kgdb
시도하지 않았지만 이 경우 도움이 될지 확실하지 않습니다.
Lauterbach 설정이 제대로 작동하지 않아 사용할 수 없습니다. :(
칩 공급업체에서 커널과 플랫폼 코드를 제공했지만 더 이상 사업을 하지 않으므로 지원이 없습니다 :(
방법 1
- 응답하지 않으면
sysrq-trigger
인터럽트 핸들러에 걸린 것으로 의심됩니다. - 그래서 직장에서(정지 전)
/proc/interrupts
사용 사례와 관련된 중단을 모니터링하고 파악했습니다. 그런 다음 섹션에 플래그를 추가noinit
하고 각 irq 핸들러의 시작 및 종료 시 이를 업데이트했습니다. 예전에 인쇄해본 적이 있어요request_irq
- 문제를 재현한 후 하드웨어 감시자가 시스템을 다시 시작한 후 이러한 플래그를 보면
dmesg
해당 값이irq_handlers
종료되었음을 나타냅니다. - 내가 본 적이 없는 irq 중 하나는 입니다
timer
. 그러나 아무것도 찾지 못하면 거기에도 플래그 토글을 추가하겠습니다. (그러나 거기에는 희망이 없다)
질문 세트 1
A) 커널이 멈추는 것 외에 무엇이 정지를 일으킬 수 있습니까 irq handler
?
B) 이 접근 방식을 개선하기 위한 제안 사항이 있습니까?
C) 다른 디버깅 기술이 있나요?
방법 2
- 과거에 서로 다른 펌웨어 버전을 테스트한 결과 커널에서 관련되지 않은 두 가지(비디오 재생과 관련이 없는 커널 모듈, 다른 하나는 커널 코드의 작은 변경) 변경으로 인해 이 문제가 발생하는 것으로 나타났습니다. 이러한 변경 사항을 제거하면 커널이 정지됩니다. 사라지고 떠날 것입니다.
- 그러나 두 가지 커널 변경 사항 중 하나가 유지되고 충돌이 다시 발생하면 더 많은 이야기가 있습니다.
- 우리는 이러한 변경 사항을 비판적으로 조사하여 관련 없는 변경 사항이 어떤 영향을 미치는지 판단할 것입니다.
질문 세트 2
A) 위 2번 방법의 관점에서 보면 혹시 특별히 의심되는 부분이 있는지요? (어떤 질문을 해야할지 모르겠어서 이렇게 질문드립니다.)
B) 이 접근 방식을 더욱 개선하기 위한 제안이 있습니까?