Open maqsats opened 8 months ago
@swankjesse I have created new issue for that bug
I am also facing this problem @swankjesse. Can you help us with this?
I'm seeing it as well. Simulator works fine, crashes with iPhone 12 on iOS 17.5.1. I'm getting it through Jetpack Datastore though.
`Uncaught Kotlin exception: at 0 News 0x104dec50b kfun:kotlin.Exception#
at 1 News 0x1063c02e7 kfun:okio.IOException#<init>(kotlin.String?;kotlin.Throwable?){} + 123
at 2 News 0x1063c035f kfun:okio.IOException#<init>(kotlin.String?){} + 99
at 3 News 0x1063a62c7 kfun:okio#errnoToIOException(kotlin.Int){}okio.IOException + 503
at 4 News 0x1063cf0e3 kfun:okio#variantOpenReadWrite__at__okio.PosixFileSystem(okio.Path;kotlin.Boolean;kotlin.Boolean){}okio.FileHandle + 859
at 5 News 0x1063a9e83 kfun:okio.PosixFileSystem#openReadWrite(okio.Path;kotlin.Boolean;kotlin.Boolean){}okio.FileHandle + 143
at 6 News 0x1063d190f kfun:okio.FileSystem#openReadWrite(okio.Path;kotlin.Boolean;kotlin.Boolean){}okio.FileHandle-trampoline + 91
at 7 News 0x1063a83bf kfun:okio.FileSystem#openReadWrite$default(okio.Path;kotlin.Boolean;kotlin.Boolean;kotlin.Int){}okio.FileHandle + 251
at 8 News 0x104db820f kfun:androidx.datastore.core.okio.OkioWriteScope.$writeDataCOROUTINE$3.invokeSuspend#internal + 863
at 9 News 0x104db8ba7 kfun:androidx.datastore.core.okio.OkioWriteScope#writeData#suspend(1:0;kotlin.coroutines.Continuation<kotlin.Unit>){}kotlin.Any + 295
at 10 News 0x106ca4b87 kfun:androidx.datastore.core.WriteScope#writeData#suspend(1:0;kotlin.coroutines.Continuation<kotlin.Unit>){}kotlin.Any-trampoline + 115
`
Same here with Compose Multiplatform and Datastore. Any updates?
I was able to fix by switching from NSDocumentDirectory -> NSCachesDirectory When creating the DataStore object on iOS.
actual fun getDataStore(name: String): DataStore<Preferences> {
return PreferenceDataStoreFactory
.createWithPath(
scope = CoroutineScope(Job() + Dispatchers.IO),
produceFile = {
val documentDirectory: NSURL? = NSFileManager.defaultManager.URLForDirectory(
directory = NSCachesDirectory,
inDomain = NSUserDomainMask,
appropriateForURL = null,
create = false,
error = null,
)
(requireNotNull(documentDirectory).path + name + ".preferences_pb").toPath()
}
)
}
Unclear what action to take here. Can you reproduce this exception consistently? Or perhaps only when the device is locked?
It was 100% reproducible at the time with NSDocumentDirectory since switching to NSCachesDirectory I haven't had any issues. I suppose the action here would be to fix using NSDocumentDirectory? Or perhaps documenting that it is not supported?
I am facing this issue only in iOS real device iOS 17.2. Simulator iOS 17.2 works fine. Here is the link to repository OkioReproduce.
This issue can be reproduced using 3.6.0 Okio version and also with latest 3.9.0 version. I hope you can solve this as soon as possible. I have tried my best to help you with reproducing. Here is line that causes this bug
FILESYSTEM.openReadWrite(tempPath, mustCreate = false, mustExist = false)
.