From: Nikolay S. <nik...@re...> - 2008-10-31 00:43:39
|
Hello, All, Quite helpfully, the bug which I tried to reproduce in SuperClassic (and described my efforts in previous letter) is reproducible in SuperServer too. Current HEAD (but originally I used code from few months ago, on 64-bit SuperClassic build). The program performs many SELECT statements returning moderately large number (few thousands) of rows each. It does all that using one connection. The program locks up randomly, but quite frequently (it takes about 1-3 seconds to reproduce in my tests). It I open second attachment when the program is locked up and perform some activity, the process resumes and than locks up again. Another detail, the system is dual-core, if it matters. The lock up stack traces looks as follows. Server side: === ntdll.dll!_ZwWaitForSingleObject@12() + 0x15 bytes mswsock.dll!7db40563() [Frames below may be incorrect and/or missing, no symbols loaded for mswsock.dll] mswsock.dll!7db503dd() ws2_32.dll!_send@16() + 0x6e bytes fbserver.exe!packet_send(rem_port * port=0x03471c44, const char * buffer=0x030f201c, short buffer_length=8192) Line 3405 + 0x17 bytes C++ fbserver.exe!inet_write(xdr_t * xdrs=0x03471ce0, int end_flag=0) Line 3126 + 0x2c bytes C++ fbserver.exe!inet_putbytes(xdr_t * xdrs=0x03471ce0, const char * buff=0x032ffacc, unsigned int count=4) Line 2948 + 0x14 bytes C++ fbserver.exe!inet_putlong(xdr_t * xdrs=0x03471ce0, const long * lp=0x032ffaf0) Line 2973 + 0x17 bytes C++ fbserver.exe!xdr_double(xdr_t * xdrs=0x03471ce0, double * ip=0x088eeba8) Line 290 + 0x38 bytes C++ fbserver.exe!xdr_datum(xdr_t * xdrs=0x03471ce0, const dsc * desc=0x0335bab0, unsigned char * buffer=0x088ee9e0) Line 1118 + 0xd bytes C++ fbserver.exe!xdr_message(xdr_t * xdrs=0x03471ce0, Message * message=0x088eebf8, const rem_fmt * format=0x03471bec) Line 1295 + 0x14 bytes C++ fbserver.exe!xdr_sql_message(xdr_t * xdrs=0x03471ce0, long statement_id=3) Line 1627 + 0x14 bytes C++ fbserver.exe!xdr_protocol(xdr_t * xdrs=0x03471ce0, packet * p=0x0335b170) Line 729 + 0x10 bytes C++ fbserver.exe!send_partial(rem_port * port=0x03471c44, packet * packet=0x0335b170) Line 2612 + 0x13 bytes C++ fbserver.exe!rem_port::send_partial(packet * pckt=0x0335b170) Line 640 + 0x12 bytes C++ > fbserver.exe!rem_port::fetch(p_sqldata * sqldata=0x0335b660, packet * sendL=0x0335b170) Line 2290 + 0xc bytes C++ fbserver.exe!process_packet(rem_port * port=0x03471c44, packet * sendL=0x0335b170, packet * receive=0x0335b428, rem_port * * result=0x032ffef0) Line 3323 C++ fbserver.exe!loopThread(void * __formal=0x0000007a) Line 5026 + 0x1e bytes C++ fbserver.exe!ThreadPriorityScheduler::run() Line 163 + 0x10 bytes C++ fbserver.exe!`anonymous namespace'::threadStart(void * arg=0x02630d44) Line 99 C++ msvcr90d.dll!_callthreadstartex() Line 348 + 0xf bytes C msvcr90d.dll!_threadstartex(void * ptd=0x00b23338) Line 331 C kernel32.dll!_BaseThreadStart@8() + 0x34 bytes === Client side: === ntdll.dll!_ZwWaitForSingleObject@12() + 0x15 bytes mswsock.dll!7db40563() [Frames below may be incorrect and/or missing, no symbols loaded for mswsock.dll] mswsock.dll!7db4093c() > GDS32.DLL!packet_receive(rem_port * port=0x02ac2edc, unsigned char * buffer=0x02ca001c, short buffer_length=8192, short * length=0x0012f4a4) Line 3290 + 0x19 bytes C++ GDS32.DLL!inet_read(xdr_t * xdrs=0x02ac2f5c) Line 3004 + 0x16 bytes C++ GDS32.DLL!inet_getbytes(xdr_t * xdrs=0x02ac2f5c, char * buff=0x0012f4e8, unsigned int count=4) Line 2765 + 0x12 bytes C++ GDS32.DLL!inet_getlong(xdr_t * xdrs=0x02ac2f5c, long * lp=0x0012f50c) Line 2790 + 0x17 bytes C++ GDS32.DLL!xdr_enum(xdr_t * xdrs=0x02ac2f5c, xdr_op * ip=0x02ac312c) Line 334 + 0x14 bytes C++ GDS32.DLL!xdr_protocol(xdr_t * xdrs=0x02ac2f5c, packet * p=0x02ac312c) Line 286 + 0xd bytes C++ GDS32.DLL!receive(rem_port * main_port=0x02ac2edc, packet * packet=0x02ac312c) Line 2192 + 0x13 bytes C++ GDS32.DLL!rem_port::receive(packet * pckt=0x02ac312c) Line 625 + 0x12 bytes C++ GDS32.DLL!receive_packet_noqueue(rem_port * port=0x02ac2edc, packet * packet=0x02ac312c, int * user_status=0x022a6348) Line 6127 + 0xc bytes C++ GDS32.DLL!receive_packet(rem_port * port=0x02ac2edc, packet * packet=0x02ac312c, int * user_status=0x022a6348) Line 6012 + 0x11 bytes C++ GDS32.DLL!REM_execute2(int * user_status=0x022a6348, Rtr * * rtr_handle=0x0012f888, Rsr * * stmt_handle=0x02ac1e64, unsigned short in_blr_length=140, const unsigned char * in_blr=0x02ac2d08, unsigned short in_msg_type=0, unsigned short in_msg_length=286, unsigned char * in_msg=0x02ca67b8, unsigned short out_blr_length=0, unsigned char * out_blr=0x00000000, unsigned short out_msg_type=0, unsigned short out_msg_length=0, unsigned char * out_msg=0x00000000) Line 1392 + 0x11 bytes C++ GDS32.DLL!isc_dsql_execute2_m(int * user_status=0x022a6348, void * * tra_handle=0x0227db3c, void * * stmt_handle=0x0230c2a0, unsigned short in_blr_length=140, const char * in_blr=0x02ac2d08, unsigned short in_msg_type=0, unsigned short in_msg_length=286, char * in_msg=0x02ca67b8, unsigned short out_blr_length=0, char * out_blr=0x00000000, unsigned short out_msg_type=0, unsigned short out_msg_length=0, char * out_msg=0x00000000) Line 2558 + 0x6e bytes C++ GDS32.DLL!isc_dsql_execute2(int * user_status=0x022a6348, void * * tra_handle=0x0227db3c, void * * stmt_handle=0x0230c2a0, unsigned short dialect=3, const XSQLDA * in_sqlda=0x02c6bc40, const XSQLDA * out_sqlda=0x00000000) Line 2461 + 0x73 bytes C++ GDS32.DLL!isc_dsql_execute(int * user_status=0x022a6348, void * * tra_handle=0x0227db3c, void * * stmt_handle=0x0230c2a0, unsigned short dialect=3, const XSQLDA * sqlda=0x02c6bc40) Line 2406 C++ RedReplicator.exe!004b16e8() === I cannot reproduce this problem in vanilla Firebird 2.1.1, so it appears to be relatively recent regression. -- Nikolay Samofatov, MBA Red Soft International +1 416 710 6854 |