[Bug 206543] tools/regression/sockets/unix_cmsg:t_cmsg_len doesn't pass on 64-bit archs; likely passes on 32-bit archs by accident

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Jan 23 22:19:17 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206543

            Bug ID: 206543
           Summary: tools/regression/sockets/unix_cmsg:t_cmsg_len doesn't
                    pass on 64-bit archs; likely passes on 32-bit archs by
                    accident
           Product: Base System
           Version: 10.2-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: tests
          Assignee: freebsd-testing at freebsd.org
          Reporter: ngie at FreeBSD.org

If I use amd64, the "Check cmsghdr.cmsg_len" (t_cmsg_len) testcase will fail.
If I use i386 however, it passes.

I suspect (based on the size discrepancy) that one or more fields are being
sized incorrectly (as pointers instead of scalars).

In particular, the amount sent when testing on i386 is 96 bytes, whereas on
amd64 it's 104 bytes. The reason why this is happening is the sizes in one of
the fields mismatch (another bug is coming soon for this hidden requirement
buried in the kernel).

amd64:

$ cd tools/regression/sockets/unix_cmsg
$ make -s clean
$ make -s all
$ ./unix_cmsg
Running tests for SOCK_STREAM sockets:
  1: Sending, receiving cmsgcred
  2: Receiving sockcred (listening socket)
  3: Receiving sockcred (accepted socket)
  4: Sending cmsgcred, receiving sockcred
  5: Sending, receiving timeval
  6: Sending, receiving bintime
  7: Check cmsghdr.cmsg_len
CLIENT: sent message with cmsghdr.cmsg_len 12 < 16
SERVER: client exit status is 1
  8: Check LOCAL_PEERCRED socket option
-- 1 test failed!
Running tests for SOCK_DGRAM sockets:
  1: Sending, receiving cmsgcred
  2: Receiving sockcred
  3: Sending cmsgcred, receiving sockcred
  4: Sending, receiving timeval
  5: Sending, receiving bintime
  6: Check cmsghdr.cmsg_len
CLIENT: sent message with cmsghdr.cmsg_len 12 < 16
SERVER: client exit status is 1
-- 1 test failed!

i386:

$ cd tools/regression/sockets/unix_cmsg
$ make -s clean
$ make -s all
$ ./unix_cmsg
Running tests for SOCK_STREAM sockets:
  1: Sending, receiving cmsgcred
  2: Receiving sockcred (listening socket)
  3: Receiving sockcred (accepted socket)
  4: Sending cmsgcred, receiving sockcred
  5: Sending, receiving timeval
  6: Sending, receiving bintime
  7: Check cmsghdr.cmsg_len
  8: Check LOCAL_PEERCRED socket option
-- all tests passed!
Running tests for SOCK_DGRAM sockets:
  1: Sending, receiving cmsgcred
  2: Receiving sockcred
  3: Sending cmsgcred, receiving sockcred
  4: Sending, receiving timeval
  5: Sending, receiving bintime
  6: Check cmsghdr.cmsg_len
-- all tests passed!
$ uname -a
FreeBSD fbsd11-i386.local 11.0-CURRENT FreeBSD 11.0-CURRENT #1 r293737M: Tue
Jan 12 09:48:34 PST 2016    
ngie at fbsd11-i386.local:/usr/obj/usr/src/svn/sys/GENERIC-NODEBUG  i386

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-testing mailing list