On (2013年01月29日 19:02), Neil wrote: > ISHIKAWA, Chiaki wrote: > >> I see some code most notably LDAP code in comm-central is not 64bit clean > > Really? Thunderbird has been releasing 64-bit Mac and Linux code for some > time now... >
Now I cannot seem to find the problematic code quickly enough in the latest comm-central code. I should have raised a flag when I was compiling 64 bit version myself and noticed the problem. I recall seeing that a hash table was accessed using a key that is calculated using only lower 32 bits of address of an inserted object. I distinctively recall that an equality check was performed by the equality of the key, i.e., 32-bit address value(!) if I was not mistaken then. To the code's credit, there was a runtime check to abort the operation if the address is not 4 bytes or something. (Yes, it was runtime check as opposed to static check.) That is why I gave up on 64 bit compilation. Yes, the collision happening with this key calculation may be remote, but I can think of a memory allocator trying to classify address space using the upper 32 bits as a category and thus the multiple use of similar 32 bit lower addresses in such an allocator can be likely. Maybe that particular piece of code is not used in default compilation setting(?) If I can locate the piece of code, I will post it again. I believe GCC warned of size mismatch or something at compile time on this piece of code and this is how I noticed the problem. (Right now, my 64 bit compilation log is cluttered up due to the inclusion of valgrind annotation of a sort [producing unused static function warning in many files.] and I may have overlooked it.) If the code in question has not changed in the last couple of months, I should be able to locate it again. TIA _______________________________________________ dev-platform mailing list [email protected] https://lists.mozilla.org/listinfo/dev-platform

