Re: [Boost-bugs] [Boost C++ Libraries] #7611: segfault in epoll_reactor.ipp

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #7611: segfault in epoll_reactor.ipp
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-01-30 16:45:32

#7611: segfault in epoll_reactor.ipp
  Reporter: Fredrik Jansson | Owner:
  <…> | chris_kohlhoff
      Type: Bugs | Status: closed
 Milestone: To Be Determined | Component: asio
   Version: Boost 1.52.0 | Severity: Problem
Resolution: invalid | Keywords:

Comment (by anonymous):

 Replying to [comment:5 anonymous]:
> Replying to [comment:4 jyu@…]:
> > In my case, the crash is due to two threads simultaneously closing the
 socket. can you make the socket close or shutdown function thread-safe,
 just as Fredrik Jansson suggested?
> You have a threading issue that's even worse than that of the original
 poster. And it's your all your own fault.
> Here's how you can solve it: Use a mutex, such that you do NOT have 2
 threads messing with the socket at the same time. (Within the protected
 region, you could find out if the socket-descriptor is already closed, by
 using something like descriptor.is_open() , see

 I ended up doing compare-and-swap on a flag to make sure the close-socket
 is called only once.

 Just wondering that the asio close-socket function may be thread-safe by
 using the compare-and-swap on that crashing pointer.

 In my app, only those thread-safe asio socket functions have been used
 concurrently. I did not realized that the asio close-socket function is an
 exception. My bad, I did not read the doc carefully.

Ticket URL: <>
Boost C++ Libraries <>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:20 UTC