Skip to content

fix(libdd-ipc): add missing Win32_System_WindowsProgramming windows-sys feature (#2663) - #2668

Merged
VianneyRuhlmann merged 1 commit into
release/v45.0from
backport/vianney/fix-ipc-windows-feature-flag
Oct 13, 2026
Merged

VianneyRuhlmann merged 1 commit into
release/v45.0from
backport/vianney/fix-ipc-windows-feature-flag

Conversation

@VianneyRuhlmann

@VianneyRuhlmann VianneyRuhlmann commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Backport of #2663

What does this PR do?

Adds the missing Win32_System_WindowsProgramming feature to the windows-sys dependency in libdd-ipc/Cargo.toml, which gates FILE_SKIP_COMPLETION_PORT_ON_SUCCESS (imported in src/platform/windows/sockets/writer.rs).

Motivation

Standalone (non-workspace) builds of libdd-ipc fail on Windows with unresolved import windows_sys::Win32::System::WindowsProgramming (E0432). The feature was dropped during the windows-sys 0.48 → 0.52 migration in #2569 while the import remained. CI never caught it because mio 1.0.2 in the workspace lockfile accidentally enables the feature via unification — downstream lockfiles (e.g. dd-trace-py) that resolve mio to a version using windows-sys 0.61 get no such rescue and all Windows wheels fail.

Additional Notes

Audited all other windows_sys imports in libdd-ipc/src — every remaining module maps to an already-declared feature.

How to test the change?

Verified with an isolated consumer crate (fresh lockfile where mio resolves to windows-sys 0.61.2): cargo tree -i windows-sys@0.52.0 -e features --target x86_64-pc-windows-msvc now shows Win32_System_WindowsProgramming flowing solely from libdd-ipc. On a Windows runner, cargo check -p libdd-ipc --target x86_64-pc-windows-msvc should pass.

Co-authored-by: vianney.ruhlmann vianney.ruhlmann@datadoghq.com

What does this PR do?

A brief description of the change being made with this pull request.

Motivation

What inspired you to submit this pull request?

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Describe here in detail how the change can be validated.

…ys feature (#2663)

# What does this PR do?

Adds the missing `Win32_System_WindowsProgramming` feature to the `windows-sys` dependency in `libdd-ipc/Cargo.toml`, which gates `FILE_SKIP_COMPLETION_PORT_ON_SUCCESS` (imported in `src/platform/windows/sockets/writer.rs`).

# Motivation

Standalone (non-workspace) builds of `libdd-ipc` fail on Windows with `unresolved import windows_sys::Win32::System::WindowsProgramming` (E0432). The feature was dropped during the windows-sys 0.48 → 0.52 migration in #2569 while the import remained. CI never caught it because mio 1.0.2 in the workspace lockfile accidentally enables the feature via unification — downstream lockfiles (e.g. dd-trace-py) that resolve mio to a version using windows-sys 0.61 get no such rescue and all Windows wheels fail.

# Additional Notes

Audited all other `windows_sys` imports in `libdd-ipc/src` — every remaining module maps to an already-declared feature.

# How to test the change?

Verified with an isolated consumer crate (fresh lockfile where mio resolves to windows-sys 0.61.2): `cargo tree -i windows-sys@0.52.0 -e features --target x86_64-pc-windows-msvc` now shows `Win32_System_WindowsProgramming` flowing solely from `libdd-ipc`. On a Windows runner, `cargo check -p libdd-ipc --target x86_64-pc-windows-msvc` should pass.


Co-authored-by: vianney.ruhlmann <vianney.ruhlmann@datadoghq.com>
@github-actions

Copy link
Copy Markdown
Contributor

📚 Documentation Check Results

⚠️ 1021 documentation warning(s) found

📦 libdd-ipc - 1021 warning(s)


Updated: 2026-10-13 12:57:30 UTC | Commit: d96cebd | missing-docs job results

@github-actions

Copy link
Copy Markdown
Contributor

🔒 Cargo Deny Results

⚠️ 2 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-ipc - 2 error(s)

Show output
error[unmaintained]: Bincode is unmaintained
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:24:1
   │
24 │ bincode 1.3.3 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
   │
   ├ ID: RUSTSEC-2025-0141
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2025-0141
   ├ Due to a doxxing and harassment incident, the bincode team has taken the decision to cease development permanently.
     
     The team considers version 1.3.3 a complete version of bincode that is not in need of any updates.
     
     ## Alternatives to consider
     
     * [wincode](https://crates.io/crates/wincode)
     * [postcard](https://crates.io/crates/postcard)
     * [bitcode](https://crates.io/crates/bitcode)
     * [rkyv](https://crates.io/crates/rkyv)
   ├ Announcement: https://git.sr.ht/~stygianentity/bincode/tree/v3.0/item/README.md
   ├ Solution: No safe upgrade is available!
   ├ bincode v1.3.3
     └── libdd-ipc v2.0.0

error[vulnerability]: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:229:1
    │
229 │ rustls 0.23.37 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0285
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0285
    ├ Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level
      when they followed a key-changing message in the same record. For example,
      a plaintext `EncryptedExtensions` message packed into the same record as the
      `ServerHello` was accepted.
      
      RFC 8446 section 5.1 requires that handshake messages do not span key changes,
      and that implementations terminate the connection with an "unexpected_message"
      alert if they do.
      
      The handshake transcript is still authenticated, so a network-position attacker
      cannot use this to alter or complete a handshake; the practical effect is that
      a peer could send handshake messages that should be encrypted in plaintext
      without rustls rejecting the connection.
      
      This is functionally the same bug as Go's
      [GO-2026-4340](https://pkg.go.dev/vuln/GO-2026-4340) (CVE-2025-61730).
    ├ Announcement: https://github.com/rustls/rustls/pull/3265
    ├ Solution: Upgrade to >=0.23.45 (try `cargo update -p rustls`)
    ├ rustls v0.23.37
      ├── hyper-rustls v0.27.7
      │   └── libdd-common v8.0.0
      │       ├── libdd-capabilities-impl v7.0.0
      │       │   ├── libdd-shared-runtime v6.0.0
      │       │   │   └── libdd-trace-stats v11.0.0
      │       │   │       └── libdd-ipc v2.0.0
      │       │   ├── libdd-trace-stats v11.0.0 (*)
      │       │   └── libdd-trace-utils v14.0.0
      │       │       ├── libdd-trace-obfuscation v10.0.0
      │       │       │   └── libdd-trace-stats v11.0.0 (*)
      │       │       ├── libdd-trace-stats v11.0.0 (*)
      │       │       └── (dev) libdd-trace-utils v14.0.0 (*)
      │       ├── libdd-ipc v2.0.0 (*)
      │       ├── libdd-shared-runtime v6.0.0 (*)
      │       ├── libdd-trace-obfuscation v10.0.0 (*)
      │       ├── libdd-trace-stats v11.0.0 (*)
      │       └── libdd-trace-utils v14.0.0 (*)
      ├── libdd-common v8.0.0 (*)
      ├── rustls-platform-verifier v0.6.2
      │   └── libdd-common v8.0.0 (*)
      └── tokio-rustls v0.26.0
          └── hyper-rustls v0.27.7 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-10-13 12:59:10 UTC | Commit: d96cebd | dependency-check job results

@datadog-datadog-prod-us1-2

Copy link
Copy Markdown

Tests

✅ All CI checks and tests passed.

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
• Patch Coverage: 100.00%
• Overall Coverage: 80.11% (-0.01%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 45ad3b0 | Docs | View more details | Give us feedback!

@pr-commenter

pr-commenter Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2026-10-13 13:02:30

Comparing candidate commit 45ad3b0 in PR branch backport/vianney/fix-ipc-windows-feature-flag with baseline commit 7f3b16f in branch release/v45.0.

📊 Benchmarking dashboard

Found 0 performance improvements and 0 performance regressions! Performance is the same for 2 metrics, 0 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 45ad3b0 1791896089 backport/vianney/fix-ipc-windows-feature-flag
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.054µs 1.069µs ± 0.006µs 1.071µs ± 0.004µs 1.074µs 1.076µs 1.079µs 1.081µs 0.93% -0.626 -0.480 0.59% 0.000µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [1.068µs; 1.070µs] or [-0.082%; +0.082%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 45ad3b0 1791896089 backport/vianney/fix-ipc-windows-feature-flag
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 15.355µs 15.796µs ± 0.676µs 15.731µs ± 0.118µs 15.854µs 16.134µs 16.332µs 24.910µs 58.35% 12.335 163.738 4.27% 0.048µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [15.702µs; 15.890µs] or [-0.593%; +0.593%] None None None

Baseline

Baseline benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7f3b16f 1790961295 release/v45.0
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.067µs 1.080µs ± 0.005µs 1.080µs ± 0.001µs 1.082µs 1.089µs 1.091µs 1.097µs 1.54% -0.299 0.897 0.49% 0.000µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [1.080µs; 1.081µs] or [-0.068%; +0.068%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7f3b16f 1790961295 release/v45.0
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 15.055µs 15.507µs ± 0.203µs 15.503µs ± 0.140µs 15.657µs 15.825µs 15.997µs 16.135µs 4.08% 0.197 -0.175 1.30% 0.014µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [15.479µs; 15.535µs] or [-0.181%; +0.181%] None None None

@VianneyRuhlmann
VianneyRuhlmann marked this pull request as ready for review October 13, 2026 14:17
@VianneyRuhlmann
VianneyRuhlmann requested review from a team as code owners October 13, 2026 14:17
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-13T14:19:30.944798Z 45ad3b0 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-13T14:21:28.997179Z 45ad3b0 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@VianneyRuhlmann
VianneyRuhlmann merged commit db3f1c4 into release/v45.0 Oct 13, 2026
77 of 80 checks passed
@VianneyRuhlmann
VianneyRuhlmann deleted the backport/vianney/fix-ipc-windows-feature-flag branch October 13, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants