본문 바로가기

추천팁

대다수의 OS X 마운틴 라이언 사용자들이 겪어봤을 버그들, 그 주범은 'appleeventsd'. 해결책은 없을까?

들어가며

아래는 OS X 10.8 마운틴 라이언의 몇 가지 대표적인 버그를 모아본 것입니다. 현재 사용하시는 맥에 아래 문제가 간헐적으로 나타나거나, 현재 겪고 계시지는 않은지 한 번 확인해 보시기 바랍니다. ▼




  1. OS X 마운틴 라이언이 설치된 시스템의 종료 소요 시간이 30초 이상 지연되는 문제 (사례 및 참조: 국내 1, 2해외)
  2. OS X 기본 압축 프로그램(아카이브 유틸리티)으로 특정 파일을 압축하거나 해제할 때 무한 로딩이 걸리는 문제 (사례 및 참조: 국내해외)
  3. Finder에서 열기(앱에 따라 Open in Finder 나 Show in Finder 등으로 표기)가 묵묵부답하는 문제 (사례 및 참조: 국내, 해외)
  4. Endnote를 이용해 MS Word 2011에서 참고 문헌 정리를 할 때 응용 프로그램 응답 없음이 뜨는 문제 (사례 및 참조: 국내해외)
  5. TotalFinder나 xTraFinder 같은 파인더 플러그인 프로그램을 사용할 때 응답 없음이 뜨거나 강제 충돌되는 문제 (사례 및 참조: 해외)
  6. MailMate나 iPhoto Library Manager 같은 메일/아이포토 플러그인 프로그램을 사용할 때 응답 없음이 뜨거나 강제 충돌될는 문제(사례 및 참조: 해외)
  7. 그밖에 알려진 사례들(사례: 구글)



그런데 위에 나열한 문제들이 오로지 단 하나의 OS X 시스템 프로세스 때문에 발생하는 것이라면 믿어지십니까? 서로 상관없을 것 같은 위 버그들이 알고보니 운영체제와 응용 프로그램 간에 이벤트 메시지를 교환해주는 appleeventsd 프로세스 때문에 발생하는 것으로 귀결되고 있습니다. 왜냐하면 appleeventsd 프로세스를 재시작하는 것으로 위 모든 문제를 해결할 수 있기 때문입니다.


* appleeventsd 관련 버그 중 대표적인 문제 '압축이 안 풀려요'

버그의 원인에 대해 좀더 쉽게 설명드리자면, 사용자가 OS X이나 응용 프로그램에 작업 명령을 내렸을 때 응용 프로그램과 운영체제 사이에서 원활한 메시지 교환이 이뤄져야 하는데 종종 시스템에서 아무런 메시지를 반환하지 않고, 응용 프로그램은 시스템에서 메시지를 보낼 때까지 무기한 대기 상태에 빠져 버리는 것으로 파악되고 있습니다. appleeventsd는 OS X 운용에서 가장 핵심적인 프로세스 중 하나이며, 시스템 이곳저곳 영향을 미치지 않는 곳이 없어서 상당히 광범위한 OS X 마운틴 라이언 사용자들이 위에 나열한 버그를 한 번이나 그 이상 맞딱드리고 있습니다.

OS X 10.8.2 버전부터 생긴 문제로 추정되는데 '애플이 appleeventsd를 고쳐놓기 전까지' 사용자가 위 문제들을 해결할 수 있는 방법은 오로지 백그라운드에서 실행 중인 appleeventsd 프로세스를 강제로 종료시키거나, appleeventsd 프로세스가 몇 초 이상 응답이 없을 시 해당 작업을 종료하도록 설정해주는 방법 밖에 없는 실정입니다.

임시 해결책

소제목을 '임시 해결책'이라고 한 이유는 이런 버그들은 응당 애플이 수정해주어야 하는 문제이지 사용자들이 직접 나서서 뭔가를 한다는게 굉장히 말이 안되기 때문입니다. 하지만 언젠가는 애플이 수정해 주겠거니 했는데, OS X 10.8.3 최신 베타 버전에서도 여전히 동일한 버그가 발생하는 등 버그 수정이 상당히 장기화될 조짐을 보이고 있습니다. 아쉬운 사람이 우물을 파는 심정으로 위에 나열한 버그들을 '임시로' 해결할 수 있는 방법을 정리해 보았습니다.

위 버그 리스트의 2번에서 7번까지의 문제는 해결책이 동일합니다. 백그라운드에 실행중인 appleeventsd 프로세스를 초기화시켜 응용 프로그램과 시스템이 원활하게 이벤트 메시지를 주고 받도록 해주는 작업입니다.

1. 응용 프로그램 > 유틸리티 폴더에서 '활성 상태 보기(Activity Monitor)'를 실행합니다. ▼

2. 검색 필드에 appleeventsd 를 입력하면 해당 프로세스가 메인 화면에 필터링 되는데 이를 선택해 줍니다. ▼

3. 창 왼쪽 끝에 있는 프로세스 종료 버튼을 클릭한 후 '강제 종료' 버튼을 선택합니다. ▼

활성 상태 보기 창을 계속 보고 있으면 appleeventsd 프로세스가 잠시 중단되었다 곧바로 다시 시작하는 것을 확인할 수 있습니다. ('Finder' 처럼 사용자가 임의로 종료하더라도 무조건 재실행되는 프로세스 입니다.)

4. 닥(Dock)의 파인더 아이콘을 option 키를 누른 채로 우클릭하면 파인더를 재실행할 수 있는 메뉴가 나타나는데 이를 클릭해줍니다. ▼

이제 파인더 및 응용 프로그램에서 나타나는 appleeventsd 관련 문제를 해결할 수 있습니다. 물론 추후 다시 재발할 가능성이 농후합니다...

터미널을 이용한 방법

터미널 사용이 익숙하신 분들은 위 작업을 좀 더 간편하게 해줄 수 있습니다. 

1. 응용 프로그램 > 유틸리티 폴더에서 '터미널'을 실행합니다. ▼

2. 터미널에 다음 명령어를 입력하고 사용자 비밀번호를 입력합니다. ▼

sudo killall -KILL appleeventsd;killall Finder

OS X 10.8.2 (및 OS X 10.8.3)의 시스템 종료가 지연되는 문제 해결

경고: 아래 소개해 드리는 방법은 위 방법과 달리 시스템 파일을 사용자가 임의로 수정하는 방법을 담고 있습니다. 따라서 맥 운영체제나 터미널 사용이 익숙하지 않은 분들은 자칫 잘못하면 시스템에 더 큰 문제가 생길 수도 있으니 적용 여부에 신중을 가해 주십시오. 문제 발생시 책임의 소재는 전적으로 본인 자신에게 있음을 미리 알려드립니다.

OS X 시스템 종료 속도가 지연되는 문제는 시스템이 종료할 때 앞서 말씀드린 appleeventsd 프로세스가 제때 응답하지 않아 시스템이 일시적으로 멈추는(hang) 원인과 루트 폴더 (/)의 소유권이 사용자 계정으로 잘못 할당되어 있는 문제가 복합적으로 나타나는 것일 수 있습니다. 따라서 이 두 가지 방법을 해결하는 방법을 아래 동시에 담아봤습니다.

참고로 이번 해결책은 애플 디스커션 포럼에 이번 문제와 관련해 올라온 정보(링크)와 앞서 블로그에 포스팅한 글(링크)을 참조해 작성했습니다. 또한, 아래 1~7번까지의 작업을 할 때는 다른 응용 프로그램 사용을 자제해 주십시오. 

1. 응용 프로그램 > 유틸리티 폴더에서 '터미널'을 실행합니다. ▼

2. 터미널에 다음 명령어를 입력하고 사용자 비밀번호를 입력합니다. ▼

sudo launchctl unload /system/library/launchdaemons/com.apple.coreservices.appleevents.plist

명령어가 하는 일: appleeventsd의 강제 종료 시간을 변경하기에 앞서 비활성화(unload)하는 작업입니다.

2. 터미널에 다음 명령어를 입력합니다. ▼

sudo defaults write /system/library/launchdaemons/com.apple.coreservices.appleevents.plist ExitTimeOut -int 1

명령어가 하는 일: 시스템 종료시 appleeventsd 프로세스를 종료시키는데 1초 이상의 시간이 소요되면 강제 종료한다는 내용입니다. 0은 무한대이기 때문에 최소한 1 이상의 숫자를 넣어주어야 합니다. (기본값은 30초입니다) OS X 구 버전을 사용해 보셨던 분은 아시겠지만, 시스템 종료시 appleeventsd 프로세스 종료되는데 불과 1초도 걸리지 않았습니다. 말 그대로 process가 unload되는 것이었으니까요. 하지만 OS X 10.8.2부터는 해당 프로세스를 unload하는데 실패하고 → 응답이 없는 appleeventsd 프로세스를 기다리는데 30초 이상을 소모하며 → 그 외 일부 다른 프로세스들의 종료 시간이 동시에 늘어나면서 시스템 종료에 소요되는 시간이 최소 30초에서 길면 1분 이상이 될 때도 있습니다.  

3. 터미널에 다음 명령어를 입력합니다. ▼

sudo launchctl load /system/library/launchdaemons/com.apple.coreservices.appleevents.plist

명령어가 하는 일: 수정된 appleeventsd 프로세스를 다시 활성화시키는 작업입니다.

4. 터미널에 다음 명령어를 입력합니다. ▼

sudo chown root:admin /

명령어가 하는 일: 루트 폴더 '/' 의 소유권을 admin 그룹의 root 로 재지정하는 명령어입니다.

5. 터미널에 다음 명령어를 입력합니다. ▼

sudo kextcache -system-prelinked-kernel

명령어가 하는 일: 부팅 디스크의 시스템 커널 확장자들을 업데이트하고, 또 새로운 커널 확장자가 있는 경우 이를 캐싱 내역에 업데이트하는 작업입니다.

6. 터미널에 다음 명령어를 입력합니다. ▼

sudo kextcache -system-caches

명령어가 하는 일: 커널 확장자 캐시를 재생성합니다.

7. 마지막으로 아래 명령어를 입력해 시스템 폴더의 서브 폴더 및 파일들의 권한을 복구합니다. (시스템에 따라 다소 긴 시간이 소요될 수 있습니다.) ▼

diskutil repairPermissions /

마치며

최신 버전의 OS X에 몇가지 심각한 버그가 있고, 이런 버그가 나타났을 때 위에 설명한 작업을 사용자가 직접 해주어야 한다는 것... 정말 '불편한 진실'입니다. OS X은 정말 사용이 쉽고 간편한 운영체제입니다. 하지만 OS X에 발생하는 각종 문제를 해결하기 위해 초심자들이라면 혀를 내두를 각종 터미널 명령어가 매번 등장하는 것도 '불편한 진실'입니다. 아무쪼록 도입부에 나열한 문제가 나타났을 때 이번에 소개해드린 방법으로 문제를 '임시적으로' 해결하실 수 있기를 바라며, 또 애플도 한시바삐 해당 문제를 인지하고 문제를 수정해 주었으면 하는 바람입니다.



글 작성 시 참조한 문서 및 정보
• appleeventsd and 10.8.2: Various issues
Macbook pro slow shutdown 10.8.2
• Freezes in MailMate and Postbox Caused by Bug in Mac OS X 10.8.2
• Archive Utility has stopped working
• “Show in Finder” not working in Mountain Lion
• A Possible Issue Running Console Apps from Real Studio

관련글
• 맥의 하드웨어 담당하는 PRAM과 SMC의 차이와 초기화(리셋)으로 해결할 수 있는 문제 유형
• 맥 부팅/종료 속도가 평상시보다 느려졌을 때 복구하는 방법
• OS X 메뉴 막대에 '다음으로 열기(Open With)' 중복 문제를 해결하는 작업흐름 추가하기
• 메모(Notes) 앱에 문제가 생겼을 때 데이터를 초기화하고 iCloud를 통해 데이터를 복구하는 방법