I would have bet on #2 as well but everything is typed NSUInteger (same as the 
docs) and, when I NSLog the relevant sizes, sending and receiving, they all 
come back as 4 bytes.

I do not know how to "attach" to the producing process.  When NSFileHandle 
writeData takes off, the Xcode debugger goes completely blank (no stack trace 
or variables).


On 4/9/10 2:25 PM, "Dave Keck" <davek...@gmail.com> wrote:

> I am not getting an error; it just hangs.

This is the classic sign that the pipe's buffer is full and that your
consuming process isn't reading the available data from the pipe. If
you attach to the producing process, I would expect its stack trace to
look like:

#0 0x95030c7e in write$UNIX2003
#1 0x93ea84a9 in -[NSConcreteFileHandle writeData:]
...

Is this the case? Assuming it is, perhaps:

    1. The value of 'sz' is incorrect at the call to -sendData:?
    2. Your consumer is treating 'sz' as the wrong type (likely a short)?

I'd put my money on #2. Treating an NSUInteger with a value of >=
65536 as a short will result in the most significant two bytes being
lost, thus your consumer will be reading very little amounts of data
relative to the available data, and your producer will hang waiting
for the buffer to be cleared.



--
Mike McLaughlin
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to