https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297516
Bug ID: 297516
Summary: sendfile: Assertion uio->uio_rw == UIO_WRITE in 32-bit
compat mode
Product: Base System
Version: 16.0-CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: [email protected]
Reporter: [email protected]
Attempting to use freebsd32_sendfile on a 64-bit kernel will instantly panic as
shown below. This is a regression. I don't know exactly when it was
introduced, but I don't think that it was present as recently as early July.
STACK TRACE
===========
panic: Assertion uio->uio_rw == UIO_WRITE failed at
/usr/home/somers/src/freebsd.org/src/main/sys/kern/uipc_mbuf.c:2002
...
#10 0xffffffff80c3b749 in vpanic (fmt=<optimized out>,
ap=ap@entry=0xfffffe00d86618a0)
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/kern_shutdown.c:962
buf = "Assertion uio->uio_rw == UIO_WRITE failed at
/usr/home/somers/src/freebsd.org/src/main/sys/kern/uipc_mbuf.c:2002", '\000'
<repeats 143 times>
__pc = 0x0
__pc = 0x0
__pc = 0x0
other_cpus = {__bits = {65527, 0 <repeats 15 times>}}
td = 0xfffff80017657000
bootopt = <optimized out>
newpanic = <optimized out>
#11 0xffffffff80c3b5c3 in panic (
fmt=0xffffffff81da5280 <cnputs_mtx> "\021S,\201\377\377\377\377")
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/kern_shutdown.c:887
ap = {{gp_offset = 32, fp_offset = 48,
overflow_arg_area = 0xfffffe00d86618d0,
reg_save_area = 0xfffffe00d8661870}}
#12 0xffffffff80cf2756 in mc_uiotomc (mc=mc@entry=0xfffffe00d86619b0,
uio=0xfffff800af319b00, length=65536, lspace=lspace@entry=0, how=18,
how@entry=2, flags=0)
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/uipc_mbuf.c:2002
total = <optimized out>
error = <optimized out>
mb = <optimized out>
#13 0xffffffff80d0b280 in uipc_sosend_stream_or_seqpacket (
so=0xfffff80124870400, addr=<optimized out>, uio0=0xfffff800af319b00,
m=<optimized out>, c=<optimized out>, flags=0, td=0xdeadc0dedeadc0de)
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/uipc_usrreq.c:1194
unp2 = 0xffffffff80fc95a0 <mac_socket_check_send+208>
needsopts = 0
mc = {mc_q = {stqh_first = 0x0, stqh_last = 0xfffffe00d86619b0},
mc_len = 0, mc_mlen = 0}
cmc = {mc_q = {stqh_first = 0x0, stqh_last = 0xfffffe00d8661998},
mc_len = 0, mc_mlen = 0}
nonblock = <optimized out>
eor = false
sent = 0
aio = <optimized out>
uio = 0xfffff800af319b00
error = <optimized out>
resid = 24
so2 = <optimized out>
sb = <optimized out>
#14 0xffffffff80cff349 in sousrsend (so=0xffffffff81da5280 <cnputs_mtx>,
addr=0xfffffe00d86615f0, uio=0xffffffff813fb398, control=0x12, flags=0,
userproc=0x0)
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/uipc_socket.c:2671
len = <optimized out>
td = <optimized out>
saved_vnet = 0x0
error = <optimized out>
#15 0xffffffff80cc0784 in fo_write (fp=0xfffff8001763d7d0,
uio=0xfffff800af319b00, active_cred=0xffffffff813fb398,
td=0xfffff80017657000, flags=<optimized out>)
at /usr/home/somers/src/freebsd.org/src/main/sys/sys/file.h:375
No locals.
#16 kern_filewrite (td=0xfffff80017657000, fd=fd@entry=5,
fp=0xfffff8001763d7d0, auio=auio@entry=0xfffff800af319b00,
flags=flags@entry=0, cntp=cntp@entry=0xfffffe00d8661ce8)
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/sys_generic.c:601
ktruio = 0x0
cnt = 24
error = <optimized out>
#17 0xffffffff80c38faa in vn_sendfile (fp=<optimized out>, sockfd=5,
hdr_uio=<optimized out>, trl_uio=0xfffff800af319b00,
offset=<optimized out>, nbytes=0, sent=0xfffffe00d8661d80, flags=0,
td=0xfffff80017657000)
at /usr/home/somers/src/freebsd.org/src/main/sys/kern/kern_sendfile.c:1178
cnt = -2118685976
sock_fp = 0xfffff8001763d7d0
mhtail = 0xfffff80124caba00
va = {va_type = 232, va_mode = 33207, va_bsdflags = 65535,
va_uid = 1601310144, va_gid = 4294965249,
va_nlink = 18446735280555793152, va_fsid = 2,
va_fileid = 18446741875082739712, va_size = 0,
va_blocksize = -2195392684896, va_atime = {tv_sec = -2130496517,
tv_nsec = -2195392684896}, va_mtime = {tv_sec = -2198626811904,
tv_nsec = 549755814128}, va_ctime = {tv_sec = 2, tv_nsec = 3},
va_birthtime = {tv_sec = -2198626811904, tv_nsec = -8793153758464},
va_gen = 2, va_flags = 18446741878316866800,
va_rdev = 18446744071574695594, va_bytes = 618333444,
va_filerev = 80, va_vaflags = 618332673, va_spare = -2195392684656}
obj_size = 13
tls_enq_cnt = -2048
obj = 0xfffff800177fb1d0
so = <optimized out>
mh = <optimized out>
m = 0x0
tls = 0x0
sbytes = <optimized out>
hdrlen = 0
softerr = 0
use_ext_pgs = <optimized out>
vp = 0xfffff8015f720dc0
shmfd = <optimized out>
error = 0
pr = 0xffffffff81aed910 <streamproto>
rem = 0
saved_vnet = 0x0
off = <optimized out>
max_pgs = <optimized out>
ext_pgs_idx = <optimized out>
nobj_size = <optimized out>
pga = <optimized out>
sf = <optimized out>
#18 0xffffffff803f4808 in fo_sendfile (fp=0xffffffff81da5280 <cnputs_mtx>,
sockfd=-664398352, hdr_uio=0xffffffff813fb398, trl_uio=0xec63ae9b24db0201,
offset=1, nbytes=0, sent=0xfffffe00d8661d80, flags=18,
td=0xfffff80017657000)
at /usr/home/somers/src/freebsd.org/src/main/sys/sys/file.h:445
No locals.
#19 freebsd32_do_sendfile (td=0xfffff80017657000, uap=0xfffff80017657428,
compat=<optimized out>)
at
/usr/home/somers/src/freebsd.org/src/main/sys/compat/freebsd32/freebsd32_misc.c:2263
hdtr32 = {headers = 545570880, hdr_cnt = 3, trailers = 545271984,
trl_cnt = 2}
hdr_uio = 0xfffff800af319b80
trl_uio = 0xfffff800af319b00
fp = 0xfffff80007f67c80
rights = {cr_rights = {144115188075855885, 288230376151711744}}
sbytes = -2195392684560
offset = <optimized out>
error = <optimized out>
hdtr = <optimized out>
iov32 = <optimized out>
#20 0xffffffff8128edc0 in syscallenter (td=0xfffff80017657000)
at
/usr/home/somers/src/freebsd.org/src/main/sys/amd64/ia32/../../kern/subr_syscall.c:193
se = 0xffffffff81a143a0 <freebsd32_sysent+12576>
p = 0xfffffe013ad31000
sa = 0xfffff80017657418
error = <optimized out>
sy_thr_static = <optimized out>
traced = <optimized out>
#21 ia32_syscall (frame=0xfffffe00d8661f40)
at
/usr/home/somers/src/freebsd.org/src/main/sys/amd64/ia32/ia32_syscall.c:231
ksi = {ksi_link = {tqe_next = 0xfffffe00d8661e70,
tqe_prev = 0xffffffff80cadc29 <userret+121>}, ksi_info = {
si_signo = 134092672, si_errno = -2048, si_code = 1231,
si_pid = 0, si_uid = 618332673, si_status = -329011557,
si_addr = 0xfffff80017657000, si_value = {sival_int = 788352,
sival_ptr = 0xc0780, sigval_int = 788352, sigval_ptr = 0xc0780},
_reason = {_fault = {_trapno = 618332673}, _timer = {
_timerid = 618332673, _overrun = -329011557}, _mesgq = {
_mqd = 618332673}, _poll = {_band = -1413093876702707199},
_capsicum = {_syscall = 618332673}, __spare__ = {
__spare1__ = -1413093876702707199, __spare2__ = {392523776,
-2048, 12, 0, -664395984, -512, -2128813459}}}},
ksi_flags = -664396096, ksi_sigq = 0x2}
orig_tf_rflags = 646
td = 0xfffff80017657000
#22 0xffffffff8119d00f in int0x80_syscall_common ()
at
/usr/home/somers/src/freebsd.org/src/main/sys/amd64/ia32/ia32_exception.S:75
STEPS TO REPRODUCE
==================
1) Install Rust from rustup
2) rustup target install i686-unknown-freebsd
3) git clone [email protected]:nix-rust/nix.git
4) cd nix
5) cargo test --all-features --target i686-unknown-freebsd -- --test-threads=1
sendfile
--
You are receiving this mail because:
You are the assignee for the bug.