On Sat, Jan 25, 2014 at 3:52 PM, Hisashi T Fujinaka <htodd at twofifty.com> wrote: > On Sat, 25 Jan 2014, Darren Tucker wrote: > >> Maybe there's something wrapping write() on your system too? Try adding >> this to the start of atomicio.c:atomicio6(): >> >> printf(stderr, "read %x write %x argument %x\n", read, vwrite, f); >> >> then compile it and run a small scp: >> >> $ ./scp testfile localhost:/tmp/ >> read b73eced0 write b73ecf50 argument b73eced0 >> >> The patch below makes the first argument to atomicio an int rather than >> a function pointer. >> >> On the plus side: it also allows the removal of some hacks around >> vwrite/writev. On the minus side: it's a large change albeit mostly >> mechanical. > > > I tried building after applying the patch, but I think I started in the > wrong place? I think I started with a fresh git clone. I think you started with a tree which had one of the changes I suggested upthread ( where I suggest changing the line to: pfd.events = f == vwrite ? POLLOUT : POLLIN; > Also, the scp told me it couldn't find /usr/local/bin/ssh. I'm guessing > there are environment variables I need. you can work around that with "./configure --prefix=/usr" for testing, but don't do "make install" unless you really want to replace the system binaries in /usr/{bin,sbin} > atomicio.c:59:57: error: 'vwrite' undeclared (first use in this function) "vwrite" doesn't appear in the unmodified version of atomicio.c except in a comment. -- Darren Tucker (dtucker at zip.com.au) GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4 37C9 C982 80C7 8FF4 FA69 Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.