[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 10/31] libxl: Crash (more sensibly) on malloc failure
On Wed, 2012-04-11 at 12:04 +0100, Ian Jackson wrote: > Ian Campbell writes ("Re: [Xen-devel] [PATCH 10/31] libxl: Crash (more > sensibly) on malloc failure"): > > On Wed, 2012-04-11 at 11:24 +0100, Ian Jackson wrote: > > > Things left to do: > > > - Provide versions of malloc, realloc and free which do the > > > checking but which do not enroll the pointer in the gc. > ... > > We got that in the next patch? > > Yes. I don't think this bullet point is actually helpful in that > commit message as it's not so much a deficiency in the code at that > point as a thing I was intending to fix when I wrote it, so I have > removed it. > > > > Well, zero isn't adequate :-). So yes, it's arbitrary. 25 is 100 > > > bytes (i386) or 200 bytes (amd64) which seems a reasonable initial > > > overhead and will probably avoid triggering a realloc too often. > > > > Why isn't just doubling each time adequate? > > alloc_maxsize is initialised to 0. Doubling zero gives zero. Oh, for some reason I expected it would be initialised to >=1. > NB that libxl__ptr_add needs to be rewritten not to be quadratic in > the number of pointrs added (!) Isn't it O(N) in numbers of pointers? I also just noticed that the initial: /* fast case: we have space in the array for storing the pointer */ for (i = 0; i < gc->alloc_maxsize; i++) { if (!gc->alloc_ptrs[i]) { gc->alloc_ptrs[i] = ptr; return 0; } } is a bit suboptimal since we never remove a ptr from the array, so we may as well track the max actually used. Then the fast path might actually be fast... Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |