New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 913007 link

Starred by 0 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 729596



Sign in to add a comment

Background download resumption doesn't work without InProcessNetworkService turn on.

Project Member Reported by hanxi@chromium.org, Dec 7

Issue description

When network service runs in its own process, download resumption stops working. There are two things we observed and need to fix:

1) The DCHECK was hit in ServiceManagerContext::GetConnectorForIOThread(), while IO thread hasn't initialized.

2) Download task is hanging.
 
Cc: cduvall@chromium.org
Hi Min, could you help to investigate why the download task is hanging after resume? Thanks!
Cc: roc...@chromium.org
An update:
Min noticed when QueryAndStartServiceInUtilityProcess is called for NetworkService, the callback StartServiceInUtilityProcess never be called.

I think it is caused by the browsesr_connection (https://cs.chromium.org/chromium/src/content/browser/service_manager/service_manager_context.cc?rcl=de20dd4652d26cb6608e1c70fa02ccb0f79aae3c&l=703) which the connector (GetConnectorForIOThread()) comes from hasn't started yet. Due to the dependencies in ConnectionFilterImpl, we can't start the browser_connection early.

I tried to cache another connector and let it clone the |packaged_service_connection_| which has started when the ServiceManagerContext is created, but I hit lots of DCHECK of incorrect threads. Particularly, UtilityProcessHost and BrowserChildProcessHostImpl shouldn't check BrowserThread::IO. But I won't surprise there are more threading issue.

+Ken: am I on the right track? Do you have any better idea?
I don't understand what you mean by caching another connector and cloning packaged_service_connection_.

I think the right thing to do here is find a way to start the browser connection earlier by getting rid of its dependency on BrowserMainLoop state. As far as I can tell the only dependency there is for the DiscardableSharedMemoryManager. We could just have the ConnectionFilterImpl defer binding any requests for that interface until some later time, without blocking the rest of the filter's interfaces from being bound.
Status: Untriaged (was: Available)
Available, but no owner or component? Please find a component, as no one will ever find this without one.

Sign in to add a comment