2017년 5월 10일 수요일

[iOS] 기묘한 에러메시지 "Unable to insert COPY_SEND"

오랫만에 옛날에 만들어 둔 iOS용 앱 프로젝트를 수정할 일이 생겼다. 그런데 문제를 수정하고 디버그 모드로 디바이스에 넣어서 실행시켜보니 괴상한 오류메시지가 로그 창에 찍히기 시작했다.
20XX-XX-XX XX:XX:XX SomeAppProject[XXXXX:XXXXXXX] [Common] _BSMachError: port 8e03; (os/kern) invalid capability (0x14) "Unable to insert COPY_SEND"
자 이제 저 에러메시지를 살짝 분석해 보자.

BSMachError 에서 Mach 는 iOS 나 macOS 의 커널을 의미하는 것으로 생각된다. 명확하게 이야기 하자면 다윈(Darwin) 커널은 Mach 커널에 기반한 커널이긴 한데 개인적으로 전문가는 아니니 대충 '커널에서 내뿜는 에러' 정도로 해석 가능할 것 같다.

그렇다면 왜 커널 에러가 날까. 여러가지 유추를 해 봤는데, 써드파티 프레임워크들을 제외하고는 굳이 커널에 엑세스 할 만한 코드는 없다. 애초에 응용소프트웨어가 커널 함수를 쓴다는 것 자체가 이상한 일이기도 하고...

자 그럼 COPY_SEND는 무엇인가를 검색해 보....았지만 언급하지 않는걸로 하자. 난 어셈블리 코드를 읽을 수는 있지만 의도를 이해할 줄은 모른다. ㅇ_ㅇ;;;

이제 이 문제의 해결법을 알아보자. 의외로 매우 간단했다.

타켓(Target)에서 제너럴(General) 항목을 보면 Deployment Info 섹션이 있다.


여기서 Device Orientation 항목을 몽땅 체크하고 빌드해서 테스트 해 보자. 만약 문제가 사라졌다면 다시 Device Orientation 항목을 원래대로 돌려서 테스트 해 보자.

내 경우 이렇게 하니 문제가 해결되었다. 참 어이없는 해결책이다.

오랫만에 단순한 메모성 글을 쓰니 신선하다. 중요한건 이것보다, 의외로 UI 용 코드 실행에 커널까지 관여해 들어가는 모습을 보니 macOS나 iOS의 아키텍쳐가 UI퍼포먼스에 얼마나 신경을 썼는지 알 수가... 있나? 음... -_-?? 에잇 몰라

참고링크: http://stackoverflow.com/questions/39676762/error-bsmacherror-port-1607-os-kern-invalid-capability-0x14-unable-to-i

댓글 없음 :