Author: Dieter Buerssner
Date: 00:58:05 05/09/04
I tried to update to newer Nalimov code (with support of the split TBs). Seemed all easy, but then the program crashed. I had downloaded krppkr and kqppkq to test. For some reason, I forgot to download the kqqpkq.0.nbb/nbw.emd files. After the crash, I tried to check integrity with Wilhelm. It did not complain about the missing files - just said installed/integer. In the actual Nalimov code, one error condition seems to be missing. /* Probe TB - lower level (not exportable) function */ static int TB_FASTCALL TbtProbeTable(int iTb, color side, unsigned indChunk, unsigned indInChunk) { [...] /* Now read it from the disk */ FILE *fp; size_t cb; /* First, check: is necessary file opened? As files are not thread-safe, lock file */ Lock(ptbd->m_rglockFiles[side]); if (ptbd->m_fSplit) { iExtent = indChunk >> (31 - LOG2_TB_CB_CACHE_CHUNK); iPhysicalChunk = indChunk - (iExtent << (31 - LOG2_TB_CB_CACHE_CHUNK)); } else { iExtent = 0; iPhysicalChunk = indChunk; } fp = ptbd->m_rgfpFiles[side][iExtent]; if (NULL == fp) { /* Not - try to open it */ pszFileName = ptbd->m_rgpchFileName[side][iExtent]; if (NULL != pszFileName) { [carefully tries to open the file with all sort of error checks] } [But an else case is missing, and later code assumes, that fp is initialized correctly. At least this is my understanding of the code. ] } [Now using fp, which might be NULL] Regards, Dieter
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.