Repository navigation
Commit e11ae37
fix: stop a uintptr round-trip and a racy ordering check failing CI
Both only appear where this machine cannot look: the checkptr crash is in a
Linux-only file that does not compile on Darwin, and the rollback race needs
CI's scheduling to lose. Local `go test ./...` on Darwin passes either way,
which is why the first tag push reached CI before they were found.
The Linux session-deletion ioctl seam took its argument as a uintptr, so the
production caller converted a pointer to an integer and the test stub converted
it back. A uintptr that crosses a function boundary is not a valid pointer and
`checkptr`, which `-race` enables, rejects converting it back. The seam now
carries an unsafe.Pointer and only the syscall expression itself holds the
address as an integer, where the compiler keeps the object alive.
The rollback test proved "rollback did not return early" with a non-blocking
receive, which assumes the restoring goroutine's channel send happens before
rollback returns. It does not: rollback waits on the acknowledgement file, and
the send is the statement after writing it. The goroutine now marks the route
restored before publishing that acknowledgement, so reading the flag after
rollback returns is a real ordering check, and the channel read has a bounded
wait for the goroutine's outcome.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 6bddeea commit e11ae37
3 files changed
Lines changed: 27 additions & 10 deletions
File tree
- internal
- cli
- vfs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
3729 | 3730 | | |
3730 | 3731 | | |
3731 | 3732 | | |
| 3733 | + | |
3732 | 3734 | | |
3733 | 3735 | | |
3734 | 3736 | | |
| |||
3775 | 3777 | | |
3776 | 3778 | | |
3777 | 3779 | | |
| 3780 | + | |
| 3781 | + | |
| 3782 | + | |
| 3783 | + | |
| 3784 | + | |
| 3785 | + | |
3778 | 3786 | | |
3779 | 3787 | | |
3780 | 3788 | | |
| |||
3795 | 3803 | | |
3796 | 3804 | | |
3797 | 3805 | | |
| 3806 | + | |
| 3807 | + | |
| 3808 | + | |
3798 | 3809 | | |
3799 | 3810 | | |
3800 | 3811 | | |
3801 | 3812 | | |
3802 | 3813 | | |
3803 | | - | |
3804 | | - | |
| 3814 | + | |
| 3815 | + | |
3805 | 3816 | | |
3806 | 3817 | | |
3807 | 3818 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
121 | 121 | | |
122 | 122 | | |
123 | 123 | | |
124 | | - | |
| 124 | + | |
125 | 125 | | |
126 | 126 | | |
127 | 127 | | |
| |||
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
137 | | - | |
138 | | - | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | 146 | | |
141 | 147 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
| 148 | + | |
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
| 152 | + | |
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
| |||
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
162 | | - | |
| 162 | + | |
163 | 163 | | |
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
169 | | - | |
170 | | - | |
| 169 | + | |
| 170 | + | |
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
| |||
0 commit comments