Repository navigation
GH-55277: [C++][Gandiva] Fix stack overflow in decimal evaluation with JIT optimization disabled - #55278
Draft
dmitry-chirkov-dremio wants to merge 2 commits into
Conversation
…overflow Add a large-batch decimal cast test to reproduce stack exhaustion with JIT optimization disabled. AI tools helped investigate the crash and write the test.
|
|
dmitry-chirkov-dremio
force-pushed
the
gh-55277-gandiva-decimal-stack-regression
branch
from
October 27, 2026 04:04
b17638c to
4757838
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rationale for this change
Gandiva can exhaust the stack when evaluating decimal expressions with JIT optimization disabled. Decimal return slots are allocated inside the record loop, so each row uses more stack. The stack is only released when the function returns.
What changes are included in this PR?
Move return-slot allocations to the function entry block in
CallDecimalFunctionandAddLarge.Are these changes tested?
Locally, the large-batch test crashes before the fix (SIGSEGV, exit 139) and passes afterward. It checks negative values and nulls, with optimization off and on.
Are there any user-facing changes?
No.
This PR contains a "Critical Fix". It fixes a native process crash.
Was AI used for this PR?
AI tools helped investigate the crash and write the fix, tests, and description.
PR code and description written by:
Reviewed before submission by:
GitHub Issue: #55277
P.S. The first commit contains only the regression test. The second commit contains only the fix.