id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 9734,Wrong check of mmap() return value in coroutine stack allocator,Tianlong Wu ,olli,"In boost source /libs/coroutine/detail/standard_stack_allocator_posix.cpp:120, it has the following snippet: {{{#!c void * limit = # if defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) ::mmap( 0, size_, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); # else ::mmap( 0, size_, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); # endif ::close( fd); if ( ! limit) throw std::bad_alloc(); }}} It assumes that mmap() returns 0 on fail. However when mmap() fails, the return value is NOT 0, but (void*)-1 instead. This wrong check will bypass the throw and let the error pass down, leading to confusing error message seen by the user.",Bugs,closed,To Be Determined,coroutine,Boost 1.55.0,Problem,fixed,,