From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [dpdk-dev] [Bug 804] distributor: exiting workers can hang distributor core
Date: Thu, 02 Sep 2021 18:03:40 +0000 [thread overview]
Message-ID: <bug-804-3@http.bugs.dpdk.org/> (raw)
https://bugs.dpdk.org/show_bug.cgi?id=804
Bug ID: 804
Summary: distributor: exiting workers can hang distributor core
Product: DPDK
Version: 21.08
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: examples
Assignee: dev@dpdk.org
Reporter: brian90013@gmail.com
Target Milestone: ---
Created attachment 171
--> https://bugs.dpdk.org/attachment.cgi?id=171&action=edit
patch to avoid hanging
Hello,
I have been testing the distributor example using one interface and five cores
- ./build/distributor_app -l 10-14 -- -p 1. This leaves me one worker thread. I
noticed the application often hangs after I supply SIGINT and I have to
manually kill the process.
I added some additional debugging and discovered the distributor core is not
returning from rte_distributor_flush(). Looking inside that function, I see the
loop waiting for total_outstanding() to return 0. I believe that requires all
workers to have returned all in-flight packets?
Moving to the worker core, it calls rte_distributor_get_pkt(), does its
processing, then loops to the start of the while(!quit_signal_work) block. When
exiting, this is true, so it immediately exits the loop - without returning the
last batch of packets. I believe this is what is causing the distributor core
to fail to exit as it continues to loop waiting for workers to return their
buffers.
As a test, I added a call to rte_distributor_return_pkt(d, id, buf, num)
outside the worker while() loop but before the thread exits. I've run many
tests and have not seen the process hang once.
--
You are receiving this mail because:
You are the assignee for the bug.
reply other threads:[~2021-09-02 18:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-804-3@http.bugs.dpdk.org/ \
--to=bugzilla@dpdk.org \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.