Re: strange allocation failures

Andrey Ryabinin
2017-03-13T10:29:55Z

On 03/13/2017 01:10 PM, Dmitry Vyukov wrote:
> On Mon, Mar 13, 2017 at 11:08 AM, Dmitry Vyukov <dvyukov@google.com> wrote:
>> On Mon, Mar 13, 2017 at 11:04 AM, Andrey Ryabinin
>> <aryabinin@virtuozzo.com> wrote:
>>>
>>>
>>> On 03/13/2017 12:50 PM, Dmitry Vyukov wrote:
>>>> Hello Andrey, Kirill,
>>>>
>>>> Can you please help me understand where is all my memory?
>>>> I am running very moderate workload on a machine with 7.5GB of memory
>>>> with KASAN. And I see constant vmalloc allocation failures for very
>>>> moderate sizes. I am confused why it happens and where is all my
>>>> memory...
>>>>
>>>
>>>
>>> Perhaps it's SIGKILL generated by syzkaller?
>>>
>>> static void *__vmalloc_area_node()
>>> {
>>> .....
>>> if (fatal_signal_pending(current)) {
>>> area->nr_pages = i;
>>> goto fail;
>>> }
>>
>>
>> Ah, that would make sense. Syzkaller can indeed kill processes frequently.
>>
>> Perhaps we should not print the lengthy allocation failure message
>> with all the details in such. Not sure how easy it is to filter out
>> such cases.
>> I have constant stream of these messages that just make everything
>> else lost between them. And they are quite confusing. I've starred at
>> the numbers trying to understand why I am short on memory.
>
>
> Seems trivial. What do you think of:
>

Makes sense. ACK.

> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index 0dd80222b20b..0b057628a7ba 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -1683,7 +1683,7 @@ static void *__vmalloc_area_node(struct
> vm_struct *area, gfp_t gfp_mask,
>
> if (fatal_signal_pending(current)) {
> area->nr_pages = i;
> - goto fail;
> + goto fail_no_warn;
> }
>
> if (node == NUMA_NO_NODE)
> @@ -1709,6 +1709,7 @@ static void *__vmalloc_area_node(struct
> vm_struct *area, gfp_t gfp_mask,
> warn_alloc(gfp_mask, NULL,
> "vmalloc: allocation failure, allocated %ld
> of %ld bytes",
> (area->nr_pages*PAGE_SIZE), area->size);
> +fail_no_warn:
> vfree(area->addr);
> return NULL;
> }
>
>
> ?