> Remember, that the operating system bug that is causing all the
> multithreading grief is that file locks created by one thread
> cannot be reliably removed or modified by a different thread.
> So if a statement acquires a lock on the database file in one
> thread and you try to finalize the statement in a different
> thread, the finalization would involve releasing the lock in
> a different thread from which it was acquired - an operation
> that silently fails on certain Linux kernels.

Hmm.  The main reason why I'm asking is that I'd like to cleanly shut
down the database even when the application terminates due to an
unhandled exception or something like that.  The try/finally approach
is often helpful, but it won't help you if all uses of the handle are
statically nested (as far as the call graph is concerned).  The
garbage collector (or, in my case, a special cleanup handler) could
deal with the remaining open statement or database handles.

If RH9 is the main remaining problem OS, I can probably live with
that, especially if none of the RHELs is affected.

Reply via email to