Definitely looks like a cygwin1.dll bug to me. I see consistently the traceback either terminates in strdup() called from mmap64(), or mktime() called from strdup(). There are a number of hacks you can do to work around the bug. i..e.:
void *malloc_wrapper(size_t t) { static const size_t reserved_size=32768; static void *reserved=NULL; void *retval=NULL; printf("reserved=%x,%x\n",reserved,t+reserved_size); if(reserved != NULL) { free(reserved); } reserved = malloc(t+reserved_size); unsigned int w=(unsigned int)reserved; if(!(0xff800000&(unsigned int)reserved)) { free(reserved); } else if(reserved != NULL) { free(reserved); retval=malloc(t); } reserved=malloc(reserved_size); return retval; } However, none are really satifactory. Bill ----- Original Message ----- From: "Juergen Bohn" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, September 02, 2003 9:35 AM Subject: malloc segfaults > Tested with cygwin1.dll 1.5.3-1 and 1.3.22-1 on Win2000-SP4, malloc() does > not (always) > return NULL if there is no more memory available. Try, for example, simple > loops like: > > x = malloc(10000); > for (i=0; x != NULL; i++) > { > x = malloc(10000); > if (x == NULL) printf("x is NULL\n"); > } > > My application terminates with a segmentation violation, but all attempts > to handle this by signal() or atexit() fail. Unfortunately, also sysconf() > does not work to get the number of available pages (_SC_AVPHYS_PAGES, I get > always the same but wrong value). > > While testing, I detected that errno is set to 12 ("Not enough memory") > after enough iterations through the for-loop above, while variable x still > is not zero. But still my application crashes even when I break the loop > at errno!=0. > > Is there any secure way to find out, how much memory is available (or hope > that the malloc() problems will be solved)? > > Many thanks, > Juergen > > > > -- > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > Problem reports: http://cygwin.com/problems.html > Documentation: http://cygwin.com/docs.html > FAQ: http://cygwin.com/faq/ > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/