summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-18 13:06:18 +0300
committerPaul Buetow <paul@buetow.org>2026-04-18 13:06:18 +0300
commit808c2549bfb17d22388a197d361a07ce0fc8f54f (patch)
tree38c0e613addc04fe46156c38b92bdf13d7c9a2c0
parent928791f23b69d11441608fd48b317fe28a7ac89d (diff)
Fix task 35: treat negative fcntl errno as failure
-rw-r--r--internal/eventloop_exit.go4
-rw-r--r--internal/eventloop_test.go2
2 files changed, 3 insertions, 3 deletions
diff --git a/internal/eventloop_exit.go b/internal/eventloop_exit.go
index a9dd4c5..c74ecea 100644
--- a/internal/eventloop_exit.go
+++ b/internal/eventloop_exit.go
@@ -253,8 +253,8 @@ func (e *eventLoop) handleFcntlExit(ep *event.Pair, fcntlEv *types.FcntlEvent) b
e.recyclePair(ep, "Dropped malformed fcntl exit event")
return false
}
- // Syscall returned -1, nothing was changed with the fd
- if retEvent.Ret == -1 {
+ // Syscall returned a negative errno, nothing was changed with the fd.
+ if retEvent.Ret < 0 {
return true
}
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go
index c5aebe4..98f2209 100644
--- a/internal/eventloop_test.go
+++ b/internal/eventloop_test.go
@@ -2143,7 +2143,7 @@ func makeFcntlErrorTestData(t *testing.T) (td testData) {
fcntlEnterEv2, fcntlEnterBytes2 := makeEnterFcntlEvent(t, defaulTime+400, defaultPid, defaultTid, fd, syscall.F_SETFL, uint64(syscall.O_NONBLOCK))
td.rawTracepoints = append(td.rawTracepoints, fcntlEnterBytes2)
- fcntlExitEv2, fcntlExitBytes2 := makeExitRetEvent(t, defaulTime+500, defaultPid, defaultTid, types.SYS_EXIT_FCNTL, -1) // Error return
+ fcntlExitEv2, fcntlExitBytes2 := makeExitRetEvent(t, defaulTime+500, defaultPid, defaultTid, types.SYS_EXIT_FCNTL, -9) // Realistic kernel errno return
td.rawTracepoints = append(td.rawTracepoints, fcntlExitBytes2)
// Validate F_SETFL error didn't change flags