Issue Details (XML | Word | Printable)

Key: CORE-5203
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Alexander Peshkov
Reporter: Thomas Steinmaurer
Votes: 0
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Firebird Core

Single CPU core fully utilized with Trace session

Created: 21/Apr/16 05:33 PM   Updated: 23/May/16 10:31 PM
Component/s: Engine
Affects Version/s: 3.0 RC1, 3.0 RC2, 4.0 Initial, 3.0.0
Fix Version/s: 3.0.1, 4.0 Alpha 1

QA Status: Cannot be tested


 Description  « Hide
I'm basically seeking for assistance pin-pointing an issue here with
Firebird 3 SuperServer 32-bit on Windows 10 Prof., as it seems, in the
context of the Trace API. This all is not an issue with Firebird 2.5.

Unfortunately, it is only reproducible in FB TraceManager at the moment.
I haven't been able to reproduce it with e.g. a mix of isql and
fbtracemgr.exe for example.

When starting a trace session with e.g. the following configuration:

database = employee
{
   enabled = true
   log_statement_prepare = true
   log_statement_free = true
   log_statement_finish = true
   log_procedure_finish = true
   log_trigger_finish = true
   print_plan = true
   print_perf = true
   log_function_finish = true
   exclude_filter = %RDB$%
   time_threshold = 0
   max_sql_length = 2048
}
services
{
}

and triggering a few monitoring table queries behind the scene in a
particular area of our product, a single thread in firebird.exe starts
to fully utilize a single CPU core. When I start the trace session with
an additional exclude_filter part %MON$%, the problem disappears.

I guess not very helpful, but this is the stack trace of the high CPU
offending thread in firebird.exe according to SysInternals process explorer.

ntoskrnl.exe!KeSynchronizeExecution+0x3de6
ntoskrnl.exe!KeWaitForMultipleObjects+0x1320
ntoskrnl.exe!KeWaitForMultipleObjects+0xd38
ntoskrnl.exe!KeWaitForSingleObject+0x385
ntoskrnl.exe!KeTestAlertThread+0x1103
ntoskrnl.exe!KeSetCoalescableTimer+0x800
ntoskrnl.exe!KeSynchronizeExecution+0x2543
Engine12.DLL!firebird_plugin+0x6f7c5
Engine12.DLL!firebird_plugin+0xf9133


I'm afraid, not very helpful. :-(

What else could I provide so that you can investigate the offending
thread? I'm better in diagnosing JVM stuff than native.

I'm aware, this all is vague and I would prefer a simple isql based test
case as well, but I failed so far.

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Alexander Peshkov added a comment - 21/Apr/16 05:41 PM
Thomas, as a temporal workaround I recommend use of isc_info_svc_to_eof when reading service data.

BTW, it's more efficient in general (using bigger network packets) therefore recommended when service can produce a lot of data. Our utilities fbsvcmgr & fbtracemgr are using it to access trace data.