-
-
Notifications
You must be signed in to change notification settings - Fork 605
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
epoll_wait() causes aborts when socket is closed concurrently #424
Comments
Possibly a related bug (while running /tests/tst-bsd-tcp1.so at 'make check'): page fault outside application, addr: 0x0000000000000000 [backtrace]
|
After close() is called, the file should not be used any more. We need to stop pollers before doing that, otherwise epoll_wait() can attempt calling poll() on a file which was closed. Doing so will result in aborts like the one below, because the socket, which is attempted to be locked has been already freed. [backtrace] 0x00000000002232a8 <__assert_fail+24> 0x00000000003a7e27 <lockfree::mutex::unlock()+487> 0x00000000003dfe0d <epoll_file::wait(epoll_event*, int, int)+1165> 0x00000000003de240 <epoll_wait+112> 0x0000100004409ad2 <Java_sun_nio_ch_EPollArrayWrapper_epollWait+210> Fixes cloudius-systems#424.
This solves only one part of the problem. The issue still remains because I think that bringing back Avi's
|
Yes, I had a version of this patch in my tree, which never got On 08/08/2014 08:56 PM, Tomasz Grabiec wrote:
|
Looks like socket_file::poll() can be called after socket_file::close()
Causing an abort like this:
Manual for
epoll
suggests that it should handle concurrent close:The text was updated successfully, but these errors were encountered: