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/CADnnjUVhyLDmxdxyyM5K1DL-%3DG6FK%3DY-OVE6ianUfpVC1AYeOQ%40mail.gmail.com.

Reply via email to