thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (THRIFT-4106) concurrency_test fails randomly
Date Wed, 06 Sep 2017 17:25:00 GMT


ASF GitHub Bot commented on THRIFT-4106:

GitHub user jeking3 opened a pull request:

    THRIFT-4106: fix errors concurrency_test was identifying

    I found a serious issue hiding in the thread implementation which was exposed by some
of the tests. In particular, tests that use detached threads will typically construct a shared_ptr<Runnable>
followed by a shared_ptr<Thread>, and then make a thread with a thread manager, then
call start(). The stack frame ends without the caller saving off the shared pointers, so they
start destructing however the thread may not have gotten far enough along to reference the
Runnable yet, and you have a race. I am fixing this by ensuring thread start() does not return
until the thread's state is changed to started by the C style threadMain function. I also
was able to run clean with valgrind for the first time on this test.  All three thread implementations
were susceptible.

You can merge this pull request into a Git repository by running:

    $ git pull THRIFT-4106

Alternatively you can review and apply these changes as the patch at:

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1343
commit 7a41e7ede1bb295ba0452d7e0f2f0415b5cc36a1
Author: James E. King, III <>
Date:   2017-09-06T17:12:02Z

    THRIFT-4106: fix errors concurrency_test was identifying
    Client: C++


> concurrency_test fails randomly
> -------------------------------
>                 Key: THRIFT-4106
>                 URL:
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.10.0
>         Environment: MinGW (appveyor), travis CI
>            Reporter: James E. King, III
>            Assignee: James E. King, III
>            Priority: Critical
> While adding Appveyor build support for MinGW (THRIFT-4081), this test failed periodically.
 It would throw an exception in ThreadFactoryTest reapTest where it calls monitor.wait(1000).
 It is reproducible locally as well if you have msys2/mingw64 and can use the instructions
in the msys2 readme in build/cmake.  The test has been disabled in mingw appveyor builds for
now (those builds are new...)
> Travis CI builds are also showing an occasional failure in the test.
> Need to root cause, fix, and re-enable in any CI builds where it was disabled.

This message was sent by Atlassian JIRA

View raw message