tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject Re: Bug that spans tomcat and tomcat-native
Date Mon, 27 Jun 2016 16:17:59 GMT
On Mon, Jun 27, 2016 at 12:04 PM,  <> wrote:
> On Mon, Jun 27, 2016 at 11:54 AM, Rainer Jung <> wrote:
>> Great analysis. I was really wondering, what could make the hash map so huge
>> and hadn't thought about the hash function as the problem.
>> Before OpenSSL 1.1.0 there's a callback for applications to provide their
>> own thread IDs:
>> So we could probably work around the problem of the poor hashing function by
>> passing in IDs that work for hashing (pre-hashed ID?). Of course then we
>> loose the direct association of the OpenSSL thread ID with the real platform
>> thread id.
>> Currently our callback in tcnative is ssl_set_thread_id() which refers to
>> ssl_thread_id(), which on Linux gets the ID from the APR function
>> apr_os_thread_current(). So we could add some hashing formula in
>> ssl_thread_id().
> I think just using the real thread id would work, since now it isn't
> using the real thread id instead it is using the address location of
> errno. If this was the real thread id I think the hash algorithm and
> bucket selection they have now will work much better since the thread
> ids are basically numerically increasing and aren't aligned to powers
> of 2.

Sorry, I need to read code a bit closer. I misread the
OPENSSL_VERSION_NUMBER < 0x10100000L as version < 1.0.1 and not 1.1.0.

I would still expect real thread ids to provide enough of a
distribution in a map where the hash bucket ends up being is ((ID *
13) & 0X7F).


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message