[Nauty] nauty 2.7rc3 has bug fix
Brendan.McKay at anu.edu.au
Tue Oct 15 14:14:30 AEDT 2019
Dear nauty people,
James Trimble and Chris Jefferson have uncovered a bug that has been
in nauty since version 2.6b10.
In order to have encountered this bug, all of the following must be true:
(a) You called densenauty() or sparsenauty() rather than calling
the procedure nauty() directly.
(b) You were processing graphs with 20 or more vertices.
(c) You compiled naugraph.c or sparsegraph.c with an explicit
value of MAXN other than the default MAXN=0.
This includes using the libraries nauty1.a, nautyW1.a
and nautyL1.a. However nauty.a, nautyW.a and nautyL.a
were safe. Likewise, the utilities distributed with nauty were
all safe. The bug did not affect Traces.
My sincere apology for any problems this causes.
Versions 2.6r11 and 2.7rc2 are withdrawn and replaced on the
web pages by 2.6r12 and 2.7rc3 respectively.
If you want to fix the bug yourself:
About line 57 of naugraph.c, change
static TLS_ATTR set dnwork[40*MAXM];
static TLS_ATTR set dnwork[2*60*MAXM];
About line 77 of nausparse.c, change
static TLS_ATTR set snwork[40*MAXM];
static TLS_ATTR set snwork[2*60*MAXM];
Here are further notes on version 2.7rc3:
* Fixed the type of the 4th parameter of options.usercanonproc.
* Check kill requests more often. If the global int variable
nauty_kill_request becomes nonzero, nauty and Traces will
exit at certain key points. In dreadnaut nauty_kill_request
is set if the user types control-C (if the operating system
provides this facility).
* nauty.h loads <limits.h> and <stdint.h> if they exist.
* Some features were added to assist installation on non-POSIX
systems or where 'configure' can't be easily run, such as
Microsoft Visual Studio. These changes are mostly in nauty.h.
1. The predefined names _MSC_VER, _WIN32 and _WIN64 are examined.
2. HAVE_HWLZCNT and HAVE_HWPOPCNT can be defined at compile time
(to 0 or 1) to indicate the presence of hardware lzcnt and popcnt
3. The FIRSTBITNZ, FIRSTBIT and POPCOUNT macros can be defined
at compile time (though it is unlikely you will be able to do
much better than the default versions). FIRSTBIT is defined
in terms of FIRSTBITNZ if it isn't defined separately.
4. Loading of unavailable header files can be disabled by
predefining macros: AVOID_SYS_TYPES_H, AVOID_UNISTD_H,
AVOID_STRINGS_H and AVOID_SYS_WAIT_H.
There is more to do here; there are lots of variations in
different software versions and documentation is inconsistent.
Thanks to Andy Mercier for discussions so far.
* Bug fixed in directg that caused a crash for digraph6 output
over WORDSIZE vertices.
* The external variables labelorg and nauty_kill_request were
moved into the "C" block of nauty.h for C++ compatibility.
This version will become the official release of 2.7 unless
problems are reported.
More information about the Nauty