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
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to