New issue
Advanced search Search tips

Issue 921056 link

Starred by 1 user

Issue metadata

Status: Untriaged
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , iOS , Chrome , Mac , Fuchsia
Pri: 3
Type: Bug

Blocking:
issue 921713



Sign in to add a comment

[Cronet] Native UrlRequestTest.GetStatus is flaky.

Project Member Reported by mef@chromium.org, Jan 11

Issue description

There is a race between test thread and test callback invoked on the network thread.

The test has a loop:

  do {
    buffer = Cronet_Buffer_Create();
    Cronet_Buffer_InitWithAlloc(buffer, 100);
    Cronet_UrlRequest_Read(request, buffer);
    // Verify that late calls to GetStatus() don't invoke OnStatus() after
    // final callbacks.
    GetRequestStatus(request, &test_callback);
    test_callback.WaitForNextStep();
  } while (!test_callback.IsDone());

That is gated on test callback getting invoked and response being done.

The problem is that OnSucceeded callback first signals that next step can proceed (from MaybeCancelOrPause()) and afterwards signals done:

  MaybeCancelOrPause(request);
  SignalDone();

If test thread checks test_callback.IsDone() before OnSucceeded() signals it, then loop continues and calls Cronet_UrlRequest_Read() which signals Cronet_RESULT_ILLEGAL_STATE_UNEXPECTED_READ.

 
Blocking: 921713
Labels: Enterprise-Triaged

Sign in to add a comment