Issue Details (XML | Word | Printable)

Key: CORE-4356
Type: Bug Bug
Status: In Progress In Progress
Priority: Major Major
Assignee: Dmitry Yemanov
Reporter: Pavel Zotov
Votes: 0
Watchers: 0
Operations

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

Asynchronous cancellation request can be ignored in the case of EXECUTE STATEMENT and WHEN used together

Created: 03/Mar/14 09:27 AM   Updated: 03/Mar/14 09:45 AM
Component/s: Engine
Affects Version/s: 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.5.0, 2.1.4, 2.5.1, 2.1.5, 2.5.2, 2.1.5 Update 1, 2.5.2 Update 1, 3.0 Alpha 1, 3.0 Alpha 2
Fix Version/s: None


 Description  « Hide
Artificial test case:

set term ^;

execute block as
  declare stt varchar(255) = 'execute block as begin while (1 = 1) do begin end end';
begin
  while(1=1) do
    begin
      execute statement stt;
      when any do begin end
    end
end^

set term ;^
commit;

Then either press Ctrl-C in the current ISQL session or issue "delete from mon$statements where mon$attachment_id <> current_connection" from a different ISQL session.

The endless loop inside EXECUTE STATEMENT really gets interrupted but isc_cancelled error gets handled by the WHEN block and the outer loop continues. This is a bug, cancellation/shutdown errors should not be processed by exception handlers.


 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
There are no subversion log entries for this issue yet.