menu

Kameleon

JavaScript platform for electronics prototyping

Channels
Team

버그 리포트를 합니다.(버그가 아닐수도,,,)

September 25, 2019 at 2:32pm

버그 리포트를 합니다.(버그가 아닐수도,,,)

September 25, 2019 at 2:32pm
버그 리포트를 합니다.
  1. 버그의 증상 및 현상: => 100ms timer interrupt를 보드에서 계속 실행 시 메모리 부족으로 보드가 down됨
( 가비지컬렉션으로 회수되는 메모리 보다 timer interrupt실행하는 코드 메모리가 더
빨라 서 메모리 부족으로 보드가 죽습니다. 리셋이 아닌 보드가 다운된 상태로 유지됨)
  1. 상세한 버그 재생 방법 (상세한 절차 또는 소스 코드) => 테스트 소스 코드: https://kameleon.io/@binibini/led-blinky/editor => 상세한 절차: 유저코드 실행 후 계속 로그가 나오는 데 그대로 5분간 지속되면 보드 다운
로그가 나오는 중간에 ">.mem" 으로 occupied memory/peak memory 확인 가능하며 계속 메모리를 확인해보면 occupied mem이 줄어들지 않고 계속 늘어나기만 함.
  1. 사용자의 컴퓨팅 환경 (운영체제 버전, 브라우저 종류) => win10 64bit / 크롬계열의 naver whale 브라우저
  2. 기타 참고 파일 첨부 (이미지, 동영상, 파일 등) => 제가 캡쳐는 아직 못했네여,,, 해당 코드 실행하면 계속 로그를 찍다가 5분 쯤 지나면 로그가 안나오고 바로 포트가 다운되고 보드가 리셋이 아닌 행업된 듯이 바로 현상 재현됨.
참고로 제품개발 시 어떤 보드 등 timer interrupt로 battery adc를 주기적으로 읽어야 할 때가 있습니다. 이런 경우 timer interrupt를 내부적으로 주기적으로 실행하는 경우가 있는데,,,참고로 예전에 mongoose OS ( https://mongoose-os.com/ )로 개발 시에도 이런 문제가 있었습니다.
임베디드 자바스크립트 특성 상 어쩔수 없는 문제인지 버그인지,,,확인부탁드립니다.^^.

September 26, 2019 at 3:15am
피드백 감사드립니다^^
말씀하신데로 가비지 컬렉션보다 메모리 소모가 더 빨라서 다운되는 것으로 추측이 됩니다. 현재 Kameleon Core 구동되는 MCU의 사양에서 다소 무리가 있는 것으로 추측됩니다. 아마 100ms 보다 충분히 크거나 MCU의 사양이 높아지면 문제가 해결될 수 있을것도 같습니다.
다만, 내부적으로 gc 타이밍을 좀 검토해볼 필요가 있어보입니다. 메모리가 거의 임계치에 다다랐을 경우 system을 block 하더라도 gc를 강제 수행하는게 필요하지 않을까 생각됩니다.
Edited
  • reply
  • like

October 9, 2019 at 4:22am
Github에 이슈로 등록되었습니다. https://github.com/kameleon-project/kameleon/issues/172
  • reply
  • like

October 15, 2019 at 5:45pm
현재 이 문제는 해결이 되었습니다^^ 일부 객체에 reference counting 에 문제가 있었습니다. 1.0.0-beta.2 에서 배포될 예정입니다. (10월말 예정)
  • reply
  • like