Opened 10 years ago

Closed 10 years ago

#7012 closed Bugs (fixed)

do_epoll_create failes with 'epoll: Function not supported".

Reported by: Oleg Grunin <oleg00@…> Owned by: chris_kohlhoff
Milestone: To Be Determined Component: asio
Version: Boost 1.49.0 Severity: Problem
Keywords: Cc:

Description

The relevant code: #if defined(EPOLL_CLOEXEC)

int fd = epoll_create1(EPOLL_CLOEXEC);

#else defined(EPOLL_CLOEXEC)

int fd = -1; errno = EINVAL;

#endif defined(EPOLL_CLOEXEC)

if (fd == -1 && errno == EINVAL) {

fd = epoll_create(epoll_size);

....

with glibc 2.13 EPOLL_CLOEXEC is always defined but epoll_create1 may return ENOSYS which causes the code below to fall though. The proposed patch is attached

Attachments (1)

epoll.patch (386 bytes ) - added by Oleg Grunin <oleg00@…> 10 years ago.
patch

Download all attachments as: .zip

Change History (3)

by Oleg Grunin <oleg00@…>, 10 years ago

Attachment: epoll.patch added

patch

comment:1 by chris_kohlhoff, 10 years ago

(In [79521]) Add support for some newer versions of glibc which provide the epoll_create1 function but always fail with ENOSYS. Refs #7012

comment:2 by chris_kohlhoff, 10 years ago

Resolution: fixed
Status: newclosed

(In [79549]) Merge from trunk:

  • Make strand destruction a no-op, to allow strand objects to be destroyed after their associated io_service has been destroyed.
  • Use the thread keyword extension when compiling with gcc on linux x86.
  • Avoid calling work_finished() if a completion handler creates more work.
  • Eliminate redundant call to call_stack::contains(this) when dispatching a completion handler.
  • Add support for some newer versions of glibc which provide the epoll_create1 function but always fail with ENOSYS. Fixes #7012
  • Use SSE2 load and store fences.
  • Throw exception if SSL engine initialisation fails. Fixes #6303
  • Fix another regression in buffered_write_stream. Fixes #6310
Note: See TracTickets for help on using tickets.