From patchwork Thu Apr 15 11:50:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "humin (Q)" X-Patchwork-Id: 91573 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EFFA5A0C3F; Thu, 15 Apr 2021 13:50:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4B25B162208; Thu, 15 Apr 2021 13:50:10 +0200 (CEST) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 2417E162167 for ; Thu, 15 Apr 2021 13:50:06 +0200 (CEST) Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4FLcyM3wH8zpX7T; Thu, 15 Apr 2021 19:47:07 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.498.0; Thu, 15 Apr 2021 19:49:56 +0800 From: "Min Hu (Connor)" To: CC: , , , Date: Thu, 15 Apr 2021 19:50:11 +0800 Message-ID: <1618487412-26678-2-git-send-email-humin29@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1618487412-26678-1-git-send-email-humin29@huawei.com> References: <1618051453-21264-1-git-send-email-humin29@huawei.com> <1618487412-26678-1-git-send-email-humin29@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH v3 1/2] telemetry: fix missing check for thread creation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Chengwen Feng Add result check and message print out for thread creation after failure. Fixes: b80fe1805eee ("telemetry: introduce backward compatibility") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng Signed-off-by: Min Hu (Connor) --- lib/librte_telemetry/telemetry.c | 30 +++++++++++++++++++++++++++--- lib/librte_telemetry/telemetry_legacy.c | 10 ++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c index 7e08afd..e6a99f3 100644 --- a/lib/librte_telemetry/telemetry.c +++ b/lib/librte_telemetry/telemetry.c @@ -350,6 +350,7 @@ socket_listener(void *socket) { while (1) { pthread_t th; + int rc; struct socket *s = (struct socket *)socket; int s_accepted = accept(s->sock, NULL, NULL); if (s_accepted < 0) { @@ -366,7 +367,12 @@ socket_listener(void *socket) __atomic_add_fetch(s->num_clients, 1, __ATOMIC_RELAXED); } - pthread_create(&th, NULL, s->fn, (void *)(uintptr_t)s_accepted); + rc = pthread_create(&th, NULL, s->fn, (void *)(uintptr_t)s_accepted); + if (rc != 0) { + TMTY_LOG(ERR, "Error with create client thread\n"); + close(s_accepted); + return NULL; + } pthread_detach(th); } return NULL; @@ -425,6 +431,7 @@ static int telemetry_legacy_init(void) { pthread_t t_old; + int rc; if (num_legacy_callbacks == 1) { TMTY_LOG(WARNING, "No legacy callbacks, legacy socket not created\n"); @@ -440,7 +447,15 @@ telemetry_legacy_init(void) v1_socket.sock = create_socket(v1_socket.path); if (v1_socket.sock < 0) return -1; - pthread_create(&t_old, NULL, socket_listener, &v1_socket); + rc = pthread_create(&t_old, NULL, socket_listener, &v1_socket); + if (rc != 0) { + TMTY_LOG(ERR, "Error with create thread for legacy socket\n"); + close(v1_socket.sock); + v1_socket.sock = -1; + unlink(v1_socket.path); + v1_socket.path[0] = '\0'; + return -1; + } pthread_setaffinity_np(t_old, sizeof(*thread_cpuset), thread_cpuset); TMTY_LOG(DEBUG, "Legacy telemetry socket initialized ok\n"); @@ -451,6 +466,7 @@ static int telemetry_v2_init(void) { pthread_t t_new; + int rc; v2_socket.num_clients = &v2_clients; rte_telemetry_register_cmd("/", list_commands, @@ -469,7 +485,15 @@ telemetry_v2_init(void) v2_socket.sock = create_socket(v2_socket.path); if (v2_socket.sock < 0) return -1; - pthread_create(&t_new, NULL, socket_listener, &v2_socket); + rc = pthread_create(&t_new, NULL, socket_listener, &v2_socket); + if (rc != 0) { + TMTY_LOG(ERR, "Error with create thread for socket"); + close(v2_socket.sock); + v2_socket.sock = -1; + unlink(v2_socket.path); + v2_socket.path[0] = '\0'; + return -1; + } pthread_setaffinity_np(t_new, sizeof(*thread_cpuset), thread_cpuset); atexit(unlink_sockets); diff --git a/lib/librte_telemetry/telemetry_legacy.c b/lib/librte_telemetry/telemetry_legacy.c index 5e9af37..fd242bf 100644 --- a/lib/librte_telemetry/telemetry_legacy.c +++ b/lib/librte_telemetry/telemetry_legacy.c @@ -83,6 +83,7 @@ register_client(const char *cmd __rte_unused, const char *params, pthread_t th; char data[BUF_SIZE]; int fd; + int rc; struct sockaddr_un addrs; #endif /* !RTE_EXEC_ENV_WINDOWS */ @@ -112,8 +113,13 @@ register_client(const char *cmd __rte_unused, const char *params, close(fd); return -1; } - pthread_create(&th, NULL, &legacy_client_handler, - (void *)(uintptr_t)fd); + rc = pthread_create(&th, NULL, &legacy_client_handler, + (void *)(uintptr_t)fd); + if (rc != 0) { + perror("Failed to create legacy client thread\n"); + close(fd); + return -1; + } #endif /* !RTE_EXEC_ENV_WINDOWS */ return 0; } From patchwork Thu Apr 15 11:50:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "humin (Q)" X-Patchwork-Id: 91572 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B6425A0C3F; Thu, 15 Apr 2021 13:50:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9579916217A; Thu, 15 Apr 2021 13:50:08 +0200 (CEST) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id 7946E16216E for ; Thu, 15 Apr 2021 13:50:05 +0200 (CEST) Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4FLcyL6CrzzPqpb; Thu, 15 Apr 2021 19:47:06 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.498.0; Thu, 15 Apr 2021 19:49:56 +0800 From: "Min Hu (Connor)" To: CC: , , , Date: Thu, 15 Apr 2021 19:50:12 +0800 Message-ID: <1618487412-26678-3-git-send-email-humin29@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1618487412-26678-1-git-send-email-humin29@huawei.com> References: <1618051453-21264-1-git-send-email-humin29@huawei.com> <1618487412-26678-1-git-send-email-humin29@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH v3 2/2] test: fix missing check for thread creation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Chengwen Feng There was a call for thread create function without result check. Add result check and message print out after failure. Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng Signed-off-by: Min Hu (Connor) --- app/test/process.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/test/process.h b/app/test/process.h index 27f1b1c..2a0a8da 100644 --- a/app/test/process.h +++ b/app/test/process.h @@ -48,6 +48,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value) #ifdef RTE_LIB_PDUMP #ifdef RTE_NET_RING pthread_t thread; + int rc; #endif #endif @@ -126,8 +127,11 @@ process_dup(const char *const argv[], int numargs, const char *env_value) /* parent process does a wait */ #ifdef RTE_LIB_PDUMP #ifdef RTE_NET_RING - if ((strcmp(env_value, "run_pdump_server_tests") == 0)) - pthread_create(&thread, NULL, &send_pkts, NULL); + if ((strcmp(env_value, "run_pdump_server_tests") == 0)) { + rc = pthread_create(&thread, NULL, &send_pkts, NULL); + if (rc != 0) + rte_panic("Cannot start send pkts thread\n"); + } #endif #endif