strace cant parse struct msghdr RHEL

Al Gambardella agam.email at gmail.com
Fri Feb 10 21:20:12 UTC 2017


I attached strace to a running process and I am trying to understand
what strace is telling me regarding the select system call. Here are
two lines of the strace output below:

 _newselect(17, NULL, NULL, [16], {0, 0}) = 0 (Timeout)
 _newselect(9, [8], NULL, NULL, {0, 0}) = 1 (in [8], left {0, 0})

I know you can pass a timeval struct of all zeros indicating don't
block at all just check the descriptors and return immediately.

Treating each line above as a separate case:
Is it possible to determine if the caller passed a timeval struct with
an actual > 0 timeout value versus an all zero timeval struct?

I am assuming that strace is showing the timeval struct after the
kernel updates it
and is not showing the timeval struct value the caller passed into
select. Is this correct?

Thanks for any help

On Tue, Oct 4, 2016 at 9:00 AM, Al Gambardella <agam.email at gmail.com> wrote:
> I downloaded strace version 4.13 and was able to build the source code
> and produce the strace executable. I need to see the all of the
> payload in the recvmsg and sendmsg calls. including the iov style
> arrays
>
> My system is RHEL Server 5.8 Tikanga. Kernel version 2.6.18-348.el5
>
> When I run strace with the following command line:
> ./strace -p <mypid> -e 'trace=recvmsg,sendmsg' -e write=8 -e read=8
>
> I am getting the following output (which contains errors). Can someone
> explain why and if this can be fixed?
>
> sendmsg(8, {msg_name=NULL, msg_namelen=-7630976, msg_iov=NULL,
> msg_iovlen=92, msg_control=[{cmsg_len=2048, cmsg_level=SOL_IP,
> cmsg_type=0x8f800000 /* IP_??? */}, {cmsg_len=2565867895,
> cmsg_level=0xc26cff8b /* SOL_??? */, cmsg_type=0x8cacff8b}, ...],
> msg_controllen=38647074816,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_DONTWAIT|MSG_WAITALL|MSG_FIN|MSG_SYN|MSG_CONFIRM|MSG_MORE|0xff8b0010},
> 0) = 12
> sendmsg(8, {msg_name=NULL, msg_namelen=-7623584, msg_iov=NULL,
> msg_iovlen=33655230453052149, msg_control=./strace: umoven: short read
> (13250 < 20480) @0xff8bac3e: Input/output error
> 0x2ff8bac3e, msg_controllen=38647082208,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_TRUNC|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_MORE|0xff8b0010},
> 0) = 12
> ./strace: Out of memory
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 4188
> sendmsg(8, {msg_name=NULL, msg_namelen=-7623584, msg_iov=NULL,
> msg_iovlen=33655230453052149, msg_control=./strace: umoven: short read
> (13250 < 20480) @0xff8bac3e: Input/output error
> 0x2ff8bac3e, msg_controllen=38647082208,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_TRUNC|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_MORE|0xff8b0010},
> 0) = 12
> ./strace: Out of memory
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 12
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 12
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 4188
> sendmsg(8, {msg_name=NULL, msg_namelen=-7623584, msg_iov=NULL,
> msg_iovlen=33655230453052149, msg_control=./strace: umoven: short read
> (13250 < 20480) @0xff8bac3e: Input/output error
> 0x2ff8bac3e, msg_controllen=38647082208,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_TRUNC|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_MORE|0xff8b0010},
> 0) = 12
> ./strace: Out of memory
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 4188
> sendmsg(8, {msg_name=NULL, msg_namelen=-7623584, msg_iov=NULL,
> msg_iovlen=33655230453052149, msg_control=./strace: umoven: short read
> (13250 < 20480) @0xff8bac3e: Input/output error
> 0x2ff8bac3e, msg_controllen=38647082208,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_TRUNC|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_MORE|0xff8b0010},
> 0) = 12
> ./strace: Out of memory
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 12
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 4188
> sendmsg(8, {msg_name=NULL, msg_namelen=-7623584, msg_iov=NULL,
> msg_iovlen=33655230453052149, msg_control=./strace: umoven: short read
> (13250 < 20480) @0xff8bac3e: Input/output error
> 0x2ff8bac3e, msg_controllen=38647082208,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_TRUNC|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_MORE|0xff8b0010},
> 0) = 12
> ./strace: Out of memory
> recvmsg(8, {msg_name=NULL, msg_namelen=-7623488, msg_iov=NULL,
> msg_iovlen=0, msg_control=NULL, msg_controllen=17869443930177667072,
> msg_flags=MSG_CTRUNC|MSG_TRUNC|MSG_WAITALL|MSG_CONFIRM|0xbe00010},
> MSG_WAITALL) = 4188
> sendmsg(8, {msg_name=NULL, msg_namelen=-7631616, msg_iov=NULL,
> msg_iovlen=10, msg_control=[{cmsg_len=17920, cmsg_level=SOL_IP,
> cmsg_type=0x8d000000 /* IP_??? */}, {cmsg_len=3158845,
> cmsg_level=0x5f534d4e /* SOL_??? */, cmsg_type=0x4e5f534f}, ...],
> msg_controllen=300847264664,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_DONTWAIT|MSG_EOR|MSG_SYN|MSG_CONFIRM|MSG_MORE|0xff8b0010},
> 0) = 74
> sendmsg(8, {msg_name=NULL, msg_namelen=-7631504, msg_iov=NULL,
> msg_iovlen=29510720283184520, msg_control=[{cmsg_len=2048,
> cmsg_level=SOL_IP, cmsg_type=0x8d700000 /* IP_??? */},
> {cmsg_len=3971745833, cmsg_level=0x7ff00bc7 /* SOL_??? */,
> cmsg_type=0xbda}, ...], msg_controllen=38647074288,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_DONTWAIT|MSG_WAITALL|MSG_SYN|MSG_CONFIRM|MSG_MORE|0xff8b0000},
> 0) = 12
> ./strace: Out of memory
> sendmsg(8, {msg_name=NULL, msg_namelen=-7623584, msg_iov=NULL,
> msg_iovlen=33655230453052149, msg_control=./strace: umoven: short read
> (13250 < 20480) @0xff8bac3e: Input/output error
> 0x2ff8bac3e, msg_controllen=38647082208,
> msg_flags=MSG_DONTROUTE|MSG_CTRUNC|MSG_TRUNC|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_MORE|0xff8b0010},
> 0) = 12
> ./strace: Out of memory




More information about the Strace-devel mailing list