FB 3.0 craches when 1) TRACE is launched *and* 2) run EB with "select ... from 
T where <C> for update with lock", and it's <C> containing RDB$DBKEY as search 
criteria
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: CORE-4498
                 URL: http://tracker.firebirdsql.org/browse/CORE-4498
             Project: Firebird Core
          Issue Type: Bug
    Affects Versions: 3.0 Alpha 2
            Reporter: Pavel Zotov
         Attachments: gdb-firebird.140724_145654.2.zip

On empty database:
1) launch TRACE (this is mandatory) via tbtracemgr, with config like this:
---
   enabled = true
   time_threshold = 0
   log_statement_finish = true
   print_plan = true
   explain_plan = true
   print_perf = true
   max_sql_length = 16384
   max_log_size = 9999999999
---

2) run the following script:

recreate table t (id bigint not null);
commit;

----------------------------------------------------------

set term ^;
execute block returns( locked_rows int )  as
    declare v_qdbkey char(8) character set octets collate octets;
    declare v_id bigint;
    declare v_stt varchar(30);
begin
  locked_rows = 0;
  v_stt = 'select rdb$db_key,id from t';
  for
        execute statement(v_stt)
        into v_qdbkey, v_id
  do begin
     select id from t where rdb$db_key = :v_qdbkey for update with lock into 
v_id; -- leads to crach
     -- ok, no crash: select id from t where id = :v_id for update with lock 
into v_id;
     locked_rows = locked_rows + 1;
  end
  suspend;
end
^ set term ;^
commit;

If this script will be run on LI-T3.0.0.31228, FB will crashes. Stack trace see 
in attach.

PS. Note:
1) no crash if we replace 
    select id from t where rdb$db_key = :v_qdbkey for update with lock into 
v_id;
    with:
    select id from t where id = :v_id for update with lock into v_id;
2) no crash in FB 2.5 for any case;
3) loop of implicit for-cursor should *NOT* iterate even once since tab;e `t` 
is EMPTY. Result of script always must be 0, so I can`t understand why any 
statement inside for-loop can lead to different behaviour (and *only* when 
trace is ON)

-- 
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

        

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to