You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was experimenting with sharing a single database between iOS app and app extensions, when I encountered an always reproducible crash. (It seems to reference #135 but I haven't got time to dig deep.)
To easily reproduce it, I write a benchmark app that stores random key-values and fetches it back, then sleeps for about half a second, rinses and repeats for almost indefinitely. When I launch this tool twice (operating on the same database file), one process crashes.
Screenshot.2024-04-23.14.53.59.mp4
The crash isn't deterministic (the first or the second to launch), contrary to what the video shows. (The video was cut short due to GitHub size limit.) But I can never have both survive long enough.
Also, after that one process crashes, it sends the other into an UNQLITE_BUSY (-14) loop, which I assume is caused by either unrelinquished UNIX lock or corrupted book-keeping, making the whole situation fatal unless I close and reopen the database file everywhere.
Further investigation shows that the file descriptor was somehow set to null on a valid database (unqlite *) and pager (Pager *).
unqlite 1.1.9 compiled with -DUNQLITE_ENABLE_THREADS, on macOS 14.4 and iOS 17.0
The text was updated successfully, but these errors were encountered:
I was experimenting with sharing a single database between iOS app and app extensions, when I encountered an always reproducible crash. (It seems to reference #135 but I haven't got time to dig deep.)
To easily reproduce it, I write a benchmark app that stores random key-values and fetches it back, then sleeps for about half a second, rinses and repeats for almost indefinitely. When I launch this tool twice (operating on the same database file), one process crashes.
Screenshot.2024-04-23.14.53.59.mp4
The crash isn't deterministic (the first or the second to launch), contrary to what the video shows. (The video was cut short due to GitHub size limit.) But I can never have both survive long enough.
Also, after that one process crashes, it sends the other into an
UNQLITE_BUSY
(-14) loop, which I assume is caused by either unrelinquished UNIX lock or corrupted book-keeping, making the whole situation fatal unless I close and reopen the database file everywhere.Further investigation shows that the file descriptor was somehow set to null on a valid database (
unqlite *
) and pager (Pager *
).unqlite 1.1.9 compiled with
-DUNQLITE_ENABLE_THREADS
, on macOS 14.4 and iOS 17.0The text was updated successfully, but these errors were encountered: