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

Issue 716480 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Apr 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

Flake in org.chromium.net.smoke.Http2Test#testHttp2

Project Member Reported by mge...@chromium.org, Apr 28 2017

Issue description

Example: https://build.chromium.org/p/tryserver.chromium.android/builders/android_cronet_tester/builds/1368

c7ade:  04-28 14:38:04.399 11026 11042 W System.err: java.lang.NullPointerException
c7ade:  04-28 14:38:04.399 11026 11042 W System.err: 	at org.chromium.net.impl.CronetUrlRequestContext.stopNetLogCompleted(CronetUrlRequestContext.java:307)
c7ade:  04-28 14:38:04.399 11026 11042 W System.err: 	at dalvik.system.NativeStart.run(Native Method)

signal 6 (SIGABRT) at 0x00002b12 (code=-6), thread 11042 (network)
pid: 11026, tid: 11042, name: network  >>> org.chromium.net <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
     r0 00000000  r1 00002b22  r2 00000006  r3 00000000
     r4 00000006  r5 00000000  r6 00002b22  r7 0000010c
     r8 76e2ad28  r9 76e2ae3c  sl 76d26b5c  fp 76e2b270
     ip 76e2ace0  sp 76e2ac80  lr 400d8fe5  pc 400e7f90

Stack Trace:
  RELADDR   FUNCTION                                                                                          FILE:LINE
  00021f90  tgkill+12                                                                                         /system/lib/libc.so
  00012fe1  pthread_kill+48                                                                                   /system/lib/libc.so
  000131f5  raise+10                                                                                          /system/lib/libc.so
  00011f2b  <unknown>                                                                                         /system/lib/libc.so
  00021844  abort+4                                                                                           /system/lib/libc.so
  v------>  DebugBreak                                                                                        /b/build/slave/android_cronet_tester/build/src/base/debug/debugger_posix.cc:221
  0004ebe7  base::debug::BreakDebugger()+18                                                                   /b/build/slave/android_cronet_tester/build/src/base/debug/debugger_posix.cc:251
  00064a9f  logging::LogMessage::~LogMessage()+850                                                            /b/build/slave/android_cronet_tester/build/src/base/logging.cc:783
  0003d03b  base::android::CheckException(_JNIEnv*)+126                                                       /b/build/slave/android_cronet_tester/build/src/base/android/jni_android.cc:243
  v------>  jni_generator::CheckException(_JNIEnv*)                                                           /b/build/slave/android_cronet_tester/build/src/base/android/jni_generator/jni_generator_helper.h:42
  v------>  Java_CronetUrlRequestContext_stopNetLogCompleted                                                  /b/build/slave/android_cronet_tester/build/src/out/Debug/gen/components/cronet/android/cronet_jni_headers/cronet/jni/CronetUrlRequestContext_jni.h:289
  0003155b  cronet::CronetURLRequestContextAdapter::StopNetLogCompleted()+138                                 /b/build/slave/android_cronet_tester/build/src/components/cronet/android/cronet_url_request_context_adapter.cc:1043
  000439b9  base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() &&+80  /b/build/slave/android_cronet_tester/build/src/base/callback.h:91
  000a762f  base::(anonymous namespace)::PostTaskAndReplyRelay::RunReplyAndSelfDestruct()+102                 /b/build/slave/android_cronet_tester/build/src/base/threading/post_task_and_reply_impl.cc:60
  v------>  base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() &&     /b/build/slave/android_cronet_tester/build/src/base/callback.h:91
  0004f5df  base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*)+602                          /b/build/slave/android_cronet_tester/build/src/base/debug/task_annotator.cc:59
  0006ba53  base::MessageLoop::RunTask(base::PendingTask*)+442                                                /b/build/slave/android_cronet_tester/build/src/base/message_loop/message_loop.cc:423
  0006beb9  base::MessageLoop::DeferOrRunPendingTask(base::PendingTask)+28                                    /b/build/slave/android_cronet_tester/build/src/base/message_loop/message_loop.cc:434
  0006bfa3  base::MessageLoop::DoWork()+144                                                                   /b/build/slave/android_cronet_tester/build/src/base/message_loop/message_loop.cc:527
  0006e559  base::MessagePumpLibevent::Run(base::MessagePump::Delegate*)+68                                   /b/build/slave/android_cronet_tester/build/src/base/message_loop/message_pump_libevent.cc:219
  0006d309  base::MessageLoop::RunHandler()+168                                                               /b/build/slave/android_cronet_tester/build/src/base/message_loop/message_loop.cc:387
  0008920b  base::RunLoop::Run()+86                                                                           /b/build/slave/android_cronet_tester/build/src/base/run_loop.cc:37
  000abfc7  base::Thread::Run(base::RunLoop*)+126                                                             /b/build/slave/android_cronet_tester/build/src/base/threading/thread.cc:250
  000accfb  base::Thread::ThreadMain()+686                                                                    /b/build/slave/android_cronet_tester/build/src/base/threading/thread.cc:333
  000a7455  base::(anonymous namespace)::ThreadFunc(void*)+60                                                 /b/build/slave/android_cronet_tester/build/src/base/threading/platform_thread_posix.cc:71
  0000d170  __thread_entry+72                                                                                 /system/lib/libc.so
  0000d308  pthread_create+240                                                                                /system/lib/libc.so
 
Owner: kapishnikov@chromium.org
Status: Started (was: Untriaged)
I think there is a race condition here:

    @Override
    public void stopNetLog() {
        synchronized (mLock) {
            if (!mIsLogging) {
                return;
            }
            checkHaveAdapter();
            nativeStopNetLog(mUrlRequestContextAdapter);
            mIsLogging = false;
            mStopNetLogCompleted = new ConditionVariable();
        }
        mStopNetLogCompleted.block();
    }

    @CalledByNative
    public void stopNetLogCompleted() {
        mStopNetLogCompleted.open();
    }

stopNetLog() is called on the user thread; however, stopNetLogCompleted() is called on the network thread as the consequence of nativeStopNetLog() call. I think we should call "mStopNetLogCompleted = new ConditionVariable()" before calling nativeStopNetLog().

I will fix it.
Project Member

Comment 2 by bugdroid1@chromium.org, Apr 28 2017

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

commit 4e899699e945d5b065580d2bd42f59e6ea09879e
Author: kapishnikov <kapishnikov@chromium.org>
Date: Fri Apr 28 17:43:38 2017

Cronet: fix flaky Http2Test#testHttp2

BUG= 716480 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester

Review-Url: https://codereview.chromium.org/2848903003
Cr-Commit-Position: refs/heads/master@{#468049}

[modify] https://crrev.com/4e899699e945d5b065580d2bd42f59e6ea09879e/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java

Status: Fixed (was: Started)

Sign in to add a comment