xz -9 : Cannot allocate memory
Christopher Faylor
cgf-use-the-mailinglist-please@cygwin.com
Fri Aug 30 21:03:00 GMT 2013
On Fri, Aug 30, 2013 at 09:00:48PM +0200, Corinna Vinschen wrote:
>On Aug 30 19:46, Corinna Vinschen wrote:
>> On Aug 30 12:58, Achim Gratz wrote:
>> > Corinna Vinschen <corinna-cygwin <at> cygwin.com> writes:
>> > > Yes, looks normal and expected from what you observed. mmap commits
>> > > memory top-down and that was apparently the first free slot big enough
>> > > to fullfil the request. The default heap size is 384 Megs and then
>> > > there's apparently not enough space anywhere.
>> >
>> > Sorry if I'm dense, but does this mean that setting the default heap size to
>> > zero does in fact mean it's trying to use 374MiB... wait, yes it is: the
>> > memory map is the same when I'm setting the initial heap size to 384MiB with
>> > peflags.
>> >
>> > So, even though that rather large heap is essentially unused at the point of
>> > failure and there is enough memory free just beyond the heap, the allocation
>> > still fails because both the existing heap and the free space are both
>> > smaller than what's requested?
>>
>> Well, good question. You could debug the sbrk function and see why
>> it fails to reserve the space.
>
>I just debugged this and it seems our sbrk implementation has a serious
>problem to extend the heap if the new chunk of memory requires to commit
>some of the existing heap and to reserve and commit some more space.
>It tries to reserve memory using the wrong address and the wrong size.
>It also uses a too simple method to commit the memory. I'll apply a fix
>shortly.
It looked fine to me.
The only code change that I did make was to change your coercion of
pointers to ptrdiff_t types into (char *), since that is more in keeping
with the rest of the code.
I had a hard time reading the code with all of the cygheap-> pointers so
I changed two functions to be a user_info_heap methods. That, IMO,
makes the code faster and more readable.
You probably saw that I fixed the USR1/USR2 issue. That was a serious signal
bug. I think both of those warrant a new release in fact.
cgf
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list