axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sam Carleton <scarle...@miltonstreet.com>
Subject found/fixed a bug in the mod_axis2 function: apache2_stream_read
Date Mon, 03 May 2010 02:37:29 GMT
I was load testing my apache code today by starting 50 clients which all
start in a slide show mode, pooling the server at least every 5 seconds.  I
have a manager program that starts the clients and does does an abort of the
processes when I want to close them.  That is the secret, the abort...

I was watching memory usage while it ran, and all was fine, Apache held
steady at around 55 megs.  Once I killed the 50 processes, all at the EXACT
same time, well milliseconds apart, the memory usage sky rocketed.  When I
broke the code, I was in the mod_axis2::apache2_stream_read function.

It turns out that ap_get_client_block(...) was returning 0xFFFFFFFF to the
read variable:

read = ap_get_client_block(stream_impl->request, (char *) buffer + len,
                           count - len);
if (read > 0)

It turns out that read is unsigned, so the 0xFFFFFFFF is NOT negative, so I
changed the code to read:

if (read > 0 && read != 0xFFFFFFFF)

All is well after the minor addition!

Sam

Mime
View raw message