[ale] C++ Debuggery and the Path of Destruction

Geoffrey esoteric at 3times25.net
Sat Sep 25 09:35:05 EDT 2004


John Mills wrote:
> Geoffrey, All -
> On Sat, 25 Sep 2004, Geoffrey wrote:
> 
>>>Yes, well there is that aspect. I've been at this long enough to know I'm 
>>>creating a maintenance headache, though, and less clever would be smarter.
> 
>>John, really, those are scary words in a development situation. 
>>'maintenance headache.'  Should you not look at a cleaner approach?
> 
> The short and correct answer is 'Yes.' There are designs fraught with 
> potholes and booby traps, and this looks like one of them.
> 
> My worst debugging and maintenance problems have come from constructs that
> were over-clever and conflictingly used in multiple parts of the code. Now 
> I shy away from that, but my instincts slipped-up on me.

Ah, wanting to learn another hard lesson. :)

>>>The ostensible reason is I am allocating image buffers that are passed on
>>>to an unknown number of asynchronous clients. I store them in a ring that
>>>[hopefully] has enough slots so even a slow client will have time to send
>>>the newest buffer before it is trashed in favor of a yet newer image (4 or
>>>5 down the line). That code is very simple and works fine. The alternative
>>>seemed to be copying each buffer for each client to which it's due, which
>>>I wanted to avoid.
> 
>>Wow, some more scary statements.  '[hopefully] has enough slots' 
>>Really, you should insure that you have enough.  One of two solutions, 
>>depending on the problem.
> 
>  ...
>  I do this:
> 
>>2. finite number of slots needed - static slot allocation.
> 
> The number of slots is fixed by a compilation constant.  There are tests
> to harmlessly catch an overrun on the ring.
> 
> Each slot points to a dynamically allocated byte buffer for whatever size
> image has been returned on that round. These are what I tried not to
> recopy. I ended up with a mix of local and remote buffer allocations,
> which is just a _REAL_Bad_Idea(TM)_; it's going to go, NOW.

:)

-- 
Until later, Geoffrey       Registered Linux User #108567
                             AT&T Certified UNIX System Programmer - 1995



More information about the Ale mailing list