Simon Slavin <slavins at bigfraud.org> wrote: > On 29 Apr 2015, at 9:39am, Scott Robison <scott at casaderobison.com> wrote: > >> On windows, malloc returns null if the allocation fails. Sqlite detects >> this and returns an error. >> >> On linux, malloc may return a non null yet invalid pointer and only fail >> when the memory is accessed because it wasn't really available. >> >> If Sqlite is not at fault when posix APIs lie about file locking, I don't >> think Sqlite is responsible when malloc lies about what should be >> considered a failed memory allocation which should return null. > > Okay, I see your distinction. Yes, Linux is lying about malloc having > succeeded. > And there's no further way to check the block it handed back apart from > trying to > use it, which triggers the error. A program can't do anything about a lying > OS, > so SQLite is not at fault.
I'd suggest to try reproducing the problem on Linux after disabling memory overcommit (at least temporarily for the experimentation): * If it returns SQLITE_NOMEM without segfault, then it's not a bug but a limitation of SQLite which uses lots of memory for FTS, or a leak in the application. * If it still segfaults, then there is a bug in SQLite or in the application. Regards Dominique