Ciao,
16 feb 2026, 10:22 da [email protected]:

> Hi GMP Team,
>
> I have found a bug in GMP 6.3.0 while experimenting with a generic C build
> (--disable-assembly) and attempting to use a lower MUL_TOOM22_THRESHOLD
> (value 5). The issue involves `mpn_toom42_mul` crashing with small
> unbalanced inputs.
>

The current version of gmp-impl.h contains a sequence of #define 
MPN_TOOMxy_MUL_MINSIZE, and in particular:

#define MPN_TOOM22_MUL_MINSIZE    6
#define MPN_TOOM42_MUL_MINSIZE   10

This means that we already know that the code does not work for some "extreme"  
choices of the thresholds.
We usually avoid to add checks resulting in unused branches in the library.
Should we add lines like the following in all toom*.c functions?ASSERT( 
MUL_TOOM22_THRESHOLD >= MPN_TOOM22_MUL_MINSIZE); 


> ## 1. GMP Version
> GMP 6.3.0 (Patched locally to lower MUL_TOOM22_THRESHOLD to 5).
> Note: We were experimenting with a generic C build (--disable-assembly) and
> attempting to patch gmp-impl.h to use a lower MUL_TOOM22_THRESHOLD (value
> 5) to enable specific optimizations for small sizes. This bug is exposed by
> tuning the threshold, but indicates a logic-check handling in `toom42`
> logic for specific geometries.
>
If you will find thresholds values that could be generated by the speed/tuneup 
program and that trigger this logic, we will be happy to search for a fix. But 
if the only way to trigger it is to set a threshold value that is outside of 
the supported range, then we will keep on maintaining the library as simple and 
efficient as it can be.

Thanks for testing the library,
mb
_______________________________________________
gmp-bugs mailing list
[email protected]
https://gmplib.org/mailman/listinfo/gmp-bugs

Reply via email to