From: Carmelo A. <car...@st...> - 2007-08-16 13:28:00
|
Carmelo AMOROSO wrote: > Hi All, > running the LTP on uClibc-nptl for sh4 I get a failure on stack_space test. > After some analysis I've found that the default parameters of the test case > produce a call to malloc(0). > Now, in my uClibc implementation the malloc(0) gives always NULL (while > on glibc it returns a random value), so I discovered this issue. > Probably it should be better to define a different set of default value. > > Currently we have: > > MAXSIZE = 10 * 1024 > csize = 1024 * 1024 > nchunks = MAXSIZE / csize > > bits = (char*) malloc((nchunks + 7)/8) ====> malloc(0) > > whenever nchunks is < 1, it will try a malloc(0), and I think it is not > a good choice as default. > > or probably we wanted MAXSIZE = 10 * 1024 * 1024 to have at least 10 chunks? > > Best regards, > Carmelo > > > Hi All, I want to go back to this issue (sorry for the typo into the previous mail, th testcase is "stack_space" ) I reviewed the test again, and I am convinced that the default values are wrong. The fix I suggested previously (defining MAXSIZE = 10 * 1024 * 1024, instead of 10*1024) is good unless the stack limits is too low (ulimit -s) Another possible solution is to reduce the default value of the csize variable to 1024. Anyway, what the test requires is MAXSIZE to be greater or equal than csize.... that currectly we don't have. In the attached patch I fixed it choosing MAXSIZE = 10 K and czise = 1 K. Further I added a check to verify the csize (if passes as argument) doesn't violate its constraint, added some free to do memory garbage and minor cleanup With this patch the test works fine on glibc and uClibc Regards, Carmelo |