Am 20.02.2013 um 07:02 schrieb gl...@twistedmatrix.com:

> 
> On Feb 19, 2013, at 1:28 PM, Axel Rau <axel....@chaos1.de> wrote:
> 
>> Hi,
>> 
>> the break came from finding and reading "Unix Network Programming" by 
>> Stevens/Fenner/Rudoff. (-;
>> 
>> Am 14.02.2013 um 11:37 schrieb Fredrik Unger:
>> 
>>> From the top of my head I find it strange that just 3 bytes was received.
>>> If I remember correctly my tests sent more (with sendmsg).
>> I think, the reason is, that *no* ancillary data is being sent:
> 
> Like... no ancillary data is being *passed to sendmsg*?
Yes. My debug print at the beginning of sendmsg always shows 0.
>  Or no data is being received from recvmsg?  Does tracing the relevant 
> processes with something like strace or dtruss confirm this?  What process is 
> being debugged here; master, worker, or both?
Both, because the unpack error pointed at a platform/compatibility issue in 
sendmsg.c, which is used by all parts.
I will try to get a trace with dtruss.
> 
> The debug messages which you've added seem like they might be missing some 
> data, since they just truncate after 'return from sendmsg with', rather than 
> printing a string (even an empty one) after.
Yes, the code was not finished. should display sendmsg_result, which was always 
1. See attached diff.
> 
>> Without ancillary data, no fd can be shipped.
>> The only place where ancillary data could be provided seems to be
>> twext.internet.sendfdport._SubprocessSocket.doWrite.
>> I would be happy for any hint where to dig...
> 
> Well, hrm.  This code works fine on other platforms, so, one thing to check 
> would be to see if previous versions of the FreeBSD kernel have the same 
> issue.  What exact versions of everything are you testing?
8.2 and 9.1. Both show same bug.
> 
>> Axel
>> PS: sendmsg.c seems to be very fragile as debug code changes
>> behaviour of the system (i.e. it locks up after trying a http
>> connect and does not reach point of original exception)
> 
> This is too general of a comment to really be any use in debugging - but, 
> this code is extremely low-level and sensitive to any I/O that happens on its 
> socket.  Where are your debug messages going that are disrupting things?
To a file on disk.
> 
> I *really* don't know what you mean by "does not reach point of original 
> exception", though.  Can you elaborate?
With my debug code, the master process dies immediately on connect to the web 
server.
This does not happen, with the unmodified sendmsg.c.

> 
> -glyph
> 
Axel

Attachment: sendmsg.diff
Description: Binary data

---
PGP-Key:29E99DD6  ☀ +49 151 2300 9283  ☀ computing @ chaos claudius

_______________________________________________
calendarserver-dev mailing list
calendarserver-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/calendarserver-dev

Reply via email to