On Wed, 29 Apr 2015 01:27:03 +0300 Artem <devspec at yandex.ru> wrote:
> >> Error: near line 1: out of memory > > > That's not a segfault, though, is it. > > When I did the same in linux version of SQLite - I saw > the "Segmentation Fault" error. The above message indicates that SQLite trapped an errno of ENOMEM after malloc returned NULL. Otherwise it would not report "near line 1", something the kernel could never do. One possible way you could see SIGSEGV on Linux -- even if every call to malloc is handled correctly and no out-of-bounds reference is ever made -- is if the process runs out of stack space.[1] That seems within the realm of possiblity if we're talking about giant allocations. It's also plausible that Windows would report ENOMEM while LInux does not. If, as is commonly done, Linux is configured to overcommit memory, malloc will seldom or never (depending on /proc/sys/vm/overcommit_memory) return NULL. Given the same RAM and swap space, Windows would report ENOMEM when Linux would not. In the Linux case, the process could plausibly continue (and not be the OOM victim) up until the point that it exhausts its stack. You could check the value of your overcommit_memory and set it to 2 if that's not already the case. That might shed some light. Developers: What value of overcommit_memory is used in testing? ---jkl [1] http://www.win.tue.nl/~aeb/linux/lk/lk-9.html