Skip to content

Robustness, platform and performance fixes for the next Netdata vendoring - #18

Open
ktsaou wants to merge 43 commits into
mainfrom
sow-0040-robustness-repro-tests
Open

ktsaou wants to merge 43 commits into
mainfrom
sow-0040-robustness-repro-tests

Conversation

@ktsaou

@ktsaou ktsaou commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

Summary

Robustness, platform and performance work since the last Netdata vendoring (63919ec, #17), and the source side of the next vendoring. Each change landed as one SOW commit; the SOW files under .agents/sow/done/ carry the evidence.

Bugs fixed (each with a reproduction test that fails before the fix)

  • Rust receive no longer times out after one 100 ms abort-poll slice.
  • UDS packet size capped at the kernel datagram limit.
  • SHM sessions detect a dead peer: servers end the session when the client is gone; clients fail a waiting call with a new disconnected error (C NIPC_ERR_DISCONNECTED, Rust NipcError::Disconnected, Go protocol.ErrDisconnected) within one 100 ms slice instead of the full timeout.
  • Server handshakes are bounded; server stop and shutdown are reliable.
  • Client connects, handshakes and retries are bounded by the call deadline.
  • EINTR is retried; POSIX endpoints take an endpoint lock, so a second server gets address-in-use; transport failures are reported distinctly.
  • SHM regions are created only for sessions that negotiate SHM.
  • POSIX listener sockets are created owner-only without changing the process umask; the endpoint lock and the SHM region file stay usable under a restrictive umask.
  • 32-bit SHM bounds, 32-bit LFS stale cleanup, musl msghdr.
  • POSIX and Windows Named Pipe pipelining clients keep progressing when the socket or pipe buffers fill.

Security

  • Windows pipes and SHM objects are restricted to the server's account, SYSTEM and Administrators (new netipc_win_security.c).
  • Every socket and SHM descriptor is close-on-exec.

Platforms

  • FreeBSD: full support, including the POSIX SHM transport (amd64 and 386 for Go).
  • macOS: runs over a framed AF_UNIX stream baseline (no SHM).
  • Go on all Netdata Linux architectures; C, Rust and Go suites run on every Netdata Linux target in CI.
  • Go modules and pinned CI Go moved to 1.27, matching Netdata; Go adds golang.org/x/sys v0.49.0 (macOS fd-relative bind).

Performance

  • Go hot path: no per-request allocations or wall-clock reads.
  • Same-host A/B against 63919ec (what Netdata runs today):
    • POSIX: geometric mean 1.048 over 345 rows; row-interleaved reruns 1.114; Go rows up to 3.7x.
    • Windows: the Named Pipe pipeline-batch rows are about 10-20% lower, accepted in SOW-0064; snapshot refresh over Named Pipe may be about 5% lower (within this host's noise; accepted in SOW-0050).
  • The committed benchmarks-*.csv are unchanged: both benchmark hosts now run at about half their June numbers for old and new code alike; tracked by SOW-0069.

Tests and CI

  • Correctness suites are deterministic and fast; fuzz, stress and scale suites moved to tests/run-extended-*.sh.
  • CI and scanner fixes before vendoring (DACL test SDDL normalization, CLOEXEC test, armv7 static linking, staticcheck, Semgrep pin).

Validation

  • Linux, FreeBSD 14.3 and 15.1, macOS and Windows suites for C, Rust and Go, plus cross-language interop (details per SOW).
  • Extended fuzz (15 targets) and stress (7 suites) on the candidate.
  • GitHub Actions on 4261919: see the checks on this PR. Known non-code failures: Codacy coverage upload (token permission) and OpenSSF Scorecard (default branch only).
  • Code scanning, Dependabot and secret scanning: no open alerts.

Follow-ups

  • SOW-0068: restore Go coverage to its 90% threshold (88.4% today, 88.3% before this branch).
  • SOW-0069: benchmark host drift and floor re-baseline.

Netdata vendoring PR: netdata/netdata#24633

ktsaou added 30 commits October 29, 2026 10:22
…bugs

Add C, Rust and Go tests on POSIX and Windows that reproduce externally
reported and code-review robustness bugs:

- SHM sessions not released after the client leaves (Rust/Go POSIX;
  all languages on Windows for crashed clients)
- a silent client blocking accepts and server shutdown
- unbounded client connect/handshake
- Rust UDS/named-pipe calls failing after one 100 ms poll slice
- shutdown blocked by a worker writing to a non-reading client
- stop issued before run being lost
- SHM clients waiting the full timeout after a server crash
- UDS messages larger than SO_SNDBUF failing with the default packet size

Tests for still-open bugs are skipped unless NETIPC_REPRO_KNOWN_BUGS=1;
guards for already-correct behavior always run. Wire test_win_robustness
into the Windows CI job and MSYS validation script, close SOW-0040, and
track the fixes in SOW-0041 to SOW-0045.
Rust UDS and named-pipe receive returned Timeout on the first empty
100 ms abort-poll slice, so any call whose handler took longer than
about 100 ms failed regardless of the configured call timeout. An empty
slice now means "wait again", as in C and Go; Timeout is returned only
at the real deadline, and each wait lasts at least 1 ms.

Remove the NETIPC_REPRO_KNOWN_BUGS gate: robustness reproduction tests
always run under a zero-known-bug policy, recorded in AGENTS.md.

Add Rust transport tests for delayed responses with an abort flag, and
run every cross-language service interop pair a second time with a
300 ms server handler on POSIX and Windows.

Record new analysis findings in SOW-0042 to SOW-0045 and open SOW-0046
(Go linux/arm64 build) and SOW-0047 (abort signal spec conformance).
The transport specs required an abort descriptor or event waited on
together with the connection, but Rust and Go poll an abort flag every
100 ms on all transports and C does the same for SHM waits. Document
that a call blocked waiting for its response observes an abort within
100 ms on every transport, and that an abort-check slice is never the
call deadline.
Linux rejects a SEQPACKET datagram larger than SO_SNDBUF minus 32 bytes,
but C, Rust and Go proposed the full SO_SNDBUF as packet size, so every
message that needed chunking failed with EMSGSIZE. Each side now
proposes min(SO_SNDBUF - 32, 256 KiB), clamps a configured packet size
to the same limit, and clients reject a HELLO_ACK whose agreed packet
size exceeds their proposal.

Add tests for the kernel limit, clamping and agreed-size rejection in
all three languages, and document the derivation in the UDS spec.

Widen SOW-0046 to the Go POSIX build failures found on linux/386, arm,
arm64, riscv64, freebsd and darwin.
Go POSIX transport now builds on every Linux architecture:
- poll through a shared internal/syspoll package (ppoll on Linux, which
  is the only option on arm64, riscv64 and loong64)
- Msghdr.Iovlen set from untyped constants (width differs per arch)
- sendmsg via socketcall(2) on linux/386, direct sendmsg elsewhere
- 32-bit-safe test constants and 8-byte aligned test SHM buffers

Running the suite on 32-bit exposed SHM bounds bugs, fixed here:
- Go ShmReceive compared int(mlen), which wraps negative on 32-bit, so a
  forged length passed the bound and panicked the receiver
- Go, C and Rust client attach summed region ends in 32-bit arithmetic,
  so a forged header could pass the file-size check on 32-bit targets

Runtime Safety CI gains a Linux architectures job: Go vet on nine
architectures, Go tests on 386 and under QEMU on arm64 and arm, and a
Rust library check for aarch64 and armv7. FreeBSD and macOS support are
tracked in SOW-0048 and SOW-0049.
SHM servers now end a session when its UDS socket or named pipe reports the
client gone, and SHM clients fail a waiting call with a new disconnected
error (C NIPC_ERR_DISCONNECTED, Rust NipcError::Disconnected, Go
protocol.ErrDisconnected) within one 100 ms slice of the server's death
instead of waiting the full call timeout. Peer-gone send/recv failures on
UDS, named pipes and SHM report the same error. SHM attach stops retrying
once the server closed the session socket. Every socket and SHM descriptor
is close-on-exec. The unused owner_alive check is removed.

The Windows interop scripts and the Windows benchmark runner now force-stop
servers built against the MSYS runtime, which ignore SIGTERM while blocked
in a Win32 wait, and resolve taskkill through SYSTEMROOT.

Adds the test cadence rules to AGENTS.md and the performance assessment
step to the vendoring preflight; SOW-0050 tracks vendoring into Netdata.
Server side, in C (POSIX and Windows), Rust and Go:

- Split accept into a pending accept and a handshake with a 5000 ms
  deadline; the handshake runs on the session worker, so a silent client
  no longer blocks other accepts or shutdown.
- Connections take a worker slot from accept; when all workers are busy
  the accept loop waits up to 200 ms for one, then refuses the
  connection before HELLO_ACK.
- Stop is a never-cleared stop-requested flag honoured by run(); stop
  paths only signal and wake, and run owns the listener close.
- Shutdown gives workers a 1000 ms grace, then unblocks them with
  shutdown(SHUT_RDWR) on POSIX or repeated CancelSynchronousIo on
  Windows.
- Windows session close closes the handle only, without
  FlushFileBuffers, which blocked on clients that stopped reading.

Also fixes a double handle close in Go Windows pipe tests, applies the
handshake deadline to Go one-step accepts, keeps fuzz, stress and scale
suites out of the Linux target runs, and adds handshake-deadline tests
in every language. Docs and the integrator skill describe the new
guarantees. Client-side deadlines are tracked in SOW-0051, transport
hygiene in SOW-0052 and the deterministic test suite in SOW-0053.
Correctness tests in C, Rust and Go now synchronize on events instead of
sleeps, polling and retry loops, and shorten production waits through
per-instance test timings. Fuzz, stress, randomized chaos, lookup-scale and
benchmark-policy suites run only from tests/run-extended-fuzz.sh and the new
tests/run-extended-stress.sh.

- Rust and Go managed servers expose a listening signal; C init already binds.
- Windows clients wait once (at most 1000 ms) on ERROR_PIPE_BUSY instead of
  failing at once, in C, Rust and Go.
- C test threads on MSYS2 start through pthread_create; CreateThread threads
  could die silently under load.
- Interop scripts share tests/interop-lib.sh: block on READY, kill only a
  process whose identity still matches (including under QEMU binfmt).
- Remove the C-only reconnect drain sleep.
- Track MSYS thread creation in the library as SOW-0054.
One deadline now covers a whole L2 call or refresh in C, Rust and Go:
connect, HELLO_ACK, the Windows busy-pipe wait, SHM attach and every
reconnect, and an abort ends any of these waits. New bounded L1 connects
(nipc_uds_connect_timeout, nipc_np_connect_timeout, connect_with_timeout,
ConnectTimeout) back this; the old connects wrap them without a deadline.

C reconnects once per failed call like Rust and Go, and Rust and Go
report a call on a non-ready client as NotReady instead of BadLayout.

Windows servers no longer call DisconnectNamedPipe before closing a
rejected pipe, which discarded the rejection reply before the client
read it.
The MSYS runtime does not support threads started with CreateThread;
under load such a thread may never run and the process dies silently.
Under __MSYS__ the library's session threads and the Windows C benchmark
driver's threads now start with pthread_create, and each thread hands
the creator a duplicate of its own handle, so CancelSynchronousIo,
WaitForSingleObject and CloseHandle keep working on a real thread handle.
Native Windows builds keep _beginthreadex.

A new test checks that library threads are runtime threads.
…nctly

- Retry send, sendmsg and recv on EINTR in the C and Rust UDS transports.
- Take an exclusive per-service flock before stale-socket recovery in C,
  Rust and Go, so a starting server can no longer unlink a live endpoint
  between bind and listen; drop Go's timed re-dials.
- Add a transport error (C NIPC_ERR_TRANSPORT, Rust NipcError::Transport,
  Go protocol.ErrTransport) for I/O failures with a live peer, map SHM
  receive overflow to overflow, and align Go's baseline receive limit.
- Split SHM region timing into SOW-0055.
Managed servers in C, Rust and Go, on POSIX and Windows, created a
per-session SHM region for every accepted connection before the
handshake, including rejected and baseline-only clients.

The L1 server handshakes gain an optional prepare callback, called with
the selected profile and the agreed payload limits after the auth,
selection and limit checks and before HELLO_ACK. On failure the server
drops that profile and selects again in the same handshake, rejecting
with UNSUPPORTED when none is left. Managed servers create the region in
the callback, sized from the agreed limits; Windows creates only the
selected profile's objects.

New tests in all three languages and both platforms count region
creations for baseline, rejected, SHM and failed-creation handshakes.
The handshake docs now allocate session_id before SHM preparation, as
the implementations do.
- Build C, Rust and Go on FreeBSD with the UDS baseline only: CMake gates
  SHM by NETIPC_POSIX_SHM (Linux), C and Go keep SHM APIs as
  "unsupported" stubs off Linux, Rust gates Linux-only code.
- The POSIX handshake masks offered and accepted profiles to what the
  platform provides, so non-Linux peers never negotiate SHM.
- Clients on POSIX and Windows reject a HELLO_ACK whose selected profile
  is not exactly one offered bit.
- FreeBSD SEQPACKET accepts the full SO_SNDBUF; packet size accounts for it.
- Tests and fixtures are portable (no /proc dependence); Rust and Go
  robustness suites run on every POSIX system.
- Docs and AGENTS.md describe the platform behavior and the FreeBSD
  validation procedure. SOW-0031 merged; SOW-0056 tracks FreeBSD 15.
C, Rust and Go now call fchmod(fd, 0600) on the unbound socket before
bind(); Linux and FreeBSD create the socket file with that mode. The C
library no longer changes the process-global umask around bind(), so
other threads of an embedding program keep their file modes, and Rust and
Go sockets no longer depend on the ambient umask.

Tests: a bind() wrapper creates an unrelated file during listener setup
and checks it keeps the process umask (C); Rust and Go assert the socket
is 0600. Docs describe the socket permission contract.
rustfmt.toml selects style edition 2024, matching the language edition and
Netdata's Rust workspace. The diff is formatting-only: whitespace, import
order, trailing commas and semicolons after tail return expressions.
AGENTS.md and README.md describe the new style setting.
…M and Administrators

Pipes, SHM mappings and events take a protected DACL granting only SYSTEM,
Administrators and the creating account, and pipes reject remote clients.
Clients open with SECURITY_IDENTIFICATION and refuse to send HELLO to a pipe
whose owner is not their own account, SYSTEM or Administrators (new
untrusted-server error, AUTH_FAILED at Level 2). Same change in C, Rust and Go,
with DACL, remote-open, owner-check and impersonation-level tests.

Closes SOW-0045.
go 1.27.0 in the src, bench and test-fixture modules; the Codacy, supply-chain
and static-analysis workflows install Go 1.27.x. Validated with Go 1.27 on
Linux (including the Netdata Linux targets), FreeBSD and Windows.

Closes SOW-0058.
transport/framing.rs now holds message send with chunking, receive with
reassembly and validation, and the HELLO/HELLO_ACK negotiation; the POSIX
and Windows transports supply their I/O and error type, like Go's
transport/internal/framing.

The Windows receive now rejects total lengths that do not fit the u32
total_message_len, and the receive length sum no longer overflows a
32-bit usize on either transport.
macOS has no AF_UNIX SOCK_SEQPACKET, so C, Rust and Go use a stream
socket there. Packets keep the SEQPACKET bytes: each is the 32-byte
header plus the bytes it declares. The first header is checked before
its body is read, and a receive that stops partway through a message
shuts down the read side. Owner-only endpoints come from binding in a
private 0700 directory and renaming the socket into place.

Linux, FreeBSD and Windows keep their code paths. The stream helpers
are unit-tested on Linux, and a macOS CI workflow runs the suites and
the interop scripts.

Test fixes found on macOS: interop-lib.sh now works on bash 3.2 (it
used to false-pass there), socket run directories are short, shared
test servers use a large enough backlog, and test_hardening no longer
overflows the session table.
A child forked by another thread shares the lock's open file
description until it execs, so closing the fd alone left the lock held
and a listen right after a close could fail with address-in-use. C,
Rust and Go now unlock explicitly on close and on every failed-listen
path. Tests in each language hold the lock fd in a child process while
the listener closes.
The shared framing layer rewrapped every HELLO receive error as a
receive failure, so a Go server reported a client that never sent
HELLO as ErrRecv, where C and Rust report a timeout or an abort. The
POSIX and Windows server handshakes now keep the wait's error, as the
client side already does. Tests cover a deadline and an abort on both
platforms.
FreeBSD sessions now negotiate the SHM fast path in C and Rust on every
architecture and in Go on amd64 and 386, interoperating across all
language pairs. The region layout and protocol are unchanged; only the
system calls behind wait, wake and reservation differ:

- wait/wake use the shared _umtx_op operations (UMTX_OP_WAIT_UINT with
  a relative CLOCK_MONOTONIC _umtx_time, UMTX_OP_WAKE); a stale expected
  value returns at once and is handled as a re-check;
- region files are reserved with posix_fallocate. ZFS rejects it with
  EINVAL, so SHM preparation fails and the session uses baseline, as
  the spec requires; tmpfs and UFS run directories get SHM.

Go gains per-OS wait/wake/allocation files and per-architecture raw
posix_fallocate syscalls; Rust SHM gates cover FreeBSD; CMake builds
SHM and its tests there.

Unlinking a directory fails with EPERM on FreeBSD and macOS, not
EISDIR. Stale SHM regions and UDS endpoints occupied by an empty
directory are now reclaimed there too in C and Rust (Go already did).

Docs: FreeBSD SHM syscalls, ZFS and run-directory guidance, platform
tables, integrator skill, AGENTS.md FreeBSD commands. SOW-0062 tracks a
benchmark-client deadlock on small socket buffers found by the FreeBSD
benchmark run.
A client with more than one request in flight sent each packet with a
blocking call. Once unread responses filled the buffers, the server
blocked sending and the client blocked sending: a write-write deadlock,
seen on FreeBSD for all 9 uds-pipeline-batch benchmark pairs (8 KiB
SEQPACKET buffers).

Pipelining client sends in C, Rust and Go now use a non-blocking send;
while waiting for buffer space they read arriving responses into a
per-session queue bounded by the in-flight responses, and receive returns
queued data first. macOS, which ignores MSG_DONTWAIT on a stream send
short of buffer space, switches the descriptor to O_NONBLOCK for that
send. Overflowing the bound fails the session and every in-flight
request. One-in-flight calls keep the blocking send.

Callers that wait on the session fd check the new has-pending accessor
(nipc_uds_session_has_pending, UdsSession::has_pending,
Session.HasPending) first. A failed macOS stream receive now drops the
queue, and Go's queue bound saturates on 32-bit targets.

Docs describe the POSIX guarantee and an interim Windows caller rule;
Windows progress is tracked in SOW-0064.
Go benchmark clients read the wall and monotonic clocks five times per
request; on FreeBSD guests with a kvmclock timecounter each read is a
syscall, so the Go rows measured the harness. The Go POSIX driver now
reads a monotonic-only clock twice per request.

Go typed servers allocated per request (response header, request views,
builders, the cgroups lookup suffix table); the resulting GC cycles
stalled the server, so the client slept in futex and every response paid
a real wake. Servers now keep the header per session and take request
and builder scratch from pools. Typed clients keep the request header and
the returned snapshot and string-reverse views in the client, which the
documented "valid until the next typed call" lifetime already allows. On
Windows the Named Pipe poll and SHM signal/wait calls use SyscallN, since
LazyProc.Call allocated on every call.

Per-call deadlines use a new monotonic-only clock (internal/monotime), so
Go clients read the clock as often as C. STRING_REVERSE decoding now
borrows the payload as a []byte, as the codec spec requires, and its
handlers take []byte (a test method).

Allocation tests cover the typed servers and the increment, snapshot and
string-reverse calls over UDS, POSIX SHM, Named Pipe and Windows SHM.
Test helpers in C, Rust and Go remove the endpoint lock files they
create.

Lookup clients still copy response items per call in all three
languages; tracked in SOW-0065.
…buffers

The client handle is opened overlapped in C, Rust and Go. A stalled client
write reads arriving responses into a bounded per-session pending queue, so
the server never blocks on a reply the client is not reading. Receive and
wait-readable return queued messages first, and a has-pending check is
exposed on the Windows session. Go fails ERROR_MORE_DATA receives like C
and Rust. The benchmark drivers no longer need a byte budget.
FreeBSD 15 SOCK_SEQPACKET keeps record boundaries only where the sender
sets MSG_EOR, lets a non-blocking send write part of a record and delivers
large records in parts, so NetIPC packets merged. FreeBSD now uses the
stream baseline already used on macOS, in C, Rust and Go, with SHM kept.

A stream receive that fails inside a message now marks the session instead
of calling shutdown(SHUT_RD), whose effect differs between macOS, FreeBSD 14
and FreeBSD 15: later receives fail, pipelined sends stop queueing inbound
bytes, and has-pending reports nothing.

Validated on FreeBSD 15.1, FreeBSD 14.3, macOS and Linux.
- Windows DACL tests (Go, Rust) build the expected SDDL through Windows,
  so accounts with SDDL aliases such as the built-in Administrator match.
- The C CLOEXEC test ignores descriptors the process inherited.
- armv7 glibc Rust target builds link statically without static-pie.
- Extended-only Go test helpers carry the netipc_extended tag; the no-op
  setNoSigpipe builds only where it is called.
- The macOS owner-only bind works relative to a descriptor of its private
  directory in C, Rust and Go, and survives a umask without owner bits.
  Go uses golang.org/x/sys v0.49.0, the version Netdata already requires.
- Semgrep is pinned; benchmark run directories are created 0700.
- Backport the BatchBuilder rustdoc fix from Netdata.
The endpoint lock file and the SHM region file are created with mode
0600, which the umask narrows. Under a umask that strips owner read or
write, later opens of those files by the same account fail with EACCES:
a second server sees a socket error instead of address-in-use, a lock
file left behind blocks every restart, and SHM clients cannot attach.

C, Rust and Go now fchmod both files to 0600 through their descriptors.
The lock open falls back to write-only, then read-only, when read-write
is refused, so a leftover lock file of mode 0200 or 0400 is reopened
and repaired. Tests cover umask 0477 and 0277 and leftover lock modes;
the Rust and Go umask tests run in a child test process.
The Rust child ran entirely under umask 0477, so the coverage runtime
wrote its profile as mode 0200 at exit and llvm-profdata merge crashed
in the coverage job. The Rust and Go children now set the umask
themselves and restore it before exit, also on failure.
gosec G115 flags uint32(ms) in Client.opRemainingMs; ms is positive and capped at the uint32 maximum on the line before, so the conversion cannot overflow. Use the same #nosec justification form as the other bounded conversions.
MSYS cannot apply POSIX modes on a noacl mount, so mkdir -m 0700 fails and stopped tests/run-windows-bench.sh before its first benchmark. The native Windows drivers do not check the run directory mode; restore plain mkdir -p there. The POSIX script keeps mkdir -m 0700.
@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 370 files, which is 270 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cfca6b88-2fea-490d-ac30-bd50d930ec72
Commits

Reviewing files that changed from the base of the PR and between 63919ec and 278125c.

Files ignored due to path filters: 3

  • bench/drivers/go/go.sum is excluded by !**/*.sum
  • src/go/go.sum is excluded by !**/*.sum
  • tests/fixtures/go/go.sum is excluded by !**/*.sum
Files selected for processing: 370

  • .agents/skills/project-netdata-vendoring/SKILL.md
  • .agents/sow/current/SOW-0021-20260613-netipc-at-scale.md
  • .agents/sow/current/SOW-0050-20261031-netdata-vendor-robustness-fixes.md
  • .agents/sow/done/SOW-0015-20260605-codacy-scope-and-maintainability.md
  • .agents/sow/done/SOW-0027-20260629-netdata-vendor-memory-safety-update.md
  • .agents/sow/done/SOW-0031-20260712-linux-shm-build-gating.md
  • .agents/sow/done/SOW-0032-20260712-uds-permission-contract.md
  • .agents/sow/done/SOW-0035-20260728-rust-2024-style-migration.md
  • .agents/sow/done/SOW-0037-20260927-linux-32-bit-build-coverage.md
  • .agents/sow/done/SOW-0040-20261029-robustness-repro-tests.md
  • .agents/sow/done/SOW-0041-20261029-rust-receive-timeout-slice.md
  • .agents/sow/done/SOW-0042-20261029-uds-default-packet-size.md
  • .agents/sow/done/SOW-0043-20261029-handshake-timeouts-and-shutdown.md
  • .agents/sow/done/SOW-0044-20261029-dead-peer-detection.md
  • .agents/sow/done/SOW-0045-20261029-windows-pipe-security.md
  • .agents/sow/done/SOW-0046-20261029-go-cross-platform-build.md
  • .agents/sow/done/SOW-0047-20261029-abort-signal-spec-conformance.md
  • .agents/sow/done/SOW-0048-20261029-freebsd-support.md
  • .agents/sow/done/SOW-0049-20261029-macos-support.md
  • .agents/sow/done/SOW-0051-20261031-client-call-deadlines.md
  • .agents/sow/done/SOW-0052-20261031-transport-hygiene.md
  • .agents/sow/done/SOW-0053-20261031-deterministic-correctness-suite.md
  • .agents/sow/done/SOW-0054-20261031-msys-thread-creation.md
  • .agents/sow/done/SOW-0055-20261031-shm-after-negotiation.md
  • .agents/sow/done/SOW-0056-20261031-freebsd-15-validation.md
  • .agents/sow/done/SOW-0057-20261031-production-duplication-reduction.md
  • .agents/sow/done/SOW-0058-20261031-go-1-27-alignment.md
  • .agents/sow/done/SOW-0059-20261031-freebsd-shm-transport.md
  • .agents/sow/done/SOW-0061-20261101-go-server-hello-timeout-class.md
  • .agents/sow/done/SOW-0062-20261101-pipeline-batch-bench-small-buffers.md
  • .agents/sow/done/SOW-0063-20261101-go-bench-clock-and-snapshot-server.md
  • .agents/sow/done/SOW-0064-20261102-windows-pipe-pipelining-progress.md
  • .agents/sow/done/SOW-0066-20261104-pre-vendoring-ci-remediation.md
  • .agents/sow/done/SOW-0067-20261104-endpoint-lock-under-restrictive-umask.md
  • .agents/sow/done/SOW-0070-20261107-pr-review-findings.md
  • .agents/sow/pending/SOW-0032-20260712-uds-permission-contract.md
  • .agents/sow/pending/SOW-0035-20260728-rust-2024-style-migration.md
  • .agents/sow/pending/SOW-0060-20261031-duplication-reduction-next-pair.md
  • .agents/sow/pending/SOW-0065-20261103-lookup-client-reusable-stitch-storage.md
  • .agents/sow/pending/SOW-0068-20261105-go-coverage-threshold.md
  • .agents/sow/pending/SOW-0069-20261106-benchmark-host-rebaseline.md
  • .github/workflows/codacy-analysis.yml
  • .github/workflows/macos.yml
  • .github/workflows/runtime-safety.yml
  • .github/workflows/static-analysis.yml
  • .github/workflows/supply-chain-security.yml
  • .gitignore
  • AGENTS.md
  • CMakeLists.txt
  • README.md
  • bench/drivers/c/bench_posix.c
  • bench/drivers/c/bench_windows.c
  • bench/drivers/go/duration.go
  • bench/drivers/go/go.mod
  • bench/drivers/go/main.go
  • bench/drivers/go/main_windows.go
  • bench/drivers/go/osv-scanner.toml
  • bench/drivers/go/shm_supported.go
  • bench/drivers/go/shm_unsupported.go
  • bench/drivers/rust/src/bench_windows.rs
  • bench/drivers/rust/src/main.rs
  • docs/code-organization.md
  • docs/level1-posix-shm.md
  • docs/level1-posix-uds.md
  • docs/level1-transport.md
  • docs/level1-windows-np.md
  • docs/level1-windows-shm.md
  • docs/level1-wire-envelope.md
  • docs/level2-typed-api.md
  • docs/netipc-integrator-skill.md
  • rustfmt.toml
  • src/crates/netipc/src/lib.rs
  • src/crates/netipc/src/protocol/cgroups_snapshot.rs
  • src/crates/netipc/src/protocol/lookup.rs
  • src/crates/netipc/src/protocol/lookup/apps_lookup.rs
  • src/crates/netipc/src/protocol/lookup/cgroups_lookup.rs
  • src/crates/netipc/src/protocol/lookup/common.rs
  • src/crates/netipc/src/protocol/mod.rs
  • src/crates/netipc/src/protocol/tests.rs
  • src/crates/netipc/src/service/apps_lookup.rs
  • src/crates/netipc/src/service/apps_lookup_unix_tests.rs
  • src/crates/netipc/src/service/cgroups_lookup.rs
  • src/crates/netipc/src/service/cgroups_lookup_unix_tests.rs
  • src/crates/netipc/src/service/cgroups_snapshot.rs
  • src/crates/netipc/src/service/cgroups_unix_tests.rs
  • src/crates/netipc/src/service/cgroups_windows_tests.rs
  • src/crates/netipc/src/service/mod.rs
  • src/crates/netipc/src/service/raw.rs
  • src/crates/netipc/src/service/raw/apps_lookup.rs
  • src/crates/netipc/src/service/raw/cgroups_lookup.rs
  • src/crates/netipc/src/service/raw/cgroups_snapshot.rs
  • src/crates/netipc/src/service/raw/client.rs
  • src/crates/netipc/src/service/raw/client_call.rs
  • src/crates/netipc/src/service/raw/client_unix.rs
  • src/crates/netipc/src/service/raw/client_windows.rs
  • src/crates/netipc/src/service/raw/common.rs
  • src/crates/netipc/src/service/raw/dispatch.rs
  • src/crates/netipc/src/service/raw/increment.rs
  • src/crates/netipc/src/service/raw/server.rs
  • src/crates/netipc/src/service/raw/server_session_unix.rs
  • src/crates/netipc/src/service/raw/server_session_windows.rs
  • src/crates/netipc/src/service/raw/server_unix.rs
  • src/crates/netipc/src/service/raw/server_windows.rs
  • src/crates/netipc/src/service/raw/string_reverse.rs
  • src/crates/netipc/src/service/raw_lookup_dispatch_tests.rs
  • src/crates/netipc/src/service/raw_robustness_unix_tests.rs
  • src/crates/netipc/src/service/raw_robustness_windows_tests.rs
  • src/crates/netipc/src/service/raw_unix_tests.rs
  • src/crates/netipc/src/service/raw_windows_tests.rs
  • src/crates/netipc/src/test_locks.rs
  • src/crates/netipc/src/transport/framing.rs
  • src/crates/netipc/src/transport/mod.rs
  • src/crates/netipc/src/transport/posix.rs
  • src/crates/netipc/src/transport/posix_stream.rs
  • src/crates/netipc/src/transport/posix_tests.rs
  • src/crates/netipc/src/transport/shm.rs
  • src/crates/netipc/src/transport/shm_tests.rs
  • src/crates/netipc/src/transport/win_security.rs
  • src/crates/netipc/src/transport/win_shm.rs
  • src/crates/netipc/src/transport/windows.rs
  • src/go/go.mod
  • src/go/osv-scanner.toml
  • src/go/pkg/netipc/internal/monotime/monotime.go
  • src/go/pkg/netipc/internal/monotime/monotime_test.go
  • src/go/pkg/netipc/internal/syspoll/poll_linux.go
  • src/go/pkg/netipc/internal/syspoll/poll_other.go
  • src/go/pkg/netipc/internal/syspoll/syspoll.go
  • src/go/pkg/netipc/protocol/apps_lookup.go
  • src/go/pkg/netipc/protocol/cgroups_lookup.go
  • src/go/pkg/netipc/protocol/cgroups_snapshot.go
  • src/go/pkg/netipc/protocol/codec_edge_test.go
  • src/go/pkg/netipc/protocol/dispatch_scratch.go
  • src/go/pkg/netipc/protocol/frame.go
  • src/go/pkg/netipc/protocol/fuzz_test.go
  • src/go/pkg/netipc/protocol/lookup_common.go
  • src/go/pkg/netipc/protocol/lookup_guard_test.go
  • src/go/pkg/netipc/protocol/string_reverse.go
  • src/go/pkg/netipc/service/apps_lookup/client_common.go
  • src/go/pkg/netipc/service/apps_lookup/client_common_test.go
  • src/go/pkg/netipc/service/apps_lookup/types.go
  • src/go/pkg/netipc/service/cgroups_lookup/client_common.go
  • src/go/pkg/netipc/service/cgroups_lookup/client_common_test.go
  • src/go/pkg/netipc/service/cgroups_lookup/types.go
  • src/go/pkg/netipc/service/cgroups_snapshot/cgroups_unix_test.go
  • src/go/pkg/netipc/service/cgroups_snapshot/cgroups_windows_test.go
  • src/go/pkg/netipc/service/cgroups_snapshot/client_common.go
  • src/go/pkg/netipc/service/cgroups_snapshot/control_windows_test.go
  • src/go/pkg/netipc/service/cgroups_snapshot/testlock_unix_test.go
  • src/go/pkg/netipc/service/cgroups_snapshot/types.go
  • src/go/pkg/netipc/service/raw/alloc_calls_test.go
  • src/go/pkg/netipc/service/raw/alloc_shm_posix_test.go
  • src/go/pkg/netipc/service/raw/alloc_test.go
  • src/go/pkg/netipc/service/raw/alloc_unix_test.go
  • src/go/pkg/netipc/service/raw/alloc_windows_test.go
  • src/go/pkg/netipc/service/raw/apps_lookup.go
  • src/go/pkg/netipc/service/raw/cache_test.go
  • src/go/pkg/netipc/service/raw/cgroups_lookup.go
  • src/go/pkg/netipc/service/raw/cgroups_snapshot.go
  • src/go/pkg/netipc/service/raw/client.go
  • src/go/pkg/netipc/service/raw/client_test.go
  • src/go/pkg/netipc/service/raw/client_unix.go
  • src/go/pkg/netipc/service/raw/client_windows.go
  • src/go/pkg/netipc/service/raw/edge_test.go
  • src/go/pkg/netipc/service/raw/helpers_windows_test.go
  • src/go/pkg/netipc/service/raw/increment.go
  • src/go/pkg/netipc/service/raw/large_helpers_unix_test.go
  • src/go/pkg/netipc/service/raw/lookup_common.go
  • src/go/pkg/netipc/service/raw/lookup_common_test.go
  • src/go/pkg/netipc/service/raw/lookup_unix_test.go
  • src/go/pkg/netipc/service/raw/lookup_windows_test.go
  • src/go/pkg/netipc/service/raw/more_unix_test.go
  • src/go/pkg/netipc/service/raw/more_windows_test.go
  • src/go/pkg/netipc/service/raw/ping_pong_test.go
  • src/go/pkg/netipc/service/raw/ping_pong_windows_test.go
  • src/go/pkg/netipc/service/raw/poll_unix.go
  • src/go/pkg/netipc/service/raw/race_disabled_test.go
  • src/go/pkg/netipc/service/raw/race_enabled_test.go
  • src/go/pkg/netipc/service/raw/robustness_shm_posix_test.go
  • src/go/pkg/netipc/service/raw/robustness_unix_test.go
  • src/go/pkg/netipc/service/raw/robustness_windows_test.go
  • src/go/pkg/netipc/service/raw/server.go
  • src/go/pkg/netipc/service/raw/server_helpers_test.go
  • src/go/pkg/netipc/service/raw/server_unix.go
  • src/go/pkg/netipc/service/raw/server_windows.go
  • src/go/pkg/netipc/service/raw/server_windows_unit_test.go
  • src/go/pkg/netipc/service/raw/shm_posix_test.go
  • src/go/pkg/netipc/service/raw/shm_unix_test.go
  • src/go/pkg/netipc/service/raw/shm_windows_test.go
  • src/go/pkg/netipc/service/raw/socktype_other_test.go
  • src/go/pkg/netipc/service/raw/socktype_stream_test.go
  • src/go/pkg/netipc/service/raw/stress_test.go
  • src/go/pkg/netipc/service/raw/string_reverse.go
  • src/go/pkg/netipc/service/raw/testlock_unix_test.go
  • src/go/pkg/netipc/transport/internal/framing/handshake.go
  • src/go/pkg/netipc/transport/internal/framing/handshake_test.go
  • src/go/pkg/netipc/transport/internal/framing/receive.go
  • src/go/pkg/netipc/transport/posix/shm.go
  • src/go/pkg/netipc/transport/posix/shm_edge_test.go
  • src/go/pkg/netipc/transport/posix/shm_fallocate_freebsd_386.go
  • src/go/pkg/netipc/transport/posix/shm_fallocate_freebsd_amd64.go
  • src/go/pkg/netipc/transport/posix/shm_futex_linux.go
  • src/go/pkg/netipc/transport/posix/shm_more_edge_test.go
  • src/go/pkg/netipc/transport/posix/shm_other.go
  • src/go/pkg/netipc/transport/posix/shm_pause_amd64.go
  • src/go/pkg/netipc/transport/posix/shm_pause_amd64.s
  • src/go/pkg/netipc/transport/posix/shm_pause_other.go
  • src/go/pkg/netipc/transport/posix/shm_posix.go
  • src/go/pkg/netipc/transport/posix/shm_posix_test.go
  • src/go/pkg/netipc/transport/posix/shm_umask_test.go
  • src/go/pkg/netipc/transport/posix/shm_umtx_freebsd.go
  • src/go/pkg/netipc/transport/posix/shm_umtx_freebsd_test.go
  • src/go/pkg/netipc/transport/posix/testlock_unix_test.go
  • src/go/pkg/netipc/transport/posix/uds.go
  • src/go/pkg/netipc/transport/posix/uds_bind_darwin.go
  • src/go/pkg/netipc/transport/posix/uds_bind_darwin_test.go
  • src/go/pkg/netipc/transport/posix/uds_bind_other.go
  • src/go/pkg/netipc/transport/posix/uds_cloexec_accept4.go
  • src/go/pkg/netipc/transport/posix/uds_cloexec_other.go
  • src/go/pkg/netipc/transport/posix/uds_handshake.go
  • src/go/pkg/netipc/transport/posix/uds_listener.go
  • src/go/pkg/netipc/transport/posix/uds_more_edge_test.go
  • src/go/pkg/netipc/transport/posix/uds_nosigpipe_other.go
  • src/go/pkg/netipc/transport/posix/uds_packet_size_seqpacket_test.go
  • src/go/pkg/netipc/transport/posix/uds_packet_size_stream_test.go
  • src/go/pkg/netipc/transport/posix/uds_pipeline_test.go
  • src/go/pkg/netipc/transport/posix/uds_platform_darwin.go
  • src/go/pkg/netipc/transport/posix/uds_platform_other.go
  • src/go/pkg/netipc/transport/posix/uds_receive.go
  • src/go/pkg/netipc/transport/posix/uds_send.go
  • src/go/pkg/netipc/transport/posix/uds_sendmsg.go
  • src/go/pkg/netipc/transport/posix/uds_sendmsg_linux_386.go
  • src/go/pkg/netipc/transport/posix/uds_session.go
  • src/go/pkg/netipc/transport/posix/uds_stale.go
  • src/go/pkg/netipc/transport/posix/uds_stream.go
  • src/go/pkg/netipc/transport/posix/uds_stream_baseline_test.go
  • src/go/pkg/netipc/transport/posix/uds_stream_test.go
  • src/go/pkg/netipc/transport/posix/uds_test.go
  • src/go/pkg/netipc/transport/posix/uds_transport_seqpacket.go
  • src/go/pkg/netipc/transport/posix/uds_transport_stream.go
  • src/go/pkg/netipc/transport/windows/pipe.go
  • src/go/pkg/netipc/transport/windows/pipe_edge_test.go
  • src/go/pkg/netipc/transport/windows/pipe_handshake.go
  • src/go/pkg/netipc/transport/windows/pipe_integration_test.go
  • src/go/pkg/netipc/transport/windows/pipe_listener.go
  • src/go/pkg/netipc/transport/windows/pipe_overlapped.go
  • src/go/pkg/netipc/transport/windows/pipe_progress_test.go
  • src/go/pkg/netipc/transport/windows/pipe_receive.go
  • src/go/pkg/netipc/transport/windows/pipe_receive_test.go
  • src/go/pkg/netipc/transport/windows/pipe_send.go
  • src/go/pkg/netipc/transport/windows/pipe_session.go
  • src/go/pkg/netipc/transport/windows/security.go
  • src/go/pkg/netipc/transport/windows/security_test.go
  • src/go/pkg/netipc/transport/windows/shm.go
  • src/go/pkg/netipc/transport/windows/shm_test.go
  • src/libnetdata/netipc/include/netipc/netipc_named_pipe.h
  • src/libnetdata/netipc/include/netipc/netipc_protocol.h
  • src/libnetdata/netipc/include/netipc/netipc_service.h
  • src/libnetdata/netipc/include/netipc/netipc_shm.h
  • src/libnetdata/netipc/include/netipc/netipc_uds.h
  • src/libnetdata/netipc/src/service/netipc_service.c
  • src/libnetdata/netipc/src/service/netipc_service_apps_lookup.c
  • src/libnetdata/netipc/src/service/netipc_service_cgroups_lookup.c
  • src/libnetdata/netipc/src/service/netipc_service_cgroups_snapshot.c
  • src/libnetdata/netipc/src/service/netipc_service_common.c
  • src/libnetdata/netipc/src/service/netipc_service_common.h
  • src/libnetdata/netipc/src/service/netipc_service_platform.h
  • src/libnetdata/netipc/src/service/netipc_service_posix_client.c
  • src/libnetdata/netipc/src/service/netipc_service_posix_client_call.c
  • src/libnetdata/netipc/src/service/netipc_service_posix_client_connect.c
  • src/libnetdata/netipc/src/service/netipc_service_posix_internal.h
  • src/libnetdata/netipc/src/service/netipc_service_posix_server.c
  • src/libnetdata/netipc/src/service/netipc_service_posix_server_session.c
  • src/libnetdata/netipc/src/service/netipc_service_win.c
  • src/libnetdata/netipc/src/service/netipc_service_win_client.c
  • src/libnetdata/netipc/src/service/netipc_service_win_client_call.c
  • src/libnetdata/netipc/src/service/netipc_service_win_client_connect.c
  • src/libnetdata/netipc/src/service/netipc_service_win_internal.h
  • src/libnetdata/netipc/src/service/netipc_service_win_server.c
  • src/libnetdata/netipc/src/service/netipc_service_win_server_session.c
  • src/libnetdata/netipc/src/transport/posix/netipc_shm.c
  • src/libnetdata/netipc/src/transport/posix/netipc_uds.c
  • src/libnetdata/netipc/src/transport/posix/netipc_uds_handshake.c
  • src/libnetdata/netipc/src/transport/posix/netipc_uds_internal.h
  • src/libnetdata/netipc/src/transport/posix/netipc_uds_lifecycle.c
  • src/libnetdata/netipc/src/transport/posix/netipc_uds_receive.c
  • src/libnetdata/netipc/src/transport/posix/netipc_uds_send.c
  • src/libnetdata/netipc/src/transport/windows/netipc_named_pipe.c
  • src/libnetdata/netipc/src/transport/windows/netipc_win_security.c
  • src/libnetdata/netipc/src/transport/windows/netipc_win_security.h
  • src/libnetdata/netipc/src/transport/windows/netipc_win_shm.c
  • tests/fixtures/c/interop_cache.c
  • tests/fixtures/c/interop_cache_win.c
  • tests/fixtures/c/interop_named_pipe.c
  • tests/fixtures/c/interop_service.c
  • tests/fixtures/c/interop_service_win.c
  • tests/fixtures/c/interop_shm.c
  • tests/fixtures/c/interop_win_shm.c
  • tests/fixtures/c/shm_fallocate_wrap.c
  • tests/fixtures/c/test_cache.c
  • tests/fixtures/c/test_chaos.c
  • tests/fixtures/c/test_hardening.c
  • tests/fixtures/c/test_lock_cleanup.h
  • tests/fixtures/c/test_multi_server.c
  • tests/fixtures/c/test_named_pipe.c
  • tests/fixtures/c/test_ping_pong.c
  • tests/fixtures/c/test_robustness.c
  • tests/fixtures/c/test_service.c
  • tests/fixtures/c/test_service_extra.c
  • tests/fixtures/c/test_service_limit_helpers.h
  • tests/fixtures/c/test_service_method_limits.c
  • tests/fixtures/c/test_service_payload_limits.c
  • tests/fixtures/c/test_shm.c
  • tests/fixtures/c/test_shm_timeout.c
  • tests/fixtures/c/test_stress.c
  • tests/fixtures/c/test_sync.h
  • tests/fixtures/c/test_uds.c
  • tests/fixtures/c/test_win_robustness.c
  • tests/fixtures/c/test_win_security.h
  • tests/fixtures/c/test_win_service.c
  • tests/fixtures/c/test_win_service_extra.c
  • tests/fixtures/c/test_win_service_guards.c
  • tests/fixtures/c/test_win_service_guards_extra.c
  • tests/fixtures/c/test_win_service_payload_limits.c
  • tests/fixtures/c/test_win_shm.c
  • tests/fixtures/c/test_win_stress.c
  • tests/fixtures/c/uds_eintr_wrap.c
  • tests/fixtures/c/uds_eintr_wrap.h
  • tests/fixtures/c/uds_test_socket.h
  • tests/fixtures/go/cmd/interop_cache/main.go
  • tests/fixtures/go/cmd/interop_cache_win/main.go
  • tests/fixtures/go/cmd/interop_named_pipe/main.go
  • tests/fixtures/go/cmd/interop_service/main.go
  • tests/fixtures/go/cmd/interop_service_win/main.go
  • tests/fixtures/go/cmd/interop_shm/main.go
  • tests/fixtures/go/cmd/interop_win_shm/main.go
  • tests/fixtures/go/go.mod
  • tests/fixtures/go/osv-scanner.toml
  • tests/fixtures/rust/src/bin/interop_cache.rs
  • tests/fixtures/rust/src/bin/interop_cache_win.rs
  • tests/fixtures/rust/src/bin/interop_named_pipe.rs
  • tests/fixtures/rust/src/bin/interop_service.rs
  • tests/fixtures/rust/src/bin/interop_service_win.rs
  • tests/fixtures/rust/src/bin/interop_shm.rs
  • tests/fixtures/rust/src/bin/interop_uds.rs
  • tests/fixtures/rust/src/bin/interop_win_shm.rs
  • tests/generate-codacy-coverage.sh
  • tests/interop-lib.sh
  • tests/run-coverage-c-windows.sh
  • tests/run-coverage-rust-windows.sh
  • tests/run-coverage-rust.sh
  • tests/run-extended-fuzz.sh
  • tests/run-extended-stress.sh
  • tests/run-go-race.sh
  • tests/run-linux-target.sh
  • tests/run-posix-bench.sh
  • tests/run-sanitizer-asan.sh
  • tests/run-sanitizer-tsan.sh
  • tests/run-valgrind.sh
  • tests/run-windows-bench.sh
  • tests/run-windows-msys-validation.sh
  • tests/test_cache_interop.sh
  • tests/test_cache_win_interop.sh
  • tests/test_lookup_scale_interop.sh
  • tests/test_lookup_scale_win_interop.sh
  • tests/test_named_pipe_interop.sh
  • tests/test_service_interop.sh
  • tests/test_service_win_interop.sh
  • tests/test_shm_interop.sh
  • tests/test_uds_interop.sh
  • tests/test_win_shm_interop.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Tip

🎯 Customize your risk assessments

Guide how CodeRabbit assesses merge risk and security architecture risk. Highlight sensitive changes and explain your security boundaries using Merge Risk Instructions and Security Risk Instructions in your review settings. Security architecture risk assessments require the Advanced plan or above.

✅ Automatic approvals, with your rules

Let CodeRabbit approve pull requests once required threads are resolved, pre-merge checks pass, and your risk limits are met. Enable Automatic approvals in review settings, with overrides for teams or file paths.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

…benchmark hosts

SOW-0050 moves to in progress with its preflight, same-host A/B evidence, user decisions and the Netdata vendoring PR; it closes once that PR's CI passes. SOW-0068 tracks restoring Go coverage to its threshold, SOW-0069 the benchmark host drift and floor re-baseline.
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed against the latest diff

Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.

View guided diff | Turn on auto-fix | Re-trigger cubic

Comment thread src/go/pkg/netipc/service/raw/client.go Resolved
Comment thread docs/level1-transport.md Resolved
Comment thread docs/netipc-integrator-skill.md Resolved

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 356 files

Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.
Requires human review: Auto-approval blocked because this review re-detected 26 unresolved issues already reported by Cubic.

View guided diff | Turn on auto-fix | Re-trigger cubic

Comment thread docs/level1-windows-np.md Resolved
Comment thread CMakeLists.txt Resolved
Bound every send by the call timeout (C, Rust, Go, UDS and Named Pipe),
retry accept on EINTR, bound the C POSIX HELLO wait by one handshake
deadline, reject malformed HELLO/HELLO_ACK packets on message-oriented
transports, repair mode-000 lock files only when owned and regular,
reject an empty run_dir, retry busy Windows pipe instances, and pass NULL
byte counts to overlapped ReadFile/WriteFile.

Add reproduction tests for each deterministic finding, fix the run()
exit code in the sanitizer, valgrind, race and fuzz scripts, gate the
bench drivers' SHM paths and validate their durations, align the OSV
Go version with the release Netdata ships, and update the transport,
wire-envelope and typed-API specs, the integrator guide, AGENTS.md and
the vendoring skill. Correct records in earlier SOWs.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 135 files (changes from recent commits).

Tip: Get a Slack DM when cubic finishes reviewing your PRs. Connect Slack

View guided diff | Turn on auto-fix | Re-trigger cubic

Comment thread tests/fixtures/c/test_win_service.c Resolved
Comment thread tests/fixtures/c/test_named_pipe.c Resolved
Comment thread bench/drivers/c/bench_windows.c Resolved
Comment thread docs/level1-posix-uds.md Resolved
Publish a missing endpoint lock under its name only once it is 0600
(temporary file, fchmod, hard link) in C, Rust and Go, replacing the
path-based chmod repair of mode-000 lock files that static analysis
flagged. Size the pending queue for one response when a bounded send
runs with nothing in flight, which divided by zero. Serialize Go
Listener.StopListening so a concurrent Close cannot release the lock
before the socket file is gone.

Correct bench duration limits, unassigned-profile tests, fixture
synchronization and records, and run extended stress on macOS through
workflow_dispatch.
* read-write, so a narrower open follows (flock() works on any access
* mode) and fchmod() restores 0600 for the next starter. fchmod() fails
* only for a file another account owns, which the lock still works on. */
int fd = open(lock_path, O_RDWR | O_CLOEXEC | O_NOFOLLOW);

void nipc_uds_set_listen_hook_for_tests(void (*hook)(void *user), void *user)
{
g_listen_hook_user = user;
void nipc_uds_set_lock_publish_hook_for_tests(
void (*hook)(const char *tmp_path, void *user), void *user)
{
g_lock_publish_hook_user = user;

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 30 files (changes from recent commits).

Requires human review: Auto-approval blocked because this review re-detected 1 unresolved issue already reported by Cubic.

View guided diff | Turn on auto-fix | Re-trigger cubic

Comment thread .github/workflows/macos.yml Resolved
Comment thread bench/drivers/c/bench_windows.c Resolved
Comment thread bench/drivers/c/bench_windows.c Resolved
Comment thread bench/drivers/go/duration.go Resolved
The Go runtime's preemption signal can interrupt the raw poll in the
stalled-reader test helper, and POLLHUP alone does not prove the request
arrived. Run only lookup-scale interop in the macOS manual step, since
the full extended suite needs SHM, and correct bench comments and usage.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 7 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

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