Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 106387 - fftw3.0.1: gen_r2r (part of genfft suite) crashes with a floating point exception
Summary: fftw3.0.1: gen_r2r (part of genfft suite) crashes with a floating point excep...
Status: VERIFIED WORKSFORME
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Gentoo Science Related Packages
URL:
Whiteboard:
Keywords:
: 106388 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-09-18 11:05 UTC by Renato Vitolo
Modified: 2006-07-04 07:56 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Renato Vitolo 2005-09-18 11:05:25 UTC
gen_r2r is one of the codelet-generators in the genfft set of programs with
which the codelets in fftw are generated,
see the directory genfft/ inside the fftw-3.0.1 source root.
It is automatically called when compiling fftw and requesting the
generation of new codelets, as described in 
http://www.fftw.org/fftw3_doc/Generating-your-own-code.html#Generating-your-own-code
It is compiled with ocaml.

On my gentoo amd64 it crashes with a floating point exception, making impossible
the generation of new codelets.


Reproducible: Always
Steps to Reproduce:
1.download and unpack the source fftw-3.0.1.tar.gz
2.edit Makefile.am in rdft/codelets/r2r/ and remove the character #
  from the line beginning with O00 (line 30)
3.call sh bootstrap.sh in the top directory
4.call libtoolize --copy --force in the top directory
5.call make in the top directory
6.compilation fails. The generated codelet files
 (such as e01_8.c but also many others not only in rdft/codelets/r2r)
 are empty.
7.cd genfft && ./gen_r2r -redft00 -n 8 gives Floating point exception
  this is why the codelet files are empty  

Actual Results:  
$ cd genfft
$ ./gen_r2r -redft00 -n 8
$ Floating point exception
$ gdb ./gen_r2r
$ set args -redft00 -n 8
(gdb) r
Starting program: /usr/src/fftw-3.0.1/genfft/gen_r2r -redft00 -n 8

Program received signal SIGFPE, Arithmetic exception.
0x000000000044c3b7 in bng_generic_div_rem_norm_digit ()


Expected Results:  
On another machine (a Xeon running Debian GNU/Linux):

mymach:/usr/src/packages/fftw-3.0.1/genfft#  ./gen_r2r -redft00 -n 8
/* Generated by: ./gen_r2r -redft00 -n 8 */

/*
 * This function contains 32 FP additions, 20 FP multiplications,
 * (or, 18 additions, 6 multiplications, 14 fused multiply/add),
 * 16 stack variables, and 16 memory accesses
 */
/*
 * Generator Id's : 
 * $Id: algsimp.ml,v 1.7 2003/03/15 20:29:42 stevenj Exp $
 * $Id: fft.ml,v 1.2 2003/03/15 20:29:42 stevenj Exp $
 * $Id: gen_r2r.ml,v 1.3 2003/04/17 19:25:50 athena Exp $
 */

static void unnamed_0(const R * I, R * O, stride istride, stride ostride)
{
const E KP2_000000000 = K(+2.000000000000000000000000000000000000000000000);
const E KP1_801937735 = K(+1.801937735804838252472204639014890102331838324);
const E KP445041867 = K(+0.445041867912628808577805128993589518932711138);
const E KP1_246979603 = K(+1.246979603717467061050009768008479621264549462);
{
E T3;
E T13;
E T12;
E T14;
E T6;
E T16;
E T9;
E T15;
{
E T1;
E T2;
E T10;
E T11;
T1 = I[0];
T2 = I[WS(istride, 7)];
T3 = T1 - T2;
T13 = T1 + T2;
T10 = I[WS(istride, 2)];
T11 = I[WS(istride, 5)];
T12 = T10 - T11;
T14 = T10 + T11;
}
{
E T4;
E T5;
E T7;
E T8;
T4 = I[WS(istride, 4)];
T5 = I[WS(istride, 3)];
T6 = T4 - T5;
T16 = T4 + T5;
T7 = I[WS(istride, 6)];
T8 = I[WS(istride, 1)];
T9 = T7 - T8;
T15 = T7 + T8;
}
O[WS(ostride, 3)] = FMA(KP1_246979603, T6, T3) + FNMA(KP445041867, T9,
KP1_801937735 *
 T12);
O[0] = FMA(KP2_000000000, T14 + T16 + T15, T13);
O[WS(ostride, 2)] = FMA(KP1_246979603, T15, T13) + FNMA(KP1_801937735, T16,
KP44504186
7 * T14);
O[WS(ostride, 1)] = FMA(KP1_246979603, T12, T3) + FNMA(KP1_801937735, T9,
KP445041867 
* T6);
O[WS(ostride, 5)] = FMA(KP1_246979603, T9, T3) + FNMA(KP1_801937735, T6,
KP445041867 *
 T12);
O[WS(ostride, 6)] = FMA(KP1_246979603, T14, T13) + FNMA(KP1_801937735, T15,
KP44504186
7 * T16);
O[WS(ostride, 4)] = FMA(KP1_246979603, T16, T13) + FNMA(KP445041867, T15,
KP1_80193773
5 * T14);
O[WS(ostride, 7)] = FMA(KP2_000000000, T12 + T6 + T9, T3);
}
}

static void unnamed(const R *I, R *O, stride is, stride os,  int v, int ivs, int
ovs)
{
int i;
for (i = v; i > 0; --i) {
unnamed_0(I, O, is, os);
I += ivs; O += ovs;
}
}

static const kr2r_desc desc = { 8, "unnamed", { 18, 6, 14, 0 }, &GENUS, REDFT00,
0, 0,
 0, 0 };

void X(codelet_unnamed)(planner *p)
{  X(kr2r_register)(p, unnamed, &desc);
}


It might be that the problem is the ocaml compiler.

I also have tried to edit the bootstrap.sh file, adding
  --host=x86_64-pc-linux-gnu  --build=x86_64-pc-linux-gnu --libdir=/usr/lib64
but id did not help.



Gentoo Base System version 1.6.13
Portage 2.0.51.22-r2 (default-linux/amd64/2005.0, gcc-3.4.4, glibc-2.3.5-r1,
2.6.9-gentoo-r14 x86_64)
=================================================================
System uname: 2.6.9-gentoo-r14 x86_64 AMD Athlon(tm) 64 Processor 3000+
dev-lang/python:     2.3.5-r2
sys-apps/sandbox:    1.2.12
sys-devel/autoconf:  2.13, 2.59-r6
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6
sys-devel/binutils:  2.15.92.0.2-r10
sys-devel/libtool:   1.5.18-r1
virtual/os-headers:  2.6.11-r2
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=k8 -O2 -pipe -fPIC"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.3/env
/usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3.4/env
/usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config
/usr/lib/X11/xkb /usr/share/config /usr/share/texmf/dvipdfm/config/
/usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/
/usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-march=k8 -O2 -pipe -fPIC"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks sfperms strict"
GENTOO_MIRRORS="http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo
http://gentoo.osuosl.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="amd64 X alsa avi berkdb bitmap-fonts cdr crypt cups curl dvd eds emboss
encode esd fam flac foomaticdb fortran gd gdbm gif gpm gstreamer gtk gtk2
imagemagick imlib ipv6 jpeg kde libwww lzw lzw-tiff mad motif mp3 mpeg ncurses
nls ogg opengl pam pdflib perl plotutils png python qt quicktime readline samba
sdl spell ssl tcpd tetex tiff truetype-fonts type1-fonts usb userlocales vorbis
xine xml2 xpm xv zlib userland_GNU kernel_linux elibc_glibc"
Unset:  ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS, LINGUAS, PORTDIR_OVERLAY
Comment 1 Jim Laflin 2005-09-18 11:08:33 UTC
*** Bug 106388 has been marked as a duplicate of this bug. ***
Comment 2 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2006-05-11 03:10:31 UTC
please retest with fftw3.1.1
Comment 3 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2006-06-11 03:19:16 UTC
No response from user, closing by default, it should be fixed in the new version anyway.
Comment 4 Renato Vitolo 2006-07-04 07:56:39 UTC
Indeed, genfft works correctly in fftw3.1.1. Thank you.