navilera / NavilIMEforMac

맥OS 용 한글 입력기 (Hangul Input Method for MacOS
GNU General Public License v2.0
78 stars 6 forks source link

특정 상황에서 코어100% 로 자원을 다 차지하고 버벅거림 #5

Closed kty0113 closed 1 year ago

kty0113 commented 1 year ago
2022-11-29_18-16-51

monitor 앱에서 강제종료 해야 정상 상태로 돌아옵니다.

어떤 상황에서 저렇게 되는지 모르겠지만

4.5 버전 릴리즈 되자마자 사용했는데 3번 정도 겪었습니다.

방금 이 글을 적다가 [사용했] 을 적는 부분에서 연속으로 3번 멈춰서 일단 비활성화 해놓은 채로 글 씁니다.

navilera commented 1 year ago

재현 시나리오가 있으면 좋을텐데... 뭐가 문제인지 알 수가 없네요. 보통 저렇게 CPU 100% 먹으면서 hang 이면 무한루프 들어가서 못나오고 있는건데 소스코드를 리뷰해봐도 가능성 있는곳은 딱 한군데인데 이 곳도 의도적으로 메모리를 오염시키지 않는한 무한루프 가능성이 없거든요... 이슈 재현이 절실합니다.

혹시 모르니 재부팅 후 (재부팅은 보통 메모리를 클리어합니다.) 사용해 보시겠어요?

kty0113 commented 1 year ago

사용했는

을 타이핑 하는 과정에서 shift+ㅅ 을 누르고 shift 가 눌러진 상태에서 ㄴ 을 누르니까 멈추네요

kty0113 commented 1 year ago

재부팅 해도 동일한 상황입니다.

navilera commented 1 year ago

감사합니다. 제가 절대 생기지 않을거라고 생각했던 딱 그 상황이 생겼네요... 덕분에 나빌 입력기의 완성도를 높였습니다.

4.6버전에 이 이슈를 해결했습니다.

상황:

  1. 키보드 초,중,종성 테이블에 없는 입력은 오토마타로 들어가지 않음
  2. 현재 조합 중인 글자로 한글을 만들 수 없으면 오토마타를 무조건 승인하고 다음 글자의 자모로 간주하고 루프를 돔
  3. 조합 완료가 없을 때까지 루프를 계속 돔

원인:

  1. 두벌식 초성 테이블에 대문자 맵핑이 없음.
  2. 고속 타이핑 혹은 타이핑 습관 등 이유로 직전 글자 시프트 입력(대문자) 이후에 시프트 릴리즈 없이 다음 글자 초성에 시프트가 눌린채로 들어감
  3. 해당 글자는 종성테이블에 있으므로 한글 자모로 인식
  4. 오토마타에서는 한글을 만들 수 없으므로 조합을 승인
  5. 루프 이후 초성으로 가야하지만 초성 테이블에 없으므로 또 다음 글자를 대기하면서 루프돔
  6. 무한루프

해결: 두벌식 초성 테이블에 대문자 맵핑 추가.

kty0113 commented 1 year ago

빠른 피드백 및 수정 감사합니다. 정상작동 확인했습니다.