Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Dec 2017 10:46:34 +0000
From:      Martina Balintova <balint.martina@gmail.com>
To:        Vincenzo Maffione <v.maffione@gmail.com>
Cc:        freebsd-net@freebsd.org, net@freebsd.org, g.lettieri@iet.unipi.it
Subject:   Re: Netmap ouch double free
Message-ID:  <CADBMiEf4pdhUOM_HV21BihKnHxcbwubox_jWt2O%2B_BVh9YeuAA@mail.gmail.com>
In-Reply-To: <CA%2B_eA9g3d4YrFi4=VjcObRLq-h3SRPSkfMMG_58NQ4wg1N3E-Q@mail.gmail.com>
References:  <CADBMiEd-X-pJ5yjhcxXK5Fo_EgWsMai0Um2HGffYzC_EnRUU3g@mail.gmail.com> <CADBMiEfM8qEQbRtb-egJjtQ0vhZ0CCMRS2YHbmz8A_k7AyZu_Q@mail.gmail.com> <CA%2B_eA9g3d4YrFi4=VjcObRLq-h3SRPSkfMMG_58NQ4wg1N3E-Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Vincenzo,

Thank you for pointing me in right direction. Yes indeed, those were
overflow buffers that did the trick. I did not point them back before
closing.
(I am using linux).

Martina



On Dec 3, 2017 08:56, "Vincenzo Maffione" <v.maffione@gmail.com> wrote:

> Hi,
>   It may be related to the "extra buffers feature" of netmap, that lb uses.
> When the netmap port is opened, some additional buffers (not bound to any
> netmap ring) are allocated to be used by the application for slot swapping.
> They are provided through the ni_bufs_head field as a linked list (see
> updated netmap manual https://github.com/luigirizzo/
> netmap/blob/master/share/man/man4/netmap.4 ).
> To free them, the free list must be returned when closing the netmap file
> descriptor, using the same ni_bufs_head field.
>
> To check if this is true you could make sure that you are using "-B 0"
> option, which means no extra buffers are used.
>
> Are you using the latest netmap code from github? Are you using FreeBSD or
> Linux?
>
> Cheers,
>   Vincenzo
>
> 2017-12-01 15:21 GMT+01:00 Martina Balintova <balint.martina@gmail.com>:
>
>> Hi,
>> I am currently playing with lb app in netmap. Every time I kill/close it,
>> the app hangs for some time and does not end immediately. In syslogs I am
>> getting:
>> '
>> Netmap_do_unregif   deleting last instance for myapp{1
>> Netmap_do_deref     active=5
>> Netnap_obj_free       ouch, double free on buffer 27777
>> Netmap_extra_free   freed 0 buffers
>> '
>>
>> This happens when I have some consumer on the pipe and at some point
>> during
>> whole lb lifetime, it did not consume all packets (resulting in oq being
>> filled or packets being dropped). If the pipe did not ever have a
>> consumer,
>> then it will not end up in the double free.
>> I am finding it quite hard to debug in gdb, as this is happening at the
>> shutdown.
>> Could someone pls point me to reason?
>>
>> I am running lb with one interface and 2 groups, different numb of pipes
>> per group and this happens even with no  extra buffers.
>>
>> Martina
>> _______________________________________________
>> freebsd-net@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
>>
>
>
>
> --
> Vincenzo Maffione
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADBMiEf4pdhUOM_HV21BihKnHxcbwubox_jWt2O%2B_BVh9YeuAA>