[lldb-dev] ConnectionFileDescriptor and thread safety

Zachary Turner zturner at google.com
Thu Oct 2 15:25:02 PDT 2014


Ahh, sorry.  Ignore this most recent post.  That's in the Disconnect
method.  The initial questions still stand though.

On Thu, Oct 2, 2014 at 3:23 PM, Zachary Turner <zturner at google.com> wrote:

> There's a comment that says this:
>
>     // Try to get the ConnectionFileDescriptor's mutex.  If we fail, that
> is quite likely
>     // because somebody is doing a blocking read on our file descriptor.
> If that's the case,
>     // then send the "q" char to the command file channel so the read will
> wake up and the connection
>     // will then know to shut down.
>
> This is a little confusing to me.  Thread A does a blocking read.  Thread
> B tries to do another blocking read.  The correct way to handle that is by
> shutting down the connection?  Is this an actual intended use case, or just
> trying to handle some sort of exceptional condition?
>
> On Thu, Oct 2, 2014 at 2:22 PM, Zachary Turner <zturner at google.com> wrote:
>
>> What are the thread safety assumptions of ConnectionFileDescriptor?
>> There's a mutex in ConnectionFileDescriptor::Read(), but it almost seems
>> pointless.  All it does is do a TryLock() and then return an error if it
>> fails.  I sincerely doubt anyone is actually handling this error, so this
>> implies to me that it's intended to not be used concurrently from multiple
>> threads and this is just used to catch the error in case anyone messes up.
>>
>> But this leads to something else that I don't understand.  Do we actually
>> care to support regular on-disk files with this class, or do we only care
>> about sockets and pipes?  We do seem to have support for a file://PATH
>> connection string, so someone thinks this is useful.  But how would it even
>> work without being able to either seek or specify the offset?  Are you
>> expected to use a different fd for the reading and writing side and never
>> mix calls to Read() and Write() on the same Connection instance?  If so,
>> maybe we need to make this explicit with InboundConnection and
>> OutboundConnection or something like that.
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20141002/75b36ed1/attachment.html>


More information about the lldb-dev mailing list