View Single Post
Old 2021-09-17, 20:08   #7
kriesel
 
kriesel's Avatar
 
"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

22×5×172 Posts
Default Bug list

This is an incomplete list of bugs/issues for an incomplete list of versions of Mfactor.

Versions prior to V19 have not been built or tested.

V19 compiled under msys2 for Windows nevertheless thinks there will be a Linux shell capable of accepting certain commands. This results in each run producing the following error:
Code:
'printf' is not recognized as an internal or external command,
  operable program or batch file.
From an email long ago (line numbers probably changed):
Code:
There are these 3 lines buried in set_mlucas_path, starting line 8518 of util.c, that seem to be causing the trouble.
strcpy(cmdstr, "printf \"\"");
strcat(cmdstr, mlucas_path);
pipe_ptr = popen(cmdstr, "r");
https://linux.die.net/man/3/popen
I'm thinking Windows 7 or 10 are not taking too kindly to the program trying to open a process pipe to linux shell on a Windows install that hasn't one, and use linux shell syntax on whatever Windows process it gets, which appears to be a hidden Windows command prompt.
Note I do not see that printf error message on Ubuntu in WSL on Win10. Ubuntu is fine with the code written for linux
It was also observed to identify MM31 as M31 in results output for input -mm 31.

V19.1 not built or tested

V20.1 (and probably v20.0) produces multiple error messages and fails to compile factor.c to factor.o, so no link to produce an executable is possible.
This is due to a change of type in some variables in some routines used also by Mlucas, from int to uint32, which were not also changed in factor.c. There are also errors involving too many or too few arguments.
Code:
../src/factor.c:37:6: error: conflicting types for ‘NRADICES’
  int NRADICES, RADIX_VEC[10]; /* RADIX_VEC[] stores sequence of complex FFT radices used. */
      ^~~~~~~~
In file included from ../src/carry.h:29:0,
                 from ../src/Mlucas.h:30,
                 from ../src/factor.c:33:
../src/Mdata.h:450:15: note: previous declaration of ‘NRADICES’ was here
 extern uint32 NRADICES, RADIX_VEC[10]; /* NRADICES, RADIX_VEC[] store number & set of complex FFT radices used. */
               ^~~~~~~~
../src/factor.c:37:16: error: conflicting types for ‘RADIX_VEC’
  int NRADICES, RADIX_VEC[10]; /* RADIX_VEC[] stores sequence of complex FFT radices used. */
                ^~~~~~~~~
In file included from ../src/carry.h:29:0,
                 from ../src/Mlucas.h:30,
                 from ../src/factor.c:33:
../src/Mdata.h:450:25: note: previous declaration of ‘RADIX_VEC’ was here
 extern uint32 NRADICES, RADIX_VEC[10]; /* NRADICES, RADIX_VEC[] store number & set of complex FFT radices used. */
                         ^~~~~~~~~
../src/factor.c: In function ‘main’:
../src/factor.c:1052:4: warning: #warning Building factor.c in unthreaded (i.e. single-main-thread) mode. [-Wcpp]
   #warning Building factor.c in unthreaded (i.e. single-main-thread) mode.
    ^~~~~~~
../src/factor.c:1248:3: error: too few arguments to function ‘mi64_shrl’
   mi64_shrl(p, q, findex, lenP);
   ^~~~~~~~~
In file included from ../src/Mdata.h:31:0,
                 from ../src/carry.h:29,
                 from ../src/Mlucas.h:30,
                 from ../src/factor.c:33:
../src/mi64.h:202:12: note: declared here
 DEV uint64 mi64_shrl    (const uint64 x[], uint64 y[], uint32 nshift, uint32 len, uint32 output_len);
            ^~~~~~~~~
../src/factor.c:1266:4: error: too few arguments to function ‘mi64_shrl’
    mi64_shrl(q, q, findex, lenP);
    ^~~~~~~~~
In file included from ../src/Mdata.h:31:0,
                 from ../src/carry.h:29,
                 from ../src/Mlucas.h:30,
                 from ../src/factor.c:33:
../src/mi64.h:202:12: note: declared here
 DEV uint64 mi64_shrl    (const uint64 x[], uint64 y[], uint32 nshift, uint32 len, uint32 output_len);
            ^~~~~~~~~

../src/factor.c:2366:12: error: too many arguments to function ‘PerPass_tfSieve’
   count += PerPass_tfSieve(
            ^~~~~~~~~~~~~~~
In file included from ../src/Mlucas.h:32:0,
                 from ../src/factor.c:33:
../src/factor.h:316:9: note: declared here
  uint64 PerPass_tfSieve(
         ^~~~~~~~~~~~~~~
../src/factor.c: At top level:
../src/factor.c:2537:9: error: conflicting types for ‘PerPass_tfSieve’
  uint64 PerPass_tfSieve(
         ^~~~~~~~~~~~~~~
The next release will address this. Meanwhile use an older version, such as V19.0:
https://www.mersenneforum.org/mayer/...mlucas_v19.txz or https://www.mersenneforum.org/mayer/...lucas_v19.tbz2

Compiling V20.1 seems to require glibc v2.30 or higher, producing lots of warnings about the version otherwise. Ubuntu 18.04 has v2.27. One example:
Code:
In file included from ../src/types.h:30:0,
                 from ../src/align.h:29,
                 from ../src/Mlucas.h:29,
                 from ../src/get_fft_radices.c:23:
../src/platform.h:1263:3: warning: #warning GLIBC either not defined or version < 2.30 ... including <sys/sysctl.h> header. [-Wcpp]
  #warning GLIBC either not defined or version < 2.30 ... including <sys/sysctl.h> header.
    ^~~~~~~
Top of reference tree: https://www.mersenneforum.org/showpo...22&postcount=1

Last fiddled with by kriesel on 2021-09-22 at 00:06
kriesel is offline   Reply With Quote