There is a strange error that keeps appearing totally randomly, only on Vista/Windows 7 systems (at least I've not seen it XP yet!) and I think it might be related to IBDAC.
I'm getting two kinds of error messages:
1. Access violation at address 057E36EF in module 'fbclient.dll'. Write of address 4F4C09FD.
2. Access violation at address 77996BF0 in module 'ntdll.dll'. Write of address 00000050.
Luckily, I'm using EurekaLog to trace back errors, and I have found the following:
1. The error usually happens when TIBCQuery.Open OR TIBCQuery.ExecSQL is called.
2. The error occurs at totally random times and can't be reproduced intentionally. Sometime it doesn't occur for weeks and sometimes it just strikes out of nowhere.
3. As I mentioned already, the error occurs only on Windows Vista/7, never on XP.
Now here is some more info, that Eurekalog shows:
Call stack for the fbclient.dll error:
Address Module Procedure/Method
057EB30B fbclient.dll gds__free
057EB300 fbclient.dll gds__free
057F2E90 fbclient.dll gds__thread_exit
Assembler for the fbclient.dll error:
Code: Select all
057E36D7 mov eax, [ecx+$08]
057E36DA test eax, eax
057E36DC push esi
057E36DD lea esi, [ecx+$0C]
057E36E0 push edi
057E36E1 mov edi, [esi]
057E36E3 jz +$13
057E36E5 test edi, edi
057E36E7 mov [eax], edi
057E36E9 jz +$00000089
057E36EF mov [edi-$04], eax ; <-- EXCEPTION
057E36F2 pop edi
057E36F3 pop esi
057E36F4 pop ebp
057E36F5 ret $04
Address Module Procedure/Method
77712E7B ntdll.dll RtlEnterCriticalSection
1000BA5D fbclient.dll gds__alloc
1000BA50 fbclient.dll gds__alloc
100132F0 fbclient.dll gds__thread_enter
1001FF60 fbclient.dll isc_dsql_allocate_statement
Assembler for the ntdll error:
Code: Select all
; RtlEnterCriticalSection (Line=0 - Offset=0)
; -------------------------------------------
77712E69 mov edi, edi
77712E6B push ebp
77712E6C mov ebp, esp
77712E6E sub esp, +$0C
77712E71 push esi
77712E72 push edi
77712E73 mov edi, [ebp+$08]
77712E76 lea esi, [edi+$04]
77712E79 mov eax, esi
77712E7B lock ; <-- EXCEPTION
77712E7C DB $0F, $BA, $30, $00 // dword ptr [eax], $00
77712E80 jnb +$00022E6E
77712E86 mov eax, dword ptr [$0018]
77712E8C mov ecx, [eax+$24]
77712E8F mov [edi+$0C], ecx
77712E92 mov dword ptr [edi+$08], $00000001 ; ''...
More background info:
This happens under Firebird 2.1.1.
I've tried connecting to the server using fbclient.dll of Firebird 2.1.3, but the same keeps happening.
I'm using Delphi7 with an older version of IBDAC (2.50.0.39).
Any ideas?
Thanks!