As more and more 64-bit systems are coming, we developers have to take more care to write portable code.
This is a short overview of portability problems with 64-bit architectures:
http://www.google.com/url?sa=U&start=9&q=http://gcc.fyxm.net/summit/2003/Porting%2520to%252064%2520bit.pdf&e=10342The problems we found and identified in the client and server so far are:
1. storing pointers in ints (on the assumption that both ints and pointers are 32 bit).
2. mixing uses of ints and longs (on the assumption that they are both 32 bit)
3. intricate differences in the handling of varargs
Both 1 and 2 normally generate warnings, but that can (and have) be silenced with explicit casts. This makes it extremely hard to track down those errors.
Programmers: please be more careful when silencing warnings, often a cast is not the right solution! (I know I'm guilty on some accounts, too ...

)