Re: mpz_probab_prime_p crashes?
Hi Marc, I ran 'make check' on gmp-6.2.1 and it reported problems (see the attached file). I can't remember if I ran it before my original email but 'make install' seemed to have worked so if I did I think I must have ignored it. As you suggested I downloaded gmp-6.2.99-20221117121717 ran './configure', 'make', 'make check' (see attached file) and 'make install' and now pt3 runs to completion printing 'hmmm, it hasn't failed' After I sent the first email I did a bit of digging around the source code and isolated the error to a call of mpz_powm() in millerrabin() Prior to calling mpz_powm() I printed the parameters to millerrabin() which are passed to mpz_powm(). With these values millerrabin( n=2011, x=7804482689133377995, y=1, q=1005, k=1) mpz_powm() crashed. This seems to have been resolved in 6.2.99 Thank you very much for your help sorting this out. TTFN Philip Riebold On Fri, Jun 9, 2023 at 5:18 AM Marc Glisse wrote: > Hello, > > could you try with a recent snapshot from > https://gmplib.org/download/snapshot/ ? > > If you built GMP yourself, did you run `make check` afterwards? > > > On Thu, 8 Jun 2023, Philip Riebold wrote: > > > Hi, > > > > > > I think I may have come across an error in mpz_probab_prime_p() It seems > to > > > > occasionally cause a segmentation fault either when repeatedly run with > the > > > > same arguments or with increasing values of the first argument. > > > > > > I initially came across the bug when I was trying to find the closest > primes > > > >> 10^n, 2*10^n or 5*10^n when the program would crash after listing the > > first > > > > few dozen/hundred results. > > > > > > The platform is a 16GB M2 Mac Air. > > > > > > The test program below, pt3.c is the simplest I could produce to > demonstrate > > > > the problem. > > > > > > The first argument 2011 is the smallest value I found > which > > > > caused the error. > > > > > > When I ran pt3 100 times the for() loop executed between 4 and 4684 times > > > > before crashing. > > > > > > GMP version 6.2.1 > > > > = > > > > Philip:gmp_error philip$ cat pt3.c > > > > #include > > > > #include > > > > #include > > > > > > int main(void) > > > > { > > > >setbuf(stdout,NULL); > > > >mpz_t test; > > > > > >for(int n = 1; n <= 1000; n++) { > > > >printf("%4d\n", n); > > > >mpz_init(test); > > > >mpz_set_str(test, "2011", 10); > > > >int res = mpz_probab_prime_p(test, 100); > > > >mpz_clear(test); > > > >if(res != 1) > > > >printf("res = %d\n", res); > > > >} > > > >printf("hmmm, it hasn't failed\n"); > > > > } > > > > Philip:gmp_error philip$ > > > > = > > > > Philip:gmp_error philip$ cc -v > > > > Apple clang version 14.0.3 (clang-1403.0.22.14.1) > > > > Target: arm64-apple-darwin22.5.0 > > > > Thread model: posix > > > > InstalledDir: > > > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin > > > > Philip:gmp_error philip$ > > > > = > > > > Philip:gmp_error philip$ uname -a > > > > Darwin Philip 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:52:43 > PDT > > 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T8112 arm64 > > > > Philip:gmp_error philip$ > > > > = > > > > Philip:gmp-6.2.1 philip$ ./config.guess > > > > aarch64-apple-darwin22.5.0 > > > > Philip:gmp-6.2.1 philip$ > > > > = > > > > Philip:gmp-6.2.1 philip$ ./configfsf.guess > > > > aarch64-apple-darwin22.5.0 > > > > Philip:gmp-6.2.1 philip$ > > > > = > > > > Philip:gmp_error philip$ cc -o pt3 pt3.c -lgmp > > > > Philip:gmp_error philip$ ./pt3 > > > > 1 > > > > 2 > > > > 3 > > > > 4 > > > > ⋮ > > > > 143 > > > > 144 > > > > 145 > > > > 146 > > > > Segmentation fault: 11 > > > > Philip:gmp_error philip$ > > > > = > > > > > > If there's anything I can do to help please ask. > > > > > > TTFN > > > > Philip Riebold > > > > -- > Marc Glisse > Philip:gmp-6.2.1 philip$ make check /Applications/Xcode.app/Contents/Developer/usr/bin/make check-recursive Making check in tests Making check in . /Applications/Xcode.app/Contents/Developer/usr/bin/make libtests.la t-bswap t-constants t-count_zeros t-hightomask t-modlinv t-popc t-parity t-sub make[4]: `libtests.la' is up to date. /bin/sh ../libtool --tag=CC --mode=link gcc -O2 -pedantic -march=armv8-a -no-install -o t-bswap t-bswap.o libtests.la ../libgmp.la libtool: warning: '-no-install' is ignored for aarch64-apple-darwin22.5.0 libtool: warning: assuming '-no-fast-install' instead rm: .libs/t-bswap: Permission denied libtool: link: gcc -O2 -pedantic -march=armv8-a -o .libs/t-bswap t-bswap.o ./.libs/libtests.a /Users/philip/euler/gmp/gmp-6.2.1/.libs/libgmp.dylib ../.libs/libgmp.dylib ld: can't write output file: .libs/t-bswap for architecture arm64 clang: error: linke
Re: mpz_probab_prime_p crashes?
Hello, could you try with a recent snapshot from https://gmplib.org/download/snapshot/ ? If you built GMP yourself, did you run `make check` afterwards? On Thu, 8 Jun 2023, Philip Riebold wrote: Hi, I think I may have come across an error in mpz_probab_prime_p() It seems to occasionally cause a segmentation fault either when repeatedly run with the same arguments or with increasing values of the first argument. I initially came across the bug when I was trying to find the closest primes 10^n, 2*10^n or 5*10^n when the program would crash after listing the first few dozen/hundred results. The platform is a 16GB M2 Mac Air. The test program below, pt3.c is the simplest I could produce to demonstrate the problem. The first argument 2011 is the smallest value I found which caused the error. When I ran pt3 100 times the for() loop executed between 4 and 4684 times before crashing. GMP version 6.2.1 = Philip:gmp_error philip$ cat pt3.c #include #include #include int main(void) { setbuf(stdout,NULL); mpz_t test; for(int n = 1; n <= 1000; n++) { printf("%4d\n", n); mpz_init(test); mpz_set_str(test, "2011", 10); int res = mpz_probab_prime_p(test, 100); mpz_clear(test); if(res != 1) printf("res = %d\n", res); } printf("hmmm, it hasn't failed\n"); } Philip:gmp_error philip$ = Philip:gmp_error philip$ cc -v Apple clang version 14.0.3 (clang-1403.0.22.14.1) Target: arm64-apple-darwin22.5.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Philip:gmp_error philip$ = Philip:gmp_error philip$ uname -a Darwin Philip 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:52:43 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T8112 arm64 Philip:gmp_error philip$ = Philip:gmp-6.2.1 philip$ ./config.guess aarch64-apple-darwin22.5.0 Philip:gmp-6.2.1 philip$ = Philip:gmp-6.2.1 philip$ ./configfsf.guess aarch64-apple-darwin22.5.0 Philip:gmp-6.2.1 philip$ = Philip:gmp_error philip$ cc -o pt3 pt3.c -lgmp Philip:gmp_error philip$ ./pt3 1 2 3 4 ⋮ 143 144 145 146 Segmentation fault: 11 Philip:gmp_error philip$ = If there's anything I can do to help please ask. TTFN Philip Riebold -- Marc Glisse ___ gmp-bugs mailing list gmp-bugs@gmplib.org https://gmplib.org/mailman/listinfo/gmp-bugs
Re: mpz_probab_prime_p crashes?
Philip Riebold writes: The test program below, pt3.c is the simplest I could produce to demonstrate the problem. If that simple program would trigger a genuine GMP bug, that would be astonishing indeed. I have no idea why your computer gets a segfault. Perhaps the malloc implementation is completely broken? Perhaps you hit bad RAM cells? -- Torbjörn Please encrypt, key id 0xC8601622 ___ gmp-bugs mailing list gmp-bugs@gmplib.org https://gmplib.org/mailman/listinfo/gmp-bugs
mpz_probab_prime_p crashes?
Hi, I think I may have come across an error in mpz_probab_prime_p() It seems to occasionally cause a segmentation fault either when repeatedly run with the same arguments or with increasing values of the first argument. I initially came across the bug when I was trying to find the closest primes > 10^n, 2*10^n or 5*10^n when the program would crash after listing the first few dozen/hundred results. The platform is a 16GB M2 Mac Air. The test program below, pt3.c is the simplest I could produce to demonstrate the problem. The first argument 2011 is the smallest value I found which caused the error. When I ran pt3 100 times the for() loop executed between 4 and 4684 times before crashing. GMP version 6.2.1 = Philip:gmp_error philip$ cat pt3.c #include #include #include int main(void) { setbuf(stdout,NULL); mpz_t test; for(int n = 1; n <= 1000; n++) { printf("%4d\n", n); mpz_init(test); mpz_set_str(test, "2011", 10); int res = mpz_probab_prime_p(test, 100); mpz_clear(test); if(res != 1) printf("res = %d\n", res); } printf("hmmm, it hasn't failed\n"); } Philip:gmp_error philip$ = Philip:gmp_error philip$ cc -v Apple clang version 14.0.3 (clang-1403.0.22.14.1) Target: arm64-apple-darwin22.5.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Philip:gmp_error philip$ = Philip:gmp_error philip$ uname -a Darwin Philip 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:52:43 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T8112 arm64 Philip:gmp_error philip$ = Philip:gmp-6.2.1 philip$ ./config.guess aarch64-apple-darwin22.5.0 Philip:gmp-6.2.1 philip$ = Philip:gmp-6.2.1 philip$ ./configfsf.guess aarch64-apple-darwin22.5.0 Philip:gmp-6.2.1 philip$ = Philip:gmp_error philip$ cc -o pt3 pt3.c -lgmp Philip:gmp_error philip$ ./pt3 1 2 3 4 ⋮ 143 144 145 146 Segmentation fault: 11 Philip:gmp_error philip$ = If there's anything I can do to help please ask. TTFN Philip Riebold Philip:gmp-6.2.1 philip$ ./configure checking build system type... aarch64-apple-darwin22.5.0 checking host system type... aarch64-apple-darwin22.5.0 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... ./install-sh -c -d checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking ABI=64 checking compiler gcc -O2 -pedantic ... yes checking compiler gcc -O2 -pedantic has sizeof(void*)==8... yes checking compiler gcc -O2 -pedantic -march=armv8-a... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for gcc option to accept ISO C99... none needed checking how to run the C preprocessor... gcc -E checking build system compiler gcc... yes checking for build system preprocessor... gcc -E checking for build system executable suffix... checking whether build system compiler is ANSI... yes checking for build system compiler math library... -lm checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E using ABI="64" CC="gcc" CFLAGS="-O2 -pedantic -march=armv8-a" CPPFLAGS="" MPN_PATH=" arm64 generic" checking whether assembler supports --noexecstack option... no checking for ar... ar checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking how to print strings... printf checking for a sed that does not truncate output... /opt/local/bin/gsed checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no checking whether ln -s works... yes checking the maximum length of command line arguments... 786432 checking how to convert aarch64-apple-darwin22.5.0 file names to aarch64-apple-darwin22.5.0 format... func_convert_file_noop checking how to convert aarch64-apple-darwin22.5.0 file names to toolchain format... f