Are you extracting a fd from a libuv object then calling close or uv_poll
on it? Either would cause problems, and shouldn't be done.

On Sun, May 9, 2021 at 2:53 PM Jameson Nash <vtjn...@gmail.com> wrote:

> uv_poll_stop and uv_accept must happen on the same thread, so how are they
> racing? Once uv_poll_stop is called, it should be safe to notify another
> thread to call close, even if that then happens concurrently, as the kernel
> should be thread-safe (though weird things may happen in userspace if you
> close a fd that is concurrently in use on another thread or event queue).
>
> On Sun, May 9, 2021 at 1:24 PM Paul Romero <pa...@rcom-software.com>
> wrote:
>
>> Hi:
>>
>> Using TSAN did turn up one very signifcant problem. The root cause of the
>> TCP socket descriptor corrpution
>> is that accept4() executes concurrently in the main() task, with close()
>> in the Protocol_Task().
>>
>> As an interim measure I avoid the problem by simply not calling close().
>> So far this has worked
>> seemlesly and Libuv appears to automatically free socket descriptors. The
>> Libuv documentation
>> about this is somewhat ambiguous. It indicates that after calling
>> uv_poll_stop() or uv_close(),
>> for a particular uv_poll_t poll handle, the socket descriptor is returned
>> to the user per the Libuv
>> contract. I am not sure what that means, and in particular, if it means
>> the socket descriptor is freed.
>> Can you clarify this ?
>>
>> A tagential issue is whether Linux accept4() and close() are thread safe.
>> I believe they
>> are and the crucial data is protected in the kernel. Is it possible Libuv
>> is not handling the accept4()
>> return codes correctly ? The Linux accept4() man page details how errors
>> should be handled and is it
>> somewhat fussy. The Linux close() man page also details error handling
>> but it is straight forward.
>>
>> Also, I haven't been able to make the program compiled with TSAN dump
>> core. Do you have
>> any suggestions ? Incidentally, I had to use clang rather than the usual
>> gcc to get
>> TSAN to work on my system.
>>
>> Best Regards,
>>
>> Paul R.
>>
>> On 05/08/2021 08:51 AM, Jameson Nash wrote:
>>
>> Are you still accessing libuv (sans explicitly thread-safe functions such
>> as uv_async_send) from multiple threads, as you mentioned earlier? If so,
>> I'd suggest fixing that first. In conjunction, I recommend running TSan and
>> making sure it runs cleanly before checking for library or logic problems.
>> Then, if it is still a rare failure, I recommend debugging under `rr` as
>> you'll be able to run forward to the problem, then walk backwards through
>> the code to see what happened to your state and file descriptors.
>>
>>
>> On Sat, May 8, 2021 at 11:27 AM pa...@rcom-software.com <
>> pa...@rcom-software.com> wrote:
>>
>>> Hi:
>>>
>>> Addition to my last message.  When uv__nonblock() fails it is indicative
>>> of a Linux FIONBIO ioctl() failure. What would cause
>>> setting non-blocking mode to fail ?
>>>
>>> Best Regards,
>>>
>>> Paul R.
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "libuv" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to libuv+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> <https://groups.google.com/d/msgid/libuv/CADnnjUW6KL3OQw5C54aNfKh95z1OpQiq2bgVtXya8z_BeqMS9w%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> https://groups.google.com/d/msgid/libuv/CADnnjUW6KL3OQw5C54aNfKh95z1OpQiq2bgVtXya8z_BeqMS9w%40mail.gmail.com
>> .
>>
>>
>> --
>>
>>
>> Paul Romero
>> -----------
>> RCOM Communications Software
>> EMAIL: pa...@rcom-software.com
>> PHONE: (510)482-2769
>>
>>
>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "libuv" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to libuv+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/libuv/60981AE7.3000809%40rcom-software.com
>> <https://groups.google.com/d/msgid/libuv/60981AE7.3000809%40rcom-software.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to libuv+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/libuv/CADnnjUWfszx9K8FdGPwGD%3D_5C0s1QVrDkaJD2ML2%3DEygefFD_A%40mail.gmail.com.

Reply via email to