프로그래밍/iOS

iOS18 Beta EXC_CRASH 0x0000000000000000 에러

도츠(Dotz) 2024. 7. 22. 17:07

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 경로에 직접 접근하지 않도록

경로를 재설정해서 이슈를 해결하였습니다~