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

Reply via email to