iOS 18 베타 버전 출시 이후,
서비스 중인 앱이 갑자기 죽기 시작하는 이슈가 발생했는데요.
바로 크래시가 발생하는 게 아니라
설치하고 나서 몇일 사용 중이다가
죽는 이슈가 발생하더라고요.

애플에서 뭘 또 바꿨나...
OS Version: iPhone OS 18.0 (22A5297f)
Release Type: Beta Baseband
Version: 4.01.02
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Reason: -[NSURL length]: unrecognized selector sent to instance 0x3029d9d40
Termination Reason: SIGNAL 6 Abort trap: 6
크래시 발생하는 포인트의 코드를 보니
포인트는 removeItem(atPath:)
Last Exception Backtrace:
0 CoreFoundation 0x1961c012 __exceptionPreprocess + 164 (NSException.m:249)
1 libobjc.A.dylib 0x1934de68 objc_exception_throw + 76 (objc-exception.mm:356)
2 CoreFoundation 0x1962c5b0 -[NSObject(NSObject) doesNotRecognizeSelector:] + 364 (NSObject.m:162)
3 CoreFoundation 0x19615868 ___forwarding___ + 1560 (NSForwarding.m:3612)
4 CoreFoundation 0x19615d190 _CF_forwarding_prep_0 + 96 (:-1)
5 Foundation 0x194dd668 static String._unconditionallyBridgeFromObjectiveC(_:) + 444 (String.swift:143)
6 Foundation 0x194fe9e0 @objc _NSFileManagerBridge.removeItem(atPath:) + 44 (<compiler-generated>:0)
7 MyApp 0x10455fb8 -[LogUtil check] + 1234 (LogUtil.m:120)
로그파일을 삭제하기 위해 contentsOfDirectoryAtURL을 이용해
해당 경로에 있는 파일 목록을 불러오고 있었는데요.
- (nullable NSArray<NSURL *> *)contentsOfDirectoryAtURL:(NSURL *)url includingPropertiesForKeys:(nullable NSArray<NSURLResourceKey> *)keys options:(NSDirectoryEnumerationOptions)mask error:(NSError **)error API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));
이 함수는 해당 파일들의 절대 경로를 리턴해주고 있었어요.
file:///private/var/mobile/Containers/Data/Application/...
해당 파일이 존재하는 것도 확인이 되는데,
왜 여기 포인트만 자꾸 죽는가 했더니
iOS18부터 /private 경로에 접근하면 죽는 것 같았어요.
구글링을 통해서 /private/var는 /var의 symbolic link라는 것까지는 확인을 했지만
직접적으로 /private에 접근하면 안 된다는 내용을 보지는 못했어요..ㅠ
어쩔 수 없이 /private 경로에 직접 접근하지 않도록
경로를 재설정해서 이슈를 해결하였습니다~

'프로그래밍 > iOS' 카테고리의 다른 글
Xcode 아이폰 디버거 연결 실패, failed to get the task for process pid (1) | 2024.07.22 |
---|