New issue
Advanced search Search tips

Issue 753935 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Fuchsia
Pri: 2
Type: Bug



Sign in to add a comment

StopWatchingFileDescriptor() has no effect on Fuchsia when called from the wait event handler

Project Member Reported by sergeyu@chromium.org, Aug 9 2017

Issue description

1. Create a FD handler with persistent=true
2. Wait for event
3. Call StopWatchingFileDescriptor() from the event handler
4. Observe that the event handler may be called again 

This breaks net::SocketPosix when running net_unittests:
[3:271014704:0809/203437.240578:4737429:FATAL:socket_posix.cc(410)] Check failed: !read_if_ready_callback_.is_null().

The problem seems to be that MessagePumpFuchsia sets FileDescriptorWatcher::handle_ to MX_HANDLE_INVALID when calling event handler. StopWatchingFileDescriptor() is noop when handle_=MX_HANDLE_INVALID.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Aug 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2e69d6b279dbad8092cb10342eea115de318bf15

commit 2e69d6b279dbad8092cb10342eea115de318bf15
Author: Sergey Ulanov <sergeyu@google.com>
Date: Sat Aug 12 17:22:57 2017

Fix StopWatchingFileDescriptor() for Fuchsia

Previously it wasn't possible to call StopWatchingFileDescriptor() 
and then reuse FileDescriptorWatcher in an event handler. Now 
StopWatchingFileDescriptor() call is handled the same way as
FileDescriptorWatcher destruction.

Also added a few unittests for FileDescriptorWatcher.

Bug:  753935 
Change-Id: If31a8037ea4e1f294969bf4a3b36ebe91e79c19c
Reviewed-on: https://chromium-review.googlesource.com/608983
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493981}
[modify] https://crrev.com/2e69d6b279dbad8092cb10342eea115de318bf15/base/message_loop/message_loop_io_posix_unittest.cc
[modify] https://crrev.com/2e69d6b279dbad8092cb10342eea115de318bf15/base/message_loop/message_pump_fuchsia.cc
[modify] https://crrev.com/2e69d6b279dbad8092cb10342eea115de318bf15/base/message_loop/message_pump_fuchsia.h

Status: Fixed (was: Started)

Sign in to add a comment