[v2.2.2] Merge branch 'patch' (Patch release)

* Fix: fixed deadlocks when tests are terminated too fast
* Fix: fixed crash during test teardown if spawning new threads in the test
* Fix: fixed memory leak in disabled tests
This commit is contained in:
Snaipe 2016-06-20 09:36:45 +02:00
commit bddeda4acd
10 changed files with 34 additions and 16 deletions

View File

@ -1,5 +1,5 @@
[bumpversion]
current_version = 2.2.1
current_version = 2.2.2
commit = False
[bumpversion:file:CMakeLists.txt]

View File

@ -66,7 +66,7 @@ endif()
# Project setup & environment variables
set(PROJECT_VERSION "2.2.1")
set(PROJECT_VERSION "2.2.2")
set(LOCALEDIR_REL "share/locale")
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/${LOCALEDIR_REL}")
set(GettextTranslate_ALL 1)

View File

@ -1,3 +1,10 @@
2016-06-20 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com>
* criterion: version 2.2.2
* Fix: fixed deadlocks when tests are terminated too fast
* Fix: fixed crash during test teardown if spawning new threads in the test
* Fix: fixed memory leak in disabled tests
2016-02-06 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com>
* criterion: version 2.2.1

View File

@ -48,10 +48,10 @@ the user would have with other frameworks:
### Binary archives
* [Linux (x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.1/criterion-v2.2.1-linux-x86_64.tar.bz2)
* [OS X (x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.1/criterion-v2.2.1-osx-x86_64.tar.bz2)
* [Windows (MSVC - x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.1/criterion-v2.2.1-windows-msvc-x64.tar.bz2)
* [Windows (MinGW - x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.1/criterion-v2.2.1-windows-mingw-x64.tar.bz2)
* [Linux (x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.2/criterion-v2.2.2-linux-x64.tar.bz2)
* [OS X (x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.2/criterion-v2.2.2-osx-x64.tar.bz2)
* [Windows (MSVC - x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.2/criterion-v2.2.2-windows-msvc-x64.tar.bz2)
* [Windows (MinGW - x86_64)](https://github.com/Snaipe/Criterion/releases/download/v2.2.2/criterion-v2.2.2-windows-mingw-x64.tar.bz2)
If you have a different platform, you can still [build the library from source](http://criterion.readthedocs.org/en/latest/setup.html#installation)

View File

@ -1,4 +1,4 @@
version: 2.2.1_b{build}-{branch}
version: 2.2.2_b{build}-{branch}
os: Visual Studio 2015

View File

@ -39,7 +39,7 @@ copyright = u'2015, Franklin "Snaipe" Mathieu'
# built documents.
#
# The short X.Y version.
version = '2.2.1'
version = '2.2.2'
# The full version, including alpha/beta/rc tags.
release = version

View File

@ -153,14 +153,14 @@ static void handle_sigchld_pump(void) {
* REMOVE WHEN REFACTORING I/O LAYER
*/
static pthread_t child_pump;
static bool child_pump_running;
static volatile bool child_pump_running;
static void *chld_pump_thread_main(void *nil) {
do {
handle_sigchld_pump();
handle_sigchld_pump();
while (child_pump_running) {
usleep(1000);
} while (child_pump_running);
handle_sigchld_pump();
}
return nil;
}
#endif
@ -176,13 +176,21 @@ void init_proc_compat(void) {
#endif
}
void free_proc_compat(void) {
void reset_proc_compat(void) {
#ifndef VANILLA_WIN32
child_pump_running = false;
pthread_join(child_pump, NULL);
#endif
}
void free_proc_compat(void) {
#ifndef VANILLA_WIN32
if (child_pump_running) {
reset_proc_compat();
}
#endif
}
#ifdef VANILLA_WIN32
struct wait_context {
HANDLE wait_handle;

View File

@ -62,5 +62,6 @@ unsigned long long get_process_id_of(s_proc_handle *proc);
void init_proc_compat(void);
void free_proc_compat(void);
void reset_proc_compat(void);
#endif /* !COMPAT_PROCESS_H_ */

View File

@ -154,11 +154,11 @@ struct worker *run_next_test(struct criterion_test_set *p_set,
if (ctx->params.cleanup)
ctx->params.cleanup(&ctx->params);
} else {
ctx->test_stats = test_stats_init(ctx->test);
if (skip_disabled(ctx))
continue;
ctx->test_stats = test_stats_init(ctx->test);
worker = run_test(ctx->stats,
ctx->suite_stats,
ctx->test_stats,

View File

@ -78,6 +78,8 @@ struct event *worker_read_event(struct worker_set *workers, s_pipe_file_handle *
}
void run_worker(struct worker_context *ctx) {
reset_proc_compat();
cr_redirect_stdin();
g_event_pipe = pipe_out_handle(ctx->pipe, PIPE_CLOSE);