[RFC] Remove EXIT_UNSUPPORTED in stdlib/test-bz22786 if path is NULL
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Mon Apr 27 13:19:59 GMT 2026
On 23/04/26 09:43, Stefan Liebler wrote:
> With commit 6c3a8a9d868a8deddf0d6dcc785b6d120de90523 (2018-08-25), the test
> used xmalloc instead of malloc and therefore removed the path == NULL check
> as xmalloc is printing an error message and exit with a fail in this case.
>
> On s390-32 this was always a FAIL instead of UNSUPPORTED, thus the previous
> behaviour was re-enabled with commit 3bad2358d67d371497079bba4f8eca9c0096f4e2
> five days later on 2018-08-30. Therefore, we don't know if this also happens
> on other systems.
>
> While removing s390-32 with commit b01debcd8f5229860b3224ea135b1b8456281cee
> I've adjusted the comment and Adhemerval asked whether this can also happen
> on other systems with little physical memory. We've decided to remove the
> EXIT_UNSUPPORTED in this extra commit instead of the large s390-32 removal one.
> See libc-alpha:
> https://inbox.sourceware.org/libc-alpha/20260409085102.3475867-1-stli@linux.ibm.com/T/#m28b5375bef4cfb10729b93c7e658b91a14b07b85
>
> If this change leads to test fails somewhere, please add a comment about your
> used system and revert this commit.
>
> Nowadays path is allocated with support_blob_repeat_allocate which returns
> an empty struct in case of malloc/mmap is not able to allocate enough memory.
> All other tests using support_blob_repeat_allocate
> (stdlib/tst-strtod-overflow.c, support/tst-support_blob_repeat.c and
> string/tst-memmove-overflow.c) are properly checking the start or size field
> directly or indirectly via TEST_COMPARE_BLOB.
> While the test support/tst-support_blob_repeat.c just prints a warning if
> allocating the large mappings is not possible, the other tests exit with
> UNSUPPORTED.
>
> At least for the realpath-part, the commit
> 855a67c3cc81be4fc806c66e3e01b53e352a4e9f introduced support_accept_oom handling.
> According to the discussion:
> https://inbox.sourceware.org/libc-alpha/8a1fd5b2-5118-498e-babf-e46c0e6d1cdf@redhat.com/
> Agreed, test-bz22786 can use a lot of memory.
> OK. These convert OOM to UNSUPPORTED for the test if there isn't enough memory.
>
> In case of not enough memory while allocating path, this change would lead to a
> segmentation fault instead of UNSUPPORTED. As this is inconsistent compared to
> the second realpath-part and also to the other tests using
> support_blob_repeat_allocate, I would prefer keeping UNSUPPORTED if path is NULL.
> Nevertheless, I've posted this patch for discussion as promised while reviewing
> the s390-32 removal patch.
LGTM, thanks. I think I haven't seem any failure besides s390.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> stdlib/test-bz22786.c | 7 -------
> 1 file changed, 7 deletions(-)
>
> diff --git a/stdlib/test-bz22786.c b/stdlib/test-bz22786.c
> index 6e2636d896..494fc2adc7 100644
> --- a/stdlib/test-bz22786.c
> +++ b/stdlib/test-bz22786.c
> @@ -43,13 +43,6 @@ do_test (void)
> struct support_blob_repeat repeat
> = support_blob_repeat_allocate ("a", 1, path_len);
> char *path = repeat.start;
> - if (path == NULL)
> - {
> - printf ("Repeated allocation (%zu bytes): %m\n", path_len);
> - /* On systems with little physical memory the test will
> - fail and should be unsupported. */
> - return EXIT_UNSUPPORTED;
> - }
>
> TEST_VERIFY_EXIT (symlink (".", lnk) == 0);
>
More information about the Libc-alpha
mailing list