Segmentation fault in mpz_ui_pow_ui
Matthew Mundell
mattm at comp.leeds.ac.uk
Fri Oct 7 16:57:42 CEST 2005
In the Parma Polyhedron Library, using GMP 4.1.4, calls to
mpz_ui_pow_ui with large exponents are resulting in segmentation
faults.
Below is a small test program which reproduces the fault.
/* gmp-pow.c -- test mpz_ui_pow_ui */
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
int
main ()
{
// FIX 2.95 gmp-pow.c:13: parse error before `z'
//printf ("GMP (version %s) mpz_ui_pow_ui test:\n\n", gmp_version);
mpz_t z;
mpz_init (z);
#define NUM1 12345678
printf ("10^%li\n", (long) NUM1);
mpz_ui_pow_ui (z, 10, NUM1);
#define NUM2 123456789
printf ("10^%li\n", (long) NUM2);
mpz_ui_pow_ui (z, 10, NUM2);
return EXIT_SUCCESS;
}
Here is the test program output and a backtrace, from GDB.
(gdb) r
Starting program: /home/matt/src/tests/c/gmp-pow
10^12345678
10^123456789
Program received signal SIGSEGV, Segmentation fault.
__gmpz_n_pow_ui (r=0xbf84e330, bp=0xbf84e314, bsize=1, e=15432098) at n_pow_ui.c:459
(gdb) bt
#0 __gmpz_n_pow_ui (r=0xbf84e330, bp=0xbf84e314, bsize=1, e=15432098) at n_pow_ui.c:459
#1 0xb7f0e53c in __gmpz_ui_pow_ui (r=0xbe6d4224, b=10, e=3194831396) at ui_pow_ui.c:47
#2 0x08048562 in main () at gmp-pow.c:24
(gdb)
The test program was compiled with commands like
gcc -g -I. gmp-pow.c .libs/libgmp.a -o gmp-pow
and the fault occurred when GMP was compiled with all versions of GCC
that were tried. Most of these versions are listed below, with the
associated GMP configure command(s) and the outputs of `uname -a',
./config.guess and ./configfsf.guess. `make check' on GMP passed in
all cases.
2.95.4 20011002 (Debian prerelease)
./configure --enable-debugging CC=/usr/bin/gcc-2.95 CPPFLAGS=-fexceptionsa
Linux cspcx95 2.6.13.2 #1 Fri Sep 30 19:00:13 BST 2005 i686 GNU/Linux
athlon-pc-linux-gnu
i686-pc-linux-gnu
3.3.3 20040412 (Red Hat Linux 3.3.3-7)
./configure --enable-cxx --enable-debugging CPPFLAGS=-fexceptions
./configure
Linux cslin117.csunix.comp.leeds.ac.uk 2.6.10 #1 SMP Wed Jan 26 16:43:28 GMT 2005 i686 i686 i386 GNU/Linux
pentium4-pc-linux-gnu
i686-pc-linux-gnu
3.3.5 (Debian 1:3.3.5-8)
./configure --enable-cxx --enable-debugging CPPFLAGS=-fexceptions
Linux cspcx95 2.6.13.2 #1 Fri Sep 30 19:00:13 BST 2005 i686 GNU/Linux
athlon-pc-linux-gnu
i686-pc-linux-gnu
3.4.4 20041218 (prerelease) (Debian 3.4.3-6)
./configure --enable-cxx --enable-debugging CC=/usr/bin/gcc-3.4 CXX=/usr/bin/g++-3.4 CPPFLAGS=-fexceptions
Linux cspcx95 2.6.13.2 #1 Fri Sep 30 19:00:13 BST 2005 i686 GNU/Linux
athlon-pc-linux-gnu
i686-pc-linux-gnu
Thanks.
More information about the gmp-bugs
mailing list