Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Thanks Felipe Bergo!

Author: J. Wesley Cleveland

Date: 09:27:51 07/13/01

Go up one level in this thread


On July 12, 2001 at 15:09:40, Heiner Marxen wrote:

>On July 12, 2001 at 13:51:11, Gian-Carlo Pascutto wrote:
>
>>
>>Felipe Bergo found out what was wrong:
>>
>>Sjeng allocated space for 300 moves, but in crazyhouse
>>it is possible to have more possible moves than that!
>>
>>This was a big surprised to me, as I just picked 300 as
>>a number-thats-certainly-big-enough.
>>
>>Looks like I was wrong.
>>
>>I still have no idea how to debug this kind of stack-trashing-bugs,
>>but this one is squashed for sure :)
>
>See also my general hints elsewhere in this thread.
>
>As for the movelist overrun: I've been faced with the exact same problem
>at some time.  Generally, you should never ever fill any array without
>an explicit overrun check.
>
>Now, the problem with these checks is: they are tedious and slow down the code.
>For move list generation I have used the following trick:
>- First, I fill the array without any overrun check.  Fast and easy.
>- Then, when the move list is complete, and I may have already overrun it,
>  and destroyed important data, but before I return from the generating
>  function, I check the effectively filled length against the allocated size,
>  and if an overrun is detected, I do an explicit panic() which tells me
>  exactly what is the problem.  A board dump would also be helpful, here.
>
>So, the overhead is very small, both, the runtime overhead and the coding
>overhead, and the problem is detected before any desaster happenes.
>I like it  :-))
>

One simple addition is to surround your debugging code with

#ifdef DEBUG
#endif

or, to give up to 32 combinations of debugging code
#if (DEBUGFLAGS & n)
where n is a power of 2.



This page took 0 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.