I (foolishly ;) ) enabled strict overcommit handling in my kernel. This means that attempts to allocate more memory than is physically available in swap+(x% of RAM, where x defaults to 50) will fail. Shortly after, eclipse crashed when trying to create a new thread, when I tried to save my work: LOG: [0xc71540] pthread_create failed cacao: threads.c:842: threads_start_thread: Assertion `0' failed. Clearly then, the pthread_create call could not allocate enough memory for the new thread. I suggest that cacao, if it gets EAGAIN from pthread_create, should do System.gc(), compact memory if necessary, free some virtual memory back to the kernel, and then try again. If it fails a second time... well then the VM is truly in trouble, because what happens in this case is undocumented. But it should at least try to garbage collect and free, in my opinion.