Affects Version/s: 1.1.0
Fix Version/s: 1.2.0
Environment:Windows XP Professional SP2
Apache 2.2.4 server with Axis2c 1.1.0 module
- Remote stress test client script hosted by Fedora Core 7
I wanted to stress test axis2c deployed on apache, to see if using this SOAP implementation would be reliable. Simulating 25 concurrent users (with a shell script) making one request per second by using the 'echo' sample program (recompiled to target the server from a remote machine[Linux]). With Gnuthilla compiled-in axutil.dll suffered an Unhandled Exception (repeatably). While Gnuthilla did suffer less memory consumption, when the httpd.exe memory consumption reached around 77 MB the exception was triggered.
Here is what my VS 2005 debug session provided me:
< non-debug modules excluded >
'httpd.exe': Loaded 'C:\cygwin\thirdparty\axis2c\lib\axis2_http_sender.dll', Symbols loaded.
'httpd.exe': Loaded 'C:\cygwin\thirdparty\axis2c\lib\axis2_http_receiver.dll', Symbols loaded.
'httpd.exe': Loaded 'C:\cygwin\thirdparty\axis2c\modules\addressing\axis2_mod_addr.dll', Symbols loaded.
'httpd.exe': Loaded 'C:\cygwin\thirdparty\axis2c\modules\logging\axis2_mod_log.dll', Symbols loaded.
'httpd.exe': Loaded 'C:\cygwin\thirdparty\axis2c\services\echo\echo.dll', Symbols loaded.
The thread 'Win32 Thread' (0x640) has exited with code 0 (0x0).
Unhandled exception at 0x00ed10df (axutil.dll) in httpd.exe: 0xC0000005: Access violation reading location 0x00000001.
Even though I compiled with symbols when I chose to break the following assembly data was displayed:
00ED10D0 56 push esi
00ED10D1 8B 74 24 08 mov esi,dword ptr [esp+8]
00ED10D5 85 F6 test esi,esi
00ED10D7 75 06 jne _axutil_thread_mutex_destroy@4+0Fh (0ED10DFh)
00ED10D9 33 C0 xor eax,eax
00ED10DB 5E pop esi
00ED10DC C2 04 00 ret 4
00ED10DF 83 3E 00 cmp dword ptr [esi],0 <--------------------------- location of debug session
00ED10E2 57 push edi
00ED10E3 8B 7E 20 mov edi,dword ptr [esi+20h]
00ED10E6 75 1B jne _axutil_thread_mutex_destroy@4+33h (0ED1103h)
00ED10E8 8D 46 08 lea eax,[esi+8]
00ED10EB 50 push eax
00ED10EC FF 15 30 94 F1 00 call dword ptr [__imp__DeleteCriticalSection@4 (0F19430h)]
00ED10F2 8B 57 08 mov edx,dword ptr [edi+8]
00ED10F5 56 push esi
00ED10F6 57 push edi
00ED10F7 FF D2 call edx
00ED10F9 5F pop edi
00ED10FA B8 01 00 00 00 mov eax,1
00ED10FF 5E pop esi
00ED1100 C2 04 00 ret 4
00ED1103 8B 4E 04 mov ecx,dword ptr [esi+4]
00ED1106 51 push ecx
00ED1107 FF 15 0C 94 F1 00 call dword ptr [__imp__CloseHandle@4 (0F1940Ch)]
00ED110D 85 C0 test eax,eax
00ED110F 75 E1 jne _axutil_thread_mutex_destroy@4+22h (0ED10F2h)
Seeing that this is a thread, I cannot be sure if the error was triggered by apache or something else. I guess this might be something apache specific? It is interesting to note however that this happens consistently with gnuthilla, whereas without it a crash does not always occur (ie. Only some of the time). Without gnuthilla the httpd.exe process sometimes reaches 200 MB or more without crashing. Still trying to figure out what causes the net memory consumption, since even when the 25 clients are stopped the httpd.exe memory size does not decrease.