For CI testing, it is needed to also remove this t_tsearch test from the
"XFAIL_TESTS =" section in mingw-w64-crt/testcases/Makefile.am
diff --git a/mingw-w64-crt/testcases/Makefile.am
b/mingw-w64-crt/testcases/Makefile.am
index 9c785f893ea9..e96071e6f61c 100644
--- a/mingw-w64-crt/testcases/Makefile.am
+++ b/mingw-w64-crt/testcases/Makefile.am
@@ -300,8 +300,7 @@ XFAIL_TESTS = \
t_excpt_int_divzero_thrd \
t_excpt_int_overflow \
t_excpt_int_overflow_thrd \
- t_nullptrexception \
- t_tsearch
+ t_nullptrexception
# Include the complex math testcase fragment.
include complex/Makefile.am
On Saturday 15 August 2026 15:58:53 Pali Rohár wrote:
> The test t_tsearch.c is crashing on Windows XP. Function twalk() invokes
> twalk() in infinite recursion which cause stack overflow.
>
> The reason is that tdestroy() frees the memory for the root node which
> invalidates root pointer and accessing it later cause use-after-free error.
> Seems that msvcrt memory allocator on Windows XP can trigger this crash
> more often than on other Windows versions.
>
> Fix this issue, after the tdestroy() call, sets the root node pointer to NULL.
> ---
> mingw-w64-crt/testcases/t_tsearch.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/mingw-w64-crt/testcases/t_tsearch.c
> b/mingw-w64-crt/testcases/t_tsearch.c
> index 496525980529..91c0de50e9f0 100644
> --- a/mingw-w64-crt/testcases/t_tsearch.c
> +++ b/mingw-w64-crt/testcases/t_tsearch.c
> @@ -117,6 +117,7 @@ int main (int argc, char **argv)
> printf("----------\n");
>
> tdestroy(root, noop_free);
> + root = NULL;
> printf("---------- tree after deletion of all nodes using tdestroy()
> only:\n");
> nodes_printed = 0;
> twalk(root, print_node);
> --
> 2.20.1
>
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public