DPDK patches and discussions
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Yoni Gilad <Yonig@radcom.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] virtio: crash when using multiple processes (16.04 regression)
Date: Mon, 23 May 2016 21:36:43 +0800	[thread overview]
Message-ID: <20160523133643.GL5641@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <DB3PR05MB4919295860E52A070C06A87D54A0@DB3PR05MB491.eurprd05.prod.outlook.com>

On Thu, May 19, 2016 at 04:20:40PM +0000, Yoni Gilad wrote:
> Hi,
> 
> We have encountered a crash in virtio_xmit_pkts (specifically, in the call to virtqueue_notify) when running DPDK in a multi-process setup. This is a regression in DPDK 16.04.
> 
> The culprit seems to be the field vtpci_ops in the virtio_hw structure. This field is stored in shared memory, but points to a struct in the primary process's address space. If the same struct was loaded in a different address in the secondary process, it will lead to a crash or other issues when this field is dereferenced there. The referenced virtio_pci_ops struct contains function pointers, which can also be different in the secondary process.


That indeed sounds like to be the culprit. Function pointers is known
for not friendly for multiple processes: see the 18.c section of DPDK
programmers guide (http://dpdk.org/doc/guides/prog_guide/multi_proc_support.html):

    The use of function pointers between multiple processes running based of
    different compiled binaries is not supported, since the location of a
    given function in one process may be different to its location in a
    second. This prevents the librte_hash library from behaving properly as
    in a multi-threaded instance, since it uses a pointer to the hash
    function internally.


TBH, I missed this bit (multiple processes) while introducing this
function pointer; well, we never tested it before, either.

We could fix/workaround it by getting the right function pointer set
dynamically, but that far from being perfect.

	--yliu

      parent reply	other threads:[~2016-05-23 13:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-19 16:20 Yoni Gilad
2016-05-19 16:43 ` Thomas Monjalon
2016-05-23 13:36 ` Yuanhan Liu [this message]

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=20160523133643.GL5641@yliu-dev.sh.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=Yonig@radcom.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).