OK, so the valgrind issues in that log are all in qsieve::member functions, and those are fixed by what I sent you.
But the errors in what's listed in trac#1402 are in a different place in my code, despite being called from roughly the same point in the mwrank run. The actual effect on the program in the uninitialized array elements (as fixed by what I sent earlier this evening) could not cause problems outside that chunk of code. Certain bit patterns used in a sieve should have been initialized to 0s but instead were uninitialized and hence effectively random. The worst effect of that would be that a valid rational point might fail to be found, but it could not cause invalid reads from memory. I'll look again at the code where #1402 chokes which is in integer factorization (pdivs() calls pdivs_pari() which -- before calling the pari library -- calls pdivs_trial() to do trial division). But it would still be interesting to see if the problem persists after the other bug fix. John On 18/12/2007, mabshoff <[EMAIL PROTECTED]> wrote: > > Hello John, > > I don't know if this is helpful, but on sage.math get the following > happens when running mwrank under valgrind with the curve from ticket > 1402. > > The issue goes away after I applied your initialization patch you send > me per email. The valgrind log is somewhat different from the one in > #1402, but is also involves NTL and happens in the same section of the > code. Accounting for different gccs and operating system your patch > might still have fixed #1402. Justin, could you please try > > http://sage.math.washington.edu/home/mabshoff/cremona-20071124.p5.spkg > > and report back if that fixes the issue for you? > > Cheers, > > Michael > > [EMAIL PROTECTED]:/tmp/Work-mabshoff/sage-2.9/local/bin$ ./valgrind -- > tool=memcheck --leak-resolution=high ./mwrank > ==9637== Memcheck, a memory error detector. > ==9637== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et > al. > ==9637== Using LibVEX rev 1791, a library for dynamic binary > translation. > ==9637== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. > ==9637== Using valgrind-3.3.0.SVN, a dynamic binary instrumentation > framework. > ==9637== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et > al. > ==9637== For more details, rerun with: -v > ==9637== > Program mwrank: uses 2-descent (via 2-isogeny if possible) to > determine the rank of an elliptic curve E over Q, and list a > set of points which generate E(Q) modulo 2E(Q). > and finally saturate to obtain generating points on the curve. > For more details see the file mwrank.doc. > For details of algorithms see the author's book. > > Please acknowledge use of this program in published work, > and send problems to [EMAIL PROTECTED] > > Version compiled on Dec 16 2007 at 09:53:10 by GCC 4.1.2 20061115 > (prerelease) (Debian 4.1.1-21) > using base arithmetic option NTL_ALL (NTL bigints and multiprecision > floating point) > Using NTL multiprecision floating point with 15 decimal places. > Enter curve: [0,0,1,-1,0] > > Curve [0,0,1,-1,0] : Basic pair: I=48, J=-432 > disc=255744 > 2-adic index bound = 2 > By Lemma 5.1(a), 2-adic index = 1 > 2-adic index = 1 > One (I,J) pair > Looking for quartics with I = 48, J = -432 > Looking for Type 2 quartics: > Trying positive a from 1 up to 1 (square a first...) > (1,0,-6,4,1) --trivial > Trying positive a from 1 up to 1 (...then non-square a) > Finished looking for Type 2 quartics. > Looking for Type 1 quartics: > Trying positive a from 1 up to 2 (square a first...) > (1,0,0,4,4) --nontrivial...(x:y:z) = (1 : 1 : 0) > Point = [0:0:1] > height = 0.0511114082399688 > Rank of B=im(eps) increases to 1 (The previous point is on the egg) > Exiting search for Type 1 quartics after finding one which is globally > soluble. > Mordell rank contribution from B=im(eps) = 1 > Selmer rank contribution from B=im(eps) = 1 > Sha rank contribution from B=im(eps) = 0 > Mordell rank contribution from A=ker(eps) = 0 > Selmer rank contribution from A=ker(eps) = 0 > Sha rank contribution from A=ker(eps) = 0 > Rank = 1 > Searching for points (bound = 8)...==9637== Conditional jump or move > depends on uninitialised value(s) > ==9637== at 0x4B9E13E: qsieve::sift0(long, long, long, int) > (sieve_search.cc:903) > ==9637== by 0x4B9E54A: qsieve::sift(long) (sieve_search.cc:829) > ==9637== by 0x4B9EB8A: qsieve::search() (sieve_search.cc:1119) > ==9637== by 0x4B91001: mw::search(NTL::RR, int, int) (mwprocs.cc: > 724) > ==9637== by 0x40927C: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x4073C1: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x5C074C9: (below main) (in /lib/libc-2.3.6.so) > ==9637== > ==9637== Conditional jump or move depends on uninitialised value(s) > ==9637== at 0x4B9DAA5: qsieve::check_point(unsigned long, long, > long, long*, int) (sieve_search.cc:942) > ==9637== by 0x4B9E157: qsieve::sift0(long, long, long, int) > (sieve_search.cc:905) > ==9637== by 0x4B9E54A: qsieve::sift(long) (sieve_search.cc:829) > ==9637== by 0x4B9EB8A: qsieve::search() (sieve_search.cc:1119) > ==9637== by 0x4B91001: mw::search(NTL::RR, int, int) (mwprocs.cc: > 724) > ==9637== by 0x40927C: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x4073C1: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x5C074C9: (below main) (in /lib/libc-2.3.6.so) > ==9637== > ==9637== Conditional jump or move depends on uninitialised value(s) > ==9637== at 0x4B9DACE: qsieve::check_point(unsigned long, long, > long, long*, int) (sieve_search.cc:942) > ==9637== by 0x4B9E157: qsieve::sift0(long, long, long, int) > (sieve_search.cc:905) > ==9637== by 0x4B9E54A: qsieve::sift(long) (sieve_search.cc:829) > ==9637== by 0x4B9EB8A: qsieve::search() (sieve_search.cc:1119) > ==9637== by 0x4B91001: mw::search(NTL::RR, int, int) (mwprocs.cc: > 724) > ==9637== by 0x40927C: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x4073C1: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x5C074C9: (below main) (in /lib/libc-2.3.6.so) > ==9637== > ==9637== Conditional jump or move depends on uninitialised value(s) > ==9637== at 0x4B9DAD6: qsieve::check_point(unsigned long, long, > long, long*, int) (sieve_search.cc:951) > ==9637== by 0x4B9E157: qsieve::sift0(long, long, long, int) > (sieve_search.cc:905) > ==9637== by 0x4B9E54A: qsieve::sift(long) (sieve_search.cc:829) > ==9637== by 0x4B9EB8A: qsieve::search() (sieve_search.cc:1119) > ==9637== by 0x4B91001: mw::search(NTL::RR, int, int) (mwprocs.cc: > 724) > ==9637== by 0x40927C: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x4073C1: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x5C074C9: (below main) (in /lib/libc-2.3.6.so) > ==9637== > ==9637== Conditional jump or move depends on uninitialised value(s) > ==9637== at 0x4B9DF1C: qsieve::check_point(unsigned long, long, > long, long*, int) (sieve_search.cc:930) > ==9637== by 0x4B9E157: qsieve::sift0(long, long, long, int) > (sieve_search.cc:905) > ==9637== by 0x4B9E54A: qsieve::sift(long) (sieve_search.cc:829) > ==9637== by 0x4B9EB8A: qsieve::search() (sieve_search.cc:1119) > ==9637== by 0x4B91001: mw::search(NTL::RR, int, int) (mwprocs.cc: > 724) > ==9637== by 0x40927C: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x4073C1: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x5C074C9: (below main) (in /lib/libc-2.3.6.so) > ==9637== > ==9637== Conditional jump or move depends on uninitialised value(s) > ==9637== at 0x4B9DF5D: qsieve::check_point(unsigned long, long, > long, long*, int) (sieve_search.cc:930) > ==9637== by 0x4B9E157: qsieve::sift0(long, long, long, int) > (sieve_search.cc:905) > ==9637== by 0x4B9E54A: qsieve::sift(long) (sieve_search.cc:829) > ==9637== by 0x4B9EB8A: qsieve::search() (sieve_search.cc:1119) > ==9637== by 0x4B91001: mw::search(NTL::RR, int, int) (mwprocs.cc: > 724) > ==9637== by 0x40927C: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x4073C1: (within /tmp/Work-mabshoff/sage-2.9/local/bin/ > mwrank) > ==9637== by 0x5C074C9: (below main) (in /lib/libc-2.3.6.so) > done: > found points of rank 1 > and regulator 0.0511114082399688 > Processing points found during 2-descent...done: > now regulator = 0.0511114082399688 > Saturating (bound = 100)...done: > points were already saturated. > > Generator 1 is [0:-1:1]; height 0.0511114082399688 > > Regulator = 0.0511114082399688 > > The rank and full Mordell-Weil basis have been determined > unconditionally. > (20.1453 seconds) > > Cheers, > > Michael > > > -- John Cremona --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---