GMP 5.1.1: Valgrind reports incorrect read in __gmpn_copyd (called from __gmpz_mul_2exp)

bodrato at bodrato at
Wed Feb 20 21:35:36 CET 2013

Ciao Alexander,

Il Mer, 20 Febbraio 2013 2:58 pm, Alexander Kruppa ha scritto:
> The attached program triggers a valgrind error for an incorrect read.

I can not find the attached example...

> gmp-5.1.1/lib/libgmp.a && valgrind ./test_mpmod

> ==17830== Invalid read of size 8
> ==17830==    at 0x401A74: __gmpn_copyd (in

> ./config.guess
> core2-unknown-linux-gnu

> This may be related to GMP sometimes reading past the end of an array for
> efficiency (e.g., with 16-byte SSE3 data transfer instructions), as
> pointed out at under Debugging.

Yes, copyd, on core2, uses some sse instrunctions. You are probably
incurring in a Valgrind/GMP conflict...

> could you provide a suppression file for these cases?

I dug into the on-line documentation of Valgrind, I believe that the
option to distinguish the SSE "benign read" out of other possible
incorrect reads is: --partial-loads-ok=yes . Unfortunately I did not find
any way to enable it selectively for some functions only.

Can you please try if your test passes with "valgrind
--partial-loads-ok=yes" ? If it does, do you have any suggestion on how to
configure valgrind accordingly?

Best regards,


More information about the gmp-bugs mailing list