e0cb433550
Browsing a folder in the Readest Library spawns a forked child per cloud cover via syncbooks.downloadCover. On Boox / Adreno devices the child crashed with a SIGSEGV (issue #4165): it terminated through the libc exit() path, and __cxa_finalize ran the destructor of the GL driver inherited from the parent, which segfaults on Adreno. Terminate the child with ffi.C._exit(0) instead. _exit() skips libc atexit handlers, so __cxa_finalize — and the Adreno destructor it runs — never execute. The body is also wrapped in pcall so a network error in http.request cannot unwind past that _exit call. This eliminates the child-side crash in the reported tombstone. The parent KOReader exiting is most likely a knock-on effect of the child tearing down GPU state shared across the fork, but that link is not provable from the log alone — so this intentionally does not auto-close #4165 until confirmed on an affected device. No unit test: the fork + network path isn't reproducible in the busted harness, consistent with the other network methods in this file.