Embedded Firebird crashes inside of Jrd::LockManager::blocking_action_thread()
------------------------------------------------------------------------------
Key: CORE-3767
URL: http://tracker.firebirdsql.org/browse/CORE-3767
Project: Firebird Core
Issue Type: Bug
Components: Engine
Affects Versions: 2.5.1, 2.5.0
Environment: Windows
Reporter: Petr Silar
Priority: Critical
We have several dumps of our application indicating crash inside of Firebird's
embedded engine as follows (release 2.5.1.26351):
> .ecxr
eax=02a04924 ebx=76e31136 ecx=765b0ac4 edx=00000000 esi=ffffffff edi=02a04924
eip=039519c0 esp=08f4f7c4 ebp=00000001 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
fbembed!event_blocked:
039519c0 8b4808 mov ecx,dword ptr [eax+8] ds:002b:02a0492c=????????
>kb
ChildEBP RetAddr Args to Child
08f4f7c0 03951b06 00000001 0403491c 009ac044 fbembed!event_blocked
[c:\..\firebird\src\jrd\isc_sync.cpp @ 717]
08f4f7d8 03a8d708 02a04924 00000001 00000000 fbembed!ISC_event_wait+0x66
[c:\..\firebird\src\jrd\isc_sync.cpp @ 1418]
08f4f848 03a8ded9 0392ed45 009ac044 3af780b6
fbembed!Jrd::LockManager::blocking_action_thread+0x178
[c:\..\firebird\src\lock\lock.cpp @ 1568]
08f4f84c 0392ed45 009ac044 3af780b6 00000000
fbembed!Jrd::LockManager::blocking_action_thread+0x9
[c:..\firebird\src\lock\lock_proto.h @ 403]
08f4f874 71fe29bb 009ad5e0 3afca5c2 00000000 fbembed!`anonymous
namespace'::threadStart+0x55 [c:\..\firebird\src\jrd\threadstart.cpp @ 140]
WARNING: Stack unwind information not available. Following frames may be wrong.
08f4f8ac 71fe2a47 00000000 76e3339a 0a9b69f0 msvcr80+0x29bb
08f4f8c0 77c09ef2 0a9b69f0 76c1b716 00000000 msvcr80+0x2a47
08f4f900 77c09ec5 71fe29e1 0a9b69f0 00000000 ntdll!__RtlUserThreadStart+0x70
08f4f918 00000000 71fe29e1 0a9b69f0 00000000 ntdll!_RtlUserThreadStart+0x1b
Most of the crashes are from the moment when computer is waking up from
hibernation.
[Guess:] It seems to me as insufficient fix of
http://tracker.firebirdsql.org/browse/CORE-2064. If I understand the code well,
during LockManager's instance destruction, when the single turn of
blocking_action_thread's loop takes too long, LockManager's destructor simply
lefts the thread alone and frees itself which finally leads to access violation
in the thread.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel