Bug #1528
openktrace does not show proper return values for pipe(2)
Description
When ktracing a pipe syscall, the output is:
57705 a.out CALL pipe
57705 a.out RET pipe 3
However, the return value of pipe is 0, and the returned value for the
file descs is {3, 4}.
Updated by Anonymous about 15 years ago
I've added a kprintf in ktrsysret() and here is what printed:
1126 a.out CALL pipe
1126 a.out RET ret=3 error=0 code=42 pipe 3
Question is why `ret' contains the first file descriptor of the pair at all.
(and not zero as ought to)
Stathis
Updated by corecode about 15 years ago
Stathis Kamperis (via DragonFly issue tracker) wrote:
Stathis Kamperis <ekamperi@gmail.com> added the comment:
I've added a kprintf in ktrsysret() and here is what printed:
1126 a.out CALL pipe
1126 a.out RET ret=3 error=0 code=42 pipe 3Question is why `ret' contains the first file descriptor of the pair at all.
(and not zero as ought to)
This is because sys_pipe returns both fds as return value, namely
sysmsg_fds0 and sysmsg_fds1. However ktrsysret is only called with
sysmsg_result, which covers only the first fd.
I guess the pipe libc glue code copies this result into the array.
cheers
simon
Updated by tuxillo almost 11 years ago
- Description updated (diff)
- Category set to Kernel
- Status changed from New to In Progress
- Assignee changed from 0 to tuxillo
- Target version set to 3.8
Grab.