From 7c9f756dcc51b9974d5e81116e1d8a34a6152040 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 13 Oct 2020 15:45:07 +0200 Subject: [PATCH] MINOR: fd: report an error message when failing initial allocations When starting with a huge maxconn (say 1 billion), the only error seen is "No polling mechanism available". This doesn't help at all to resolve the problem. Let's add specific alerts for the failed mallocs. Now we can get this instead: [ALERT] 286/154439 (23408) : Not enough memory to allocate 2000000033 entries for fdtab! This may be backported as far as 2.0 as it helps debugging bad configurations. --- src/fd.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/fd.c b/src/fd.c index 2c1dcef..79a9ec8 100644 --- a/src/fd.c +++ b/src/fd.c @@ -665,14 +665,20 @@ int init_pollers() int p; struct poller *bp; - if ((fdtab = calloc(global.maxsock, sizeof(*fdtab))) == NULL) + if ((fdtab = calloc(global.maxsock, sizeof(*fdtab))) == NULL) { + ha_alert("Not enough memory to allocate %d entries for fdtab!\n", global.maxsock); goto fail_tab; + } - if ((polled_mask = calloc(global.maxsock, sizeof(*polled_mask))) == NULL) + if ((polled_mask = calloc(global.maxsock, sizeof(*polled_mask))) == NULL) { + ha_alert("Not enough memory to allocate %d entries for polled_mask!\n", global.maxsock); goto fail_polledmask; + } - if ((fdinfo = calloc(global.maxsock, sizeof(*fdinfo))) == NULL) + if ((fdinfo = calloc(global.maxsock, sizeof(*fdinfo))) == NULL) { + ha_alert("Not enough memory to allocate %d entries for fdinfo!\n", global.maxsock); goto fail_info; + } update_list.first = update_list.last = -1; -- 1.7.10.4