I found non-persistent access violation problem when using cached updates mode of IBCQuery.
And CommitUpdates method performs second (unnecessarily) ApplyUpdates, but problem is not here.
My little test application describes problem. OnUpdateError simply skips problem records (which still unapplied).
Path to get problem is:
modify first even value to odd (will exception).
modify even value to another even (success).
add new record with odd value (will exception).
Click "Apply updates".
1 record updated and became white in grid, 1 still yellow and 1 still lime.
Click "Apply updates" again (2 updated records pending, but still have wrong values - expecting nothing changes).
AV - voila!
And "Cancel updates", and close application raise exceptions.
PS: sorry for my "english".