Thanks, merged!

Regards,
Florin


> On Nov 3, 2022, at 12:33 AM, 张东亚 <fortitude.zh...@gmail.com> wrote:
> 
> Hi,
> 
> I have made a patch and submit it to gerrit for review.
> 
> https://gerrit.fd.io/r/c/vpp/+/37567 <https://gerrit.fd.io/r/c/vpp/+/37567>
> 
> I have run against vpp unit test for session feature and no regression found 
> yet.
> 
> Florin Coras <fcoras.li...@gmail.com <mailto:fcoras.li...@gmail.com>> 
> 于2022年11月1日周二 23:42写道:
> Hi, 
> 
> Will you be pushing the fix or should I do it? 
> 
> Regards, 
> Florin
> 
>> On Oct 25, 2022, at 9:26 AM, Florin Coras via lists.fd.io 
>> <http://lists.fd.io/> <fcoras.lists=gmail....@lists.fd.io 
>> <mailto:fcoras.lists=gmail....@lists.fd.io>> wrote:
>> 
>> Hi, 
>> 
>> Apologies, I missed your original point and only though about the large 
>> bitmap we create at startup. So yes, go for s->session_index + 1.
>> 
>> Regards,
>> Florin
>> 
>>> On Oct 24, 2022, at 9:11 PM, Zhang Dongya <fortitude.zh...@gmail.com 
>>> <mailto:fortitude.zh...@gmail.com>> wrote:
>>> 
>>> Hi,
>>> 
>>> Can you elaborate a bit on that, If session index is 64, if we do not 
>>> increase by 1, it will only make one 64B vec for the bitmap, which may not 
>>> hold the session index.
>>> 
>>> Florin Coras <fcoras.li...@gmail.com <mailto:fcoras.li...@gmail.com>> 
>>> 于2022年10月25日周二 01:14写道:
>>> Hi, 
>>> 
>>> Could you replace s->session_index by s->session_index ? : 1 in the patch? 
>>> 
>>> Regards, 
>>> Florin
>>> 
>>>> On Oct 24, 2022, at 12:23 AM, Zhang Dongya <fortitude.zh...@gmail.com 
>>>> <mailto:fortitude.zh...@gmail.com>> wrote:
>>>> 
>>>> Hi list,
>>>> 
>>>> Recently I am testing my TCP application in a plugin, what I did is to 
>>>> initiate a TCP client in my plugin, however, when I build the debug image 
>>>> and test, the vpp
>>>> will crash and complaint about out of memory.
>>>> 
>>>> After doing some research, it seems the following code may cause the crash:
>>>> 
>>>> always_inline session_t *
>>>> ho_session_alloc (void)
>>>> {
>>>>   session_t *s;
>>>>   ASSERT (vlib_get_thread_index () == 0);
>>>>   s = session_alloc (0);
>>>>   s->session_state = SESSION_STATE_CONNECTING;
>>>>   s->flags |= SESSION_F_HALF_OPEN;
>>>>   /* Not ideal. Half-opens are only allocated from main with worker barrier
>>>>    * but can be cleaned up, i.e., session_half_open_free, from main without
>>>>    * a barrier. In debug images, the free_bitmap can grow while workers 
>>>> peek
>>>>    * the sessions pool, e.g., session_half_open_migrate_notify, and as a
>>>>    * result crash while validating the session. To avoid this, grow the 
>>>> bitmap
>>>>    * now. */
>>>>   if (CLIB_DEBUG)
>>>>     {
>>>>       session_t *sp = session_main.wrk[0].sessions;
>>>>       clib_bitmap_validate (pool_header (sp)->free_bitmap, 
>>>> s->session_index);
>>>>     }
>>>>   return s;
>>>> }
>>>> 
>>>> since the clib_bitmap_validate is defined as:
>>>> 
>>>> /* Make sure that a bitmap is at least n_bits in size */
>>>> #define clib_bitmap_validate(v,n_bits) \
>>>>   clib_bitmap_vec_validate ((v), ((n_bits) - 1) / BITS (uword))
>>>> 
>>>> 
>>>> The first half open session have a session_index with zero, so 0-1 will 
>>>> make a overflow which cause it try to allocate (UINT64_MAX-1)/ 64 memory 
>>>> which make
>>>> the vppinfra abort.
>>>> 
>>>> I think we should modify the code above with s->session_index + 1, if 
>>>> that's correct, I will submit a patch later.
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22117): https://lists.fd.io/g/vpp-dev/message/22117
Mute This Topic: https://lists.fd.io/mt/94529335/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to