From 9c0037824e313eb9bd7dbc53cf302a42ad011fa8 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 14 Dec 2015 14:46:32 -0700 Subject: [PATCH 1/1] server: create sk_out_key earlier The previous code worked on Linux, since we seem to get '0' as the key always. It segfaults on other platforms, since we call pthread_getspecific() before the key has been created. Signed-off-by: Jens Axboe --- server.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server.c b/server.c index 6d96a66f..27ff2854 100644 --- a/server.c +++ b/server.c @@ -2084,6 +2084,13 @@ static int fio_server(void) { int sk, ret; + if (pthread_key_create(&sk_out_key, NULL)) { + log_err("fio: can't create sk_out backend key\n"); + return -1; + } + + pthread_setspecific(sk_out_key, NULL); + dprint(FD_NET, "starting server\n"); if (fio_handle_server_arg()) @@ -2095,9 +2102,6 @@ static int fio_server(void) set_sig_handlers(); - if (pthread_key_create(&sk_out_key, NULL)) - log_err("fio: can't create sk_out backend key\n"); - ret = accept_loop(sk); close(sk); -- 2.25.1