[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: pointers and Windows debugging

From: Philip Martin <philip_at_codematters.co.uk>
Date: 2003-01-07 01:11:13 CET

John Barstow <John_Barstow@gfsg.co.nz> writes:

> 1) Pointers are not initialized to NULL. This may not matter too much on
> Unix, but on Windows, uninitialized pointers point to random locations in
> memory. This makes debugging very painful and bugs very unpredictable -
> especially since the problem is less pronounced in debug mode.

Not sure why you say this affects Windows more than Unix.

> 2) There are no asserts() or other debug-time checks of parameters. Maybe
> this activity is being masked by macros, but I see pointers being passed,
> then used, with no checks for NULL values. I don't expect a C program to be
> doing runtime checks, but I do generally expect debug-time checks.
>
> I know there have been bugs involving uninitialized ponters, if not as many
> as I might expect.

Running programs under a memory checker like purify or valgrind will
detect all attempts to use unitialised memory. I have run most of the
test suite under valgrind in the past. Adding needless initialisation
will make it harder to find such bugs using these tools.

> Is there a reason we don't do these things?

I object to needless initialisation, I believe it leads to more opaque
code. From that it follows that asserting that a pointer is not null
is not very useful as invalid non-null pointers will not be caught.

Even if needless initialisation is added, pointers that are no longer,
but were once, valid (a pool was cleared say) will not be detected.

-- 
Philip Martin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Jan 7 01:12:22 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.