[
https://issues.apache.org/jira/browse/THRIFT-4283?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16176665#comment-16176665
]
ASF GitHub Bot commented on THRIFT-4283:
----------------------------------------
GitHub user jeking3 opened a pull request:
https://github.com/apache/thrift/pull/1368
THRIFT-4283: fix TNamedPipeServer race condition in interrupt
Client: C++
Patch: [email protected]
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jeking3/thrift THRIFT-4283
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/thrift/pull/1368.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1368
----
commit d59b31bc1e04567b8e4ca01403f0922c01e6cdbf
Author: James E. King, III <[email protected]>
Date: 2017-09-22T16:24:10Z
THRIFT-4283: fix TNamedPipeServer race condition in interrupt
Client: C++
Patch: [email protected]
----
> TNamedPipeServer race condition in interrupt
> --------------------------------------------
>
> Key: THRIFT-4283
> URL: https://issues.apache.org/jira/browse/THRIFT-4283
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Affects Versions: 0.10.0
> Environment: Windows
> Reporter: Jean-Noël Goor
> Labels: c++
> Fix For: 0.11.0
>
> Attachments: thrift-4283-TNamedPipeServer-race-condition.patch
>
>
> In TNamedPipeServer, there exists a race condition between the 'serve' thread
> and another thread that would attempt to interrupt it.
> While the 'serve' thread is waiting for clients to connect, it is blocked on
> a GetOverlappedResult call.
> To stop the server, another thread calls the interrupt function that submits
> a CANCELIO operation to the TOverlappedSubmissionThread.
> The ::CancelIo function is called, freeing the 'serve' thread with an
> unsuccessful OvelappedResult which then throws and terminate the server by
> deleting the serverTransport_.
> All this can happen while the call to interrupt has not yet returned, and
> even the event signaling the execution of the CANCELIO request might not have
> been caught.
> In our code, this result in unpredictable behavior (mostly detected as
> stalled).
> It is very hard to reproduce in test environment as it consists in a running
> threads race condition.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)