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

Server crashes during execution of unprepared statement [CORE4983] #5274

Closed
firebird-automations opened this issue Oct 29, 2015 · 13 comments
Closed

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @ibprovider

Attachments:
2015_10_30__fbbug4983.7z
2015_10_30__fbbug4983__v02.7z

[Stack]

> fb_inet_server.exe!EXE_unwind(Jrd::thread_db * tdbb, Jrd::jrd_req * request) Line 1080 C++
fb_inet_server.exe!JRD_start(Jrd::thread_db * tdbb, Jrd::jrd_req * request, Jrd::jrd_tra * transaction, short level) Line 7005 C++
fb_inet_server.exe!execute_request(Jrd::thread_db * tdbb, Jrd::dsql_req * request, Jrd::jrd_tra * * tra_handle, unsigned short in_blr_length, const unsigned char * in_blr, unsigned short in_msg_length, const unsigned char * in_msg, unsigned short out_blr_length, unsigned char * out_blr, unsigned short out_msg_length, unsigned char * out_msg, bool singleton) Line 1271 C++
fb_inet_server.exe!DSQL_execute(Jrd::thread_db * tdbb, Jrd::jrd_tra * * tra_handle, Jrd::dsql_req * request, unsigned short in_blr_length, const unsigned char * in_blr, unsigned short in_msg_type, unsigned short in_msg_length, const unsigned char * in_msg, unsigned short out_blr_length, unsigned char * out_blr, unsigned short out_msg_length, unsigned char * out_msg) Line 273 C++
fb_inet_server.exe!jrd8_execute(__int64 * user_status, Jrd::jrd_tra * * tra_handle, Jrd::dsql_req * * stmt_handle, unsigned short in_blr_length, const char * in_blr, unsigned short in_msg_type, unsigned short in_msg_length, const char * in_msg, unsigned short out_blr_length, char * out_blr, unsigned short __formal, unsigned short out_msg_length, char * out_msg) Line 4045 C++
fb_inet_server.exe!isc_dsql_execute2_m(__int64 * user_status, unsigned int * tra_handle, unsigned int * stmt_handle, unsigned short in_blr_length, const char * in_blr, unsigned short in_msg_type, unsigned short in_msg_length, char * in_msg, unsigned short out_blr_length, char * out_blr, unsigned short out_msg_type, unsigned short out_msg_length, char * out_msg) Line 2725 C++
fb_inet_server.exe!rem_port::execute_statement(P_OP op, p_sqldata * sqldata, packet * sendL) Line 2328 C++
fb_inet_server.exe!process_packet(rem_port * port, packet * sendL, packet * receive, rem_port * * result) Line 3531 C++
fb_inet_server.exe!loopThread(void * __formal) Line 5260 C++

[Local variables]

+ tdbb 0x000000000487f1c0 {tdbb_default=0x00000000052e9ff0 {parent_redirect=false freeBlocks={pool=0x00000000052e9ff0 {...} ...} ...} ...} Jrd::thread_db *
+ request 0x0000000000000000 <NULL> Jrd::jrd_req *

Commits: 150896f ec6d38e e22cca3 FirebirdSQL/fbt-repository@1033697 FirebirdSQL/fbt-repository@ec40c06 FirebirdSQL/fbt-repository@06b1423

====== Test Details ======

Seems that non-prepared statement can not be issued by python.

Any suggestion from guru in fdb will be appreciated.
Following python code:

import fdb

conn = fdb.connect(dsn='localhost/3333:e30', user='SYSDBA', password='masterke')
conn.begin()
conn.execute_immediate("update test set x = -x")
conn.commit()

-- *does* prepare statement as it can be seen in trace.

But according to fdb doc ( http://www.firebirdsql.org/file/documentation/drivers_documentation/python/fdb/reference.html#connection ) class Connection has method execute_immediate which "Executes a statement in context of main_transaction without caching its prepared form".

So, I'm interesting: is it possible to send unprepared statement to FB using Python or no (and if yes, then how can it be done) ?

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

More details are required for this case. Please provide the SQL statement and the parameter values (if any) which are being executed.

@firebird-automations
Copy link
Collaborator Author

Commented by: @ibprovider

Demonstration of FB BUG [CORE4983] "[AV] Server crashes during execution of unprepared statement"

Please read the readme.txt

@firebird-automations
Copy link
Collaborator Author

Modified by: @ibprovider

Attachment: 2015_10_30__fbbug4983.7z [ 12831 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: @ibprovider

Improved implementation of test.

@firebird-automations
Copy link
Collaborator Author

Modified by: @ibprovider

Attachment: 2015_10_30__fbbug4983__v02.7z [ 12832 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

Version: 2.5.3 Update 1 [ 10650 ]

Version: 2.1.7 [ 10651 ]

Version: 2.5.3 [ 10461 ]

Version: 2.5.2 Update 1 [ 10521 ]

Version: 2.5.2 [ 10450 ]

Version: 2.5.1 [ 10333 ]

Version: 2.5.0 [ 10221 ]

summary: [AV] Server crashes during execution of unprepared statement => Server crashes during execution of unprepared statement

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

Please re-test with a fresh build.

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

assignee: Dmitry Yemanov [ dimitr ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

Version: 2.5.5 [ 10670 ]

Fix Version: 2.5.6 [ 10721 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

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

resolution: Fixed [ 1 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: @ibprovider

Now is ok. Thanks.

@firebird-automations
Copy link
Collaborator Author

Modified by: @pavel-zotov

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

QA Status: No test => Deferred

Test Details: Need suggestion from guru in fdb.
Following python code:

import fdb

conn = fdb.connect(dsn='localhost/3333:e30', user='SYSDBA', password='masterke')
conn.begin()
conn.execute_immediate("update test set x = -x")
conn.commit()

-- *does* prepare statement as it can be seen in trace.

But according to fdb doc ( http://www.firebirdsql.org/file/documentation/drivers_documentation/python/fdb/reference.html#connection ) class Connection has method execute_immediate which "Executes a statement in context of main_transaction without caching its prepared form".

So, I'm interesting: is it possible to send unprepared statement to FB using Python or no (and if yes, then how can it be done) ?

@firebird-automations
Copy link
Collaborator Author

Modified by: @pavel-zotov

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

QA Status: Deferred => Cannot be tested

Test Details: Need suggestion from guru in fdb.
Following python code:

import fdb

conn = fdb.connect(dsn='localhost/3333:e30', user='SYSDBA', password='masterke')
conn.begin()
conn.execute_immediate("update test set x = -x")
conn.commit()

-- *does* prepare statement as it can be seen in trace.

But according to fdb doc ( http://www.firebirdsql.org/file/documentation/drivers_documentation/python/fdb/reference.html#connection ) class Connection has method execute_immediate which "Executes a statement in context of main_transaction without caching its prepared form".

So, I'm interesting: is it possible to send unprepared statement to FB using Python or no (and if yes, then how can it be done) ?

=>

Seems that non-prepared statement can not be issued by python.

Any suggestion from guru in fdb will be appreciated.
Following python code:

import fdb

conn = fdb.connect(dsn='localhost/3333:e30', user='SYSDBA', password='masterke')
conn.begin()
conn.execute_immediate("update test set x = -x")
conn.commit()

-- *does* prepare statement as it can be seen in trace.

But according to fdb doc ( http://www.firebirdsql.org/file/documentation/drivers_documentation/python/fdb/reference.html#connection ) class Connection has method execute_immediate which "Executes a statement in context of main_transaction without caching its prepared form".

So, I'm interesting: is it possible to send unprepared statement to FB using Python or no (and if yes, then how can it be done) ?

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