From 5057bd968b33fcb4bcf337730e961e53fcb54645 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 1 Jun 2026 15:53:26 +0300 Subject: =?UTF-8?q?fix(classify):=20msgsnd=20returns=20status,=20not=20byt?= =?UTF-8?q?es=20=E2=80=94=20make=20ret=20UNCLASSIFIED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit msgsnd(2) returns 0 on success or -1 on error; the payload size msgsz is an INPUT argument, never the return value. It was wrongly listed in retClassifications as WriteClassified, which made the stats engine treat its 0 return as "bytes written". Remove it so its return stays UNCLASSIFIED, consistent with its SysV IPC siblings (msgrcv legitimately stays ReadClassified because it returns a received byte count). Regenerated tracepoints/docs accordingly. Verified: mage generate idempotent, mage build OK, internal/generate tests pass, and the TestSysVMsgBasic integration test (added in task 7i0) still passes. Co-Authored-By: Claude Opus 4.8 --- internal/generate/classify.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'internal/generate') diff --git a/internal/generate/classify.go b/internal/generate/classify.go index 0735291..c1125e5 100644 --- a/internal/generate/classify.go +++ b/internal/generate/classify.go @@ -625,7 +625,11 @@ var retClassifications = map[string]RetClassification{ "pwritev2": WriteClassified, "sendmsg": WriteClassified, "sendto": WriteClassified, - "msgsnd": WriteClassified, + // msgsnd is deliberately NOT listed here: msgsnd(2) returns 0 on success or + // -1 on error — it is NOT a byte count (the payload size msgsz is an INPUT + // arg, never the return). Like its SysV IPC siblings (msgrcv excepted, which + // genuinely returns a received byte count), msgsnd's int status must stay + // UNCLASSIFIED so the stats engine never treats the return as bytes written. "write": WriteClassified, "writev": WriteClassified, "mq_timedsend": WriteClassified, -- cgit v1.2.3