From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f48.google.com (mail-wm0-f48.google.com [74.125.82.48]) by dpdk.org (Postfix) with ESMTP id 7E3B1567C for ; Wed, 29 Mar 2017 10:18:41 +0200 (CEST) Received: by mail-wm0-f48.google.com with SMTP id o81so16347216wmb.1 for ; Wed, 29 Mar 2017 01:18:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7QdiwqOty9f3lLMHp+oICRGe2tA9axFtSIREVGDFEzM=; b=1hYt1VPTz+nZN/dr6TjHPwAYygFhHEpxEpRDvvjMEzYTwonlTd7+ANpCuYILGiO81b 3L/HLGAXYNkr5vgJL6DOwrf5I7hv7kZUeDkF3juzxzG9m5IBBc3gW0LD8JAFH3kY3IjB xNYrd9ZR2U5XsZjR6u56wTROZFvSxuW95uX0ykXBVQDN32d2oVJEMoA16PjE3PsY0HeX iDeMKvuj7agRFQ3jXczJzp39K29dFOffjiTQ0RxcTa40pi3F0JPZYmeaOwIM3ljujVHZ XN94Q4+Xbv66dj+PgfZ8DREjVqECo4E5hc8IUb9022O71Qdg1UU+ciwKmL5mHWxsfo8H 4xUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7QdiwqOty9f3lLMHp+oICRGe2tA9axFtSIREVGDFEzM=; b=iyPmt7WBr03jYjlbJYH6Y32MgeTgeHVV4e+Q/FT/qPKOJ2zXAvxxvp+a3s09pbsvOt v//DcZ0I7XcLngUr3nLl2qpF1LVrlkG/EkgrWtjjFMdQ8Hy0IYvUiqt3Uwt5UwzwDpXz d9rJlRccVYTrssY+hbApQT/e/ZFn3D+LFQoYo1D4IUjmUndDbyUlWs/aUcjHNe5WRH84 huPl9puCDtqhz3MCMBwsHajladatsBNqOK5OOkGT0Psf9aWbH15echWZMkbrH7Qix4RB BCV2Ku/rfuaRJ0wF2ZvYTlBWDT1Dekx6tHE5zXIzPyG1q0EF7M7mJbUUCIa0gJj/QU3T KziA== X-Gm-Message-State: AFeK/H0homgWRI5v2bimZMzLkAqQOQaEC2SeWVFjnNgo8Kve+hlACkAocPMAHXg2rP6r+X+P X-Received: by 10.28.154.7 with SMTP id c7mr38415wme.119.1490775520790; Wed, 29 Mar 2017 01:18:40 -0700 (PDT) Received: from platinum (2a01cb0c03c651000226b0fffeed02fc.ipv6.abo.wanadoo.fr. [2a01:cb0c:3c6:5100:226:b0ff:feed:2fc]) by smtp.gmail.com with ESMTPSA id w17sm7639878wrc.20.2017.03.29.01.18.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 29 Mar 2017 01:18:40 -0700 (PDT) Date: Wed, 29 Mar 2017 10:18:38 +0200 From: Olivier Matz To: Shreyansh Jain Cc: , , Message-ID: <20170329101838.58162bf7@platinum> In-Reply-To: References: <1490004190-16892-1-git-send-email-shreyansh.jain@nxp.com> <20170324172227.5bdfac8c@platinum> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH 1/2] drivers/mempool: add stack mempool handler as driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Mar 2017 08:18:41 -0000 On Tue, 28 Mar 2017 17:12:47 +0530, Shreyansh Jain wrote: > Hello Olivier, > > On Friday 24 March 2017 09:52 PM, Olivier Matz wrote: > [..] > > > I tried to pass the mempool autotest, and it issues a segfault. > > I think the libraries are missing in rte.app.mk, so no handler is > > registered. > > I have been trying to simulate the segfault that you are referring to > above. But, I think it should not be the case. If a mempool handler is > not registered (as librte_mempool_ring was not included in > mk/rte.app.mk, so, no "ring_mp_mc"), the caller would get error. > > The mempool_autotest is reporting: > > --->8-- > RTE>>mempool_autotest > cannot allocate mp_nocache mempool > Test Failed > --->8-- Here are the reproduction steps: git clone http://dpdk.org/git/dpdk cd dpdk/ wget -O - http://dpdk.org/dev/patchwork/patch/21986/mbox | git am - wget -O - http://dpdk.org/dev/patchwork/patch/21985/mbox | git am - make config T=x86_64-native-linuxapp-gcc make -j32 test-build echo 128 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages mkdir -p /mnt/huge mount -t hugetlbfs none /mnt/huge echo mempool_autotest | ./build/app/test -- # segfault # replay with debug make -j32 test-build make -j32 EXTRA_CFLAGS="-O0 -g" test-build ulimit -c unlimited echo mempool_autotest | ./build/app/test -- # segfault + core dump gdb -c core ./build/app/test (gdb) bt #1 0x000000000064dead in rte_mempool_ops_alloc (mp=0x7f8816abdb40) at /root/dpdk/lib/librte_mempool/rte_mempool_ops.c:101 #2 0x000000000064c1e7 in rte_mempool_populate_phys (mp=0x7f8816abdb40, vaddr=0x7f880987a800 , paddr=6958852096, len=26761152, free_cb=0x64c032 , opaque=0x7f8822334d4c) at /root/dpdk/lib/librte_mempool/rte_mempool.c:359 #3 0x000000000064c9db in rte_mempool_populate_default (mp=0x7f8816abdb40) at /root/dpdk/lib/librte_mempool/rte_mempool.c:572 #4 0x000000000064d3d4 in rte_mempool_create (name=0x9b1ff0 "test_nocache", n=12671, elt_size=2048, cache_size=0, private_data_size=0, mp_init=0x0, mp_init_arg=0x0, obj_init=0x49f309 , obj_init_arg=0x0, socket_id=-1, flags=0) at /root/dpdk/lib/librte_mempool/rte_mempool.c:895 #5 0x00000000004a20ed in test_mempool () at /root/dpdk/test/test/test_mempool.c:519 #6 0x0000000000435189 in cmd_autotest_parsed (parsed_result=0x7ffe55006420, cl=0x7c87090, data=0x0) at /root/dpdk/test/test/commands.c:103 #7 0x00000000006749df in cmdline_parse (cl=0x7c87090, buf=0x7c870d8 "mempool_autotest\n") at /root/dpdk/lib/librte_cmdline/cmdline_parse.c:359 (gdb) up #1 0x000000000064dead in rte_mempool_ops_alloc (mp=0x7f8816abdb40) at /root/dpdk/lib/librte_mempool/rte_mempool_ops.c:101 101 return ops->alloc(mp); (gdb) print ops $1 = (struct rte_mempool_ops *) 0x4e69c00 (gdb) print *ops $2 = {name = '\000' , alloc = 0x0, free = 0x0, enqueue = 0x0, dequeue = 0x0, get_count = 0x0} Regards, Olivier > > > > > Adding the following code in lib/librte_mempool/rte_mempool_ops.c > > fixes the crash. > > > > ops = rte_mempool_get_ops(mp->ops_index); > > + if (ops == NULL || ops->alloc == NULL) > > + return -ENOTSUP; > > return ops->alloc(mp); > > Can you tell me for which case did your code reach > rte_mempool_ops_alloc() and segfault? > > In my case, librte_mempool_ring and librte_mempool_stack are not added > to mk/rte.app.mk and it is static compilation. > > > > > Now that drivers are not linked to the mempool library, it can > > happen that there is no handler. Could you please add this patch in your > > patchset? > > Yes, once I can get this issue reproduced. Because I think there is one > more place similar code should go (rte_mempool_ops_getcount). > As per what I can see, this would only happen if rte_mempool_xmem_create > is called and then directly alloc is called. That is not happening for > mempool_autotest. > > - > Shreyansh >