BUG: Analyze Always Updates aaaaaaaa.cnt

Last reviewed: December 9, 1997
Article ID: Q171350
The information in this article applies to:
  • Microsoft Visual SourceSafe, 32-bit, for Windows, versions 4.0a, 5.0

SUMMARY

Analyze will always update the value of the file aaaaaaaa.cnt, even if you run it without -f. Visual SourceSafe uses this file to determine the next physical file to be created in the database. If a file is accidentally copied into one of the database subdirectories and Analyze is run on the database, aaaaaaaa.cnt may be set to an abnormally large value. If Analyze returns an "unable to create filemapping for database" error, you should check aaaaaaaa.cnt and you may need to reset it. You should also check the subdirectories of the data directory for a file that does not belong there.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

SourceSafe database files follow an order that allows every log file in the data directory to be associated with a number. The number can be derived using the following algorithm:

   __int64 PhyToNum(char *szFile)
   {
   __int64 lFileNum = 0;   /* Counter for file Number */
   int  i;              /* Loop Variable */

   for( i=7; i >= 0; i-- ) /* Start from the right of the filename */
    {
     lFileNum *= 26;  /* Multiply by the appropriate power of 26 */
     lFileNum += (__int64)(toupper(szFile[i]) - 'A');
                      /* Convert the value */
    }
   return (lFileNum);
   }

Please note that the __int64 is a Microsoft-specific variable type for a 64- bit integer. This code snippet may not work with all compilers.

If Analyze detects a filename that was put into one of the subdirectories of the data directory by mistake, it can evaluate to a number higher than any other file in the database. Analyze allocates memory for every file from the first to the highest number it finds, even if some of those files do not physically exist in the data directory. This can cause Analyze to ask for more memory than the operating system can make available. As a result, the "unable to create filemapping" message appears.

If the aaaaaaaa.cnt is set to an incorrectly large value and files and projects are then added to SourceSafe, it might be impossible to return the database to a usable state without deleting and purging the files that represent the large values in their physical names. This can be very difficult if a large number of files and projects have been added since the aaaaaaaa.cnt file was set to a large value.

Keywords          : ssdb kbtool kbtshoot
Version           : 4.0a 5.0
Platform          : WINDOWS
Issue type        : kbbug


================================================================================


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: December 9, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.