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

Segfault when engine is shutting down inside blob get/put function invoked from UDF [CORE4121] #4449

Closed
firebird-automations opened this issue Jun 18, 2013 · 5 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @AlexPeshkoff

UDFs work with blobs calling functions passed in blobcallback structure. When exception happens inside such function it is thrown passing module bondaries. This may work if both UDF and engine use exactly same execptions handling, but in general case this is a serious bug.

Commits: 75a9613 e85e525 FirebirdSQL/fbt-repository@de00f50 FirebirdSQL/fbt-repository@8ab95e5

@firebird-automations
Copy link
Collaborator Author

Modified by: @AlexPeshkoff

assignee: Alexander Peshkov [ alexpeshkoff ]

@firebird-automations
Copy link
Collaborator Author

Commented by: @AlexPeshkoff

Correct solution is to use UDR instead UDF - they do work correctly with exceptions. A fix for UDF is to catch exception in blobcallback function, store it in tdbb and re-raise after UDF completion.

@firebird-automations
Copy link
Collaborator Author

Modified by: @AlexPeshkoff

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

resolution: Fixed [ 1 ]

Fix Version: 3.0 Alpha 1 [ 10331 ]

Fix Version: 2.5.3 [ 10461 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @pavel-zotov

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

QA Status: Cannot be tested

@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