Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crash external firebird server is often to run a script containing a statement "update or insert" [CORE4104] #4432

Closed
firebird-automations opened this issue May 23, 2013 · 7 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: Otinov Andrey (andr)

Attachments:
pmrmk_test_error.sql
acceptance_test_error.sql

crash external firebird server is often to run a script containing a statement "update or insert"

but I can not yet provide a memory dump or call stack trace

attach script files

@firebird-automations
Copy link
Collaborator Author

Commented by: @hvlad

Please, provide full reproducible example.
Also, it would be useful to have memory dump or call stack trace of crashed process.

@firebird-automations
Copy link
Collaborator Author

Modified by: Otinov Andrey (andr)

description: CREATE OR ALTER PROCEDURE SPDUMPCONFIG
AS
DECLARE VARIABLE MASTER VARCHAR(15);
DECLARE VARIABLE SELF VARCHAR(15);
BEGIN
SELECT MASTER, SELF FROM CONFIG INTO :MASTER, :SELF;

EXECUTE STATEMENT '
EXECUTE BLOCK
AS
DECLARE VARIABLE MASTER VARCHAR(15);
DECLARE VARIABLE SELF VARCHAR(15);
...
BEGIN
FOR
EXECUTE STATEMENT ''
SELECT MASTER,SELF...
FROM CONFIG ''
ON EXTERNAL DATA SOURCE '''|| :SELF || '''||''/3050:PMRMK''
WITH COMMON TRANSACTION
AS USER ''SYSDBA'' PASSWORD ''masterkey''
INTO MASTER,:SELF... DO
BEGIN
UPDATE OR INSERT INTO CONFIG(MASTER,SELF...)
VALUES(:MASTER,:SELF...)
MATCHING(SELF);
SUSPEND;
END
END '
ON EXTERNAL DATA SOURCE :MASTER||'/3050:ACCEPTANCE'
WITH COMMON TRANSACTION
AS USER 'SYSDBA' PASSWORD 'masterkey';

WHEN ANY DO EXIT;
END

=>

here is the full text of the procedure:

CREATE OR ALTER PROCEDURE SPDUMPCONFIG
AS
DECLARE VARIABLE MASTER VARCHAR(15);
DECLARE VARIABLE SELF VARCHAR(15);
BEGIN
SELECT MASTER, SELF FROM CONFIG INTO :MASTER, :SELF;

EXECUTE STATEMENT '
EXECUTE BLOCK
AS
DECLARE VARIABLE MASTER VARCHAR(15);
DECLARE VARIABLE SELF VARCHAR(15);
DECLARE VARIABLE ID_NPRICE BIGINT;
DECLARE VARIABLE EXCHANGE VARCHAR(127);
DECLARE VARIABLE TEMP VARCHAR(127);
DECLARE VARIABLE DISCOUNT_DATE D_DATETIME;
DECLARE VARIABLE PRICE_DATE D_DATETIME;
DECLARE VARIABLE PINPAD D_BOOLEAN;
DECLARE VARIABLE REPLENISHMENT D_BOOLEAN;
DECLARE VARIABLE FILEVERSION VARCHAR(15);
DECLARE VARIABLE FRPRINTSRV VARCHAR(15);
DECLARE VARIABLE CARDS_DATE D_DATETIME;
DECLARE VARIABLE KKM_NUMBER VARCHAR(10);
DECLARE VARIABLE FONT_INCREASE INTEGER;
BEGIN
FOR
EXECUTE STATEMENT ''
SELECT MASTER,SELF,ID_NPRICE,EXCHANGE,TEMP,DISCOUNT_DATE,PRICE_DATE,PINPAD,REPLENISHMENT,FILEVERSION,FRPRINTSRV,CARDS_DATE,KKM_NUMBER,0 FONT_INCREASE
FROM CONFIG ''
ON EXTERNAL DATA SOURCE '''|| :SELF || '''||''/3050:PMRMK''
WITH COMMON TRANSACTION
AS USER ''SYSDBA'' PASSWORD ''masterkey''
INTO :MASTER,:SELF,:ID_NPRICE,:EXCHANGE,:TEMP,:DISCOUNT_DATE,:PRICE_DATE,:PINPAD,:REPLENISHMENT,:FILEVERSION,:FRPRINTSRV,:CARDS_DATE,:KKM_NUMBER,:FONT_INCREASE
DO
BEGIN
UPDATE OR INSERT INTO CONFIG(MASTER,SELF,ID_NPRICE,EXCHANGE,TEMP,DISCOUNT_DATE,PRICE_DATE,PINPAD,REPLENISHMENT,FILEVERSION,FRPRINTSRV,CARDS_DATE,KKM_NUMBER,FONT_INCREASE)
VALUES(:MASTER,:SELF,:ID_NPRICE,:EXCHANGE,:TEMP,:DISCOUNT_DATE,:PRICE_DATE,:PINPAD,:REPLENISHMENT,:FILEVERSION,:FRPRINTSRV,:CARDS_DATE,:KKM_NUMBER,:FONT_INCREASE)
MATCHING(SELF);
SUSPEND;
END
END '
ON EXTERNAL DATA SOURCE :MASTER||'/3050:ACCEPTANCE'
WITH COMMON TRANSACTION
AS USER 'SYSDBA' PASSWORD 'masterkey';

WHEN ANY DO EXIT;
END

but I can not yet provide a memory dump or call stack trace

@firebird-automations
Copy link
Collaborator Author

Commented by: @hvlad

Andrey,

do you think - it is possible to run your procedure on the empty database ?
Please, provide *complete* example.

If you have a crash (as you say) - you should have coredump and gdb could extract stack traces from it.

@firebird-automations
Copy link
Collaborator Author

Modified by: Otinov Andrey (andr)

Attachment: pmrmk_test_error.sql [ 12330 ]

Attachment: acceptance_test_error.sql [ 12331 ]

description: here is the full text of the procedure:

CREATE OR ALTER PROCEDURE SPDUMPCONFIG
AS
DECLARE VARIABLE MASTER VARCHAR(15);
DECLARE VARIABLE SELF VARCHAR(15);
BEGIN
SELECT MASTER, SELF FROM CONFIG INTO :MASTER, :SELF;

EXECUTE STATEMENT '
EXECUTE BLOCK
AS
DECLARE VARIABLE MASTER VARCHAR(15);
DECLARE VARIABLE SELF VARCHAR(15);
DECLARE VARIABLE ID_NPRICE BIGINT;
DECLARE VARIABLE EXCHANGE VARCHAR(127);
DECLARE VARIABLE TEMP VARCHAR(127);
DECLARE VARIABLE DISCOUNT_DATE D_DATETIME;
DECLARE VARIABLE PRICE_DATE D_DATETIME;
DECLARE VARIABLE PINPAD D_BOOLEAN;
DECLARE VARIABLE REPLENISHMENT D_BOOLEAN;
DECLARE VARIABLE FILEVERSION VARCHAR(15);
DECLARE VARIABLE FRPRINTSRV VARCHAR(15);
DECLARE VARIABLE CARDS_DATE D_DATETIME;
DECLARE VARIABLE KKM_NUMBER VARCHAR(10);
DECLARE VARIABLE FONT_INCREASE INTEGER;
BEGIN
FOR
EXECUTE STATEMENT ''
SELECT MASTER,SELF,ID_NPRICE,EXCHANGE,TEMP,DISCOUNT_DATE,PRICE_DATE,PINPAD,REPLENISHMENT,FILEVERSION,FRPRINTSRV,CARDS_DATE,KKM_NUMBER,0 FONT_INCREASE
FROM CONFIG ''
ON EXTERNAL DATA SOURCE '''|| :SELF || '''||''/3050:PMRMK''
WITH COMMON TRANSACTION
AS USER ''SYSDBA'' PASSWORD ''masterkey''
INTO :MASTER,:SELF,:ID_NPRICE,:EXCHANGE,:TEMP,:DISCOUNT_DATE,:PRICE_DATE,:PINPAD,:REPLENISHMENT,:FILEVERSION,:FRPRINTSRV,:CARDS_DATE,:KKM_NUMBER,:FONT_INCREASE
DO
BEGIN
UPDATE OR INSERT INTO CONFIG(MASTER,SELF,ID_NPRICE,EXCHANGE,TEMP,DISCOUNT_DATE,PRICE_DATE,PINPAD,REPLENISHMENT,FILEVERSION,FRPRINTSRV,CARDS_DATE,KKM_NUMBER,FONT_INCREASE)
VALUES(:MASTER,:SELF,:ID_NPRICE,:EXCHANGE,:TEMP,:DISCOUNT_DATE,:PRICE_DATE,:PINPAD,:REPLENISHMENT,:FILEVERSION,:FRPRINTSRV,:CARDS_DATE,:KKM_NUMBER,:FONT_INCREASE)
MATCHING(SELF);
SUSPEND;
END
END '
ON EXTERNAL DATA SOURCE :MASTER||'/3050:ACCEPTANCE'
WITH COMMON TRANSACTION
AS USER 'SYSDBA' PASSWORD 'masterkey';

WHEN ANY DO EXIT;
END

but I can not yet provide a memory dump or call stack trace

=>

crash external firebird server is often to run a script containing a statement "update or insert"

but I can not yet provide a memory dump or call stack trace

attach script files

@firebird-automations
Copy link
Collaborator Author

Commented by: @hvlad

Your scripts still contains errors and can't be used as is !
After fixing errors i run procedure SPDUMPCONFIG with success, record in table CONFIG at database ACCEPTANCE was added.
I going to close this ticket as 'not reproduced' if you unable to provide nor test case nor crash dump.

PS if you need help you can ask for it at our support list and\or at forum on http://sql.ru (in russian)

@firebird-automations
Copy link
Collaborator Author

Modified by: Sean Leyne (seanleyne)

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Cannot Reproduce [ 5 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

status: Resolved [ 5 ] => Closed [ 6 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant