Keys that have been successfully inserted into the tree are not being
retrived on Darwin 8.6.0 with gcc 4.0.1 (PowerPC) or on Darwin 8.6.1 with
gcc 4.0.1 (Intel). Identical code, compiled on Linux 2.6.13 with gcc 4.0.2
(Intel), works perfectly (tested insertion/retrival of up to 100 million keys).
The test program is attached. The first case that fails is with nrays = 32.
-----------------------
Compile with:
gcc -O3 -o judyhs_ray judyhs_ray.c -lJudy
Run with:
judyhs_ray <nrays>
e.g.,
judyhs_ray 32
-----------------------
Thanks,
christiaan.gribble@utah.edu
Test program demonstrating failure
Logged In: NO
I've found the same problem with Darwin 8.6 as well in my own test program.
Interestingly if you build judy with CFLAGS=-O2 the bug manifests more often
and earlier.
Logged In: NO
Just confirming, for the test program given to break you have to build Judy with
optimisation which is not enabled by default. i.e. "CFLAGS=-O2 ./configure;
make"
Logged In: NO
A workaround is to compile with gcc 3.3 on Darwin 8.x on powerpc. e.g.
> "CC=gcc-3.3 ./configure; make"
Darwin 8.x on Intel only has gcc 4.0 so the only workaround there is to build
without optimisation.
Logged In: NO
Workaround on intel macs is to install gcc-3.3 from source. Instructions can be
found here: http://www.macosxhints.com/article.php?
story=20060423105014540
Then build with: "CC=gcc-3.3 ./configure; make"
Logged In: NO
This bug is fixed (or at least not reproducable) in Judy v1.0.4. The example program will execute correctly on Tiger (Darwin 8) compiled with gcc 4.0.1 and -O2 if linked with judy 1.04, and fails if linked with v1.0.3.
Logged In: NO
Problem only occurs with gcc 4.01 on Tiger, doesn't happen with gcc 4.0.1 on Leopard.