From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 608F0425DF; Mon, 18 Sep 2023 20:53:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2207D4027E; Mon, 18 Sep 2023 20:53:08 +0200 (CEST) Received: from inbox.dpdk.org (inbox.dpdk.org [95.142.172.178]) by mails.dpdk.org (Postfix) with ESMTP id EBD9840275 for ; Mon, 18 Sep 2023 20:53:06 +0200 (CEST) Received: by inbox.dpdk.org (Postfix, from userid 33) id DD6C7425E0; Mon, 18 Sep 2023 20:53:06 +0200 (CEST) From: bugzilla@dpdk.org To: dev@dpdk.org Subject: [Bug 1290] rte_exit will hang if called from worker or service thread Date: Mon, 18 Sep 2023 18:53:06 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: DPDK X-Bugzilla-Component: core X-Bugzilla-Version: 23.07 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: stephen@networkplumber.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: dev@dpdk.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: multipart/alternative; boundary=16950631860.4CD8E1d5C.1022152 Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All MIME-Version: 1.0 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 --16950631860.4CD8E1d5C.1022152 Date: Mon, 18 Sep 2023 20:53:06 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All https://bugs.dpdk.org/show_bug.cgi?id=3D1290 Bug ID: 1290 Summary: rte_exit will hang if called from worker or service thread Product: DPDK Version: 23.07 Hardware: All OS: All Status: UNCONFIRMED Severity: normal Priority: Normal Component: core Assignee: dev@dpdk.org Reporter: stephen@networkplumber.org Target Milestone: --- Calling rte_exit in a thread other than main thread won't work because the cleanup code is calling rte_eal_cleanup, and inside that it ends up waiting for all workers. Since the thread you are calling from is a worker, it ends up waiting for itself. rte_exit() rte_eal_cleanup() rte_service_finalize() rte_eal_mp_wait_lcore() void rte_eal_mp_wait_lcore(void) { unsigned lcore_id; RTE_LCORE_FOREACH_WORKER(lcore_id) { rte_eal_wait_lcore(lcore_id); } } Either service handling needs to be smarter, the rte_exit() function check if it is called from main lcore, and/or documentation needs update. Not a simple fix because in order to safely do the cleanup logic all threads have to gone to a quiescent state. --=20 You are receiving this mail because: You are the assignee for the bug.= --16950631860.4CD8E1d5C.1022152 Date: Mon, 18 Sep 2023 20:53:06 +0200 MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All
Bug ID 1290
Summary rte_exit will hang if called from worker or service thread
Product DPDK
Version 23.07
Hardware All
OS All
Status UNCONFIRMED
Severity normal
Priority Normal
Component core
Assignee dev@dpdk.org
Reporter stephen@networkplumber.org
Target Milestone ---

Calling rte_exit in a thread other=
 than main thread won't work because
the cleanup code is calling rte_eal_cleanup, and inside that it ends
up waiting for all workers.  Since the thread you are calling from
is a worker, it ends up waiting for itself.

rte_exit()
        rte_eal_cleanup()
                rte_service_finalize()
                        rte_eal_mp_wait_lcore()


void
rte_eal_mp_wait_lcore(void)
{
        unsigned lcore_id;

        RTE_LCORE_FOREACH_WORKER(lcore_id) {
                rte_eal_wait_lcore(lcore_id);
        }
}

Either service handling needs to be smarter, the rte_exit() function
check if it is called from main lcore, and/or documentation needs update.
Not a simple fix because in order to safely do the cleanup logic
all threads have to gone to a quiescent state.
          


You are receiving this mail because:
  • You are the assignee for the bug.
=20=20=20=20=20=20=20=20=20=20
= --16950631860.4CD8E1d5C.1022152--