Skip to content

Fix racecheck reported in parquet decode_delta_length_byte_array_kernel - #24034

Merged
rapids-bot[bot] merged 2 commits into
NVIDIA:release/26.10from
davidwendt:racecheck-parquet-reader
Sep 9, 2026
Merged

Fix racecheck reported in parquet decode_delta_length_byte_array_kernel#24034
rapids-bot[bot] merged 2 commits into
NVIDIA:release/26.10from
davidwendt:racecheck-parquet-reader

Conversation

@davidwendt

@davidwendt davidwendt commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Description

Fixes racecheck found in the weekly compute-sanitizer runs:
https://github.com/NVIDIA/cudf/actions/runs/33959757523/job/101289786931#step:5:3226

Partial log:

[ RUN      ] ParquetReaderTest.DeltaSkipRowsWithNulls
========= Error: Race reported between Read access at void cudf::io::parquet::detail::<unnamed>::decode_delta_length_byte_array_kernel<unsigned char>(cudf::io::parquet::detail::PageInfo *, cuda::std::__4::span<const cudf::io::parquet::detail::ColumnChunkDesc, (unsigned long)18446744073709551615>, unsigned long, unsigned long, cuda::std::__4::span<const bool, (unsigned long)18446744073709551615>, cuda::std::__4::span<unsigned long, (unsigned long)18446744073709551615>, unsigned int *)+0x9c30 in page_delta_decode.cu:848
=========     and Write access at cudf::io::parquet::detail::delta_binary_decoder::init_binary_block(const unsigned char *, const unsigned char *)+0xbd50 in delta_binary.cuh:172 [20 hazards]
=========     and Write access at cudf::io::parquet::detail::delta_binary_decoder::init_binary_block(const unsigned char *, const unsigned char *)+0xc240 in delta_binary.cuh:191 [20 hazards]
...

Moves the sync barrier after batch_size/passes_per_batch are computed and before the if (is_skip_resume) block.

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@davidwendt davidwendt self-assigned this Sep 8, 2026
@davidwendt
davidwendt requested a review from a team as a code owner September 8, 2026 16:47
@davidwendt
davidwendt requested review from vuule and wence- September 8, 2026 16:47
@davidwendt davidwendt added bug Something isn't working 3 - Ready for Review Ready for review by team libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change labels Sep 8, 2026
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: edf1e38b-ab61-420e-9682-9a35da6ec6f1

📥 Commits

Reviewing files that changed from the base of the PR and between 462aa9f and af4f5e5.

📒 Files selected for processing (1)
  • cpp/src/io/parquet/page_delta_decode.cu

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Summary

Summary by CodeRabbit

  • Bug Fixes
    • Improved Parquet decoding reliability when skipping data, preventing potential inconsistencies during batch processing.

Walkthrough

The DELTA_LENGTH_BYTE_ARRAY decoder moves block synchronization until after batch scheduling. This ensures all threads finish reading db->values_per_mb before skip handling can reinitialize the decoder.

Changes

Parquet delta decoder

Layer / File(s) Summary
Batch schedule synchronization
cpp/src/io/parquet/page_delta_decode.cu
The decoder removes the earlier synchronization and adds a block-wide barrier after computing batch_size and passes_per_batch.

Priority: ⬇️ Low — Defer this narrow parquet decoder race fix because it addresses one synchronization defect in a specific null-and-skip test path.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to d7d40

The decoder now synchronizes after computing its batch schedule, preventing skip handling from reinitializing state before those reads complete. No remaining merge-blocking risk is identified.

Suggested reviewers: mhaseeb123

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the race condition fix in the specific Parquet decode kernel, which matches the primary change.
Description check ✅ Passed The description explains the reported race, identifies the affected test, and describes the synchronization barrier change. It is directly related to the changeset.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@vuule

vuule commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

is this a recent regression?

@davidwendt

Copy link
Copy Markdown
Contributor Author

is this a recent regression?

It was introduced in #23314 (August 10) but maybe hiding behind some other racechecks that were fixed last week.

@davidwendt
davidwendt changed the base branch from main to release/26.10 September 9, 2026 15:42
@davidwendt

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit 30435a2 into NVIDIA:release/26.10 Sep 9, 2026
126 of 127 checks passed
@davidwendt
davidwendt deleted the racecheck-parquet-reader branch September 9, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3 - Ready for Review Ready for review by team bug Something isn't working libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants