• jvoung's avatar
    PNaCl: Hold subprocess_mu while doing StartSrpcServices. · 7862c253
    jvoung authored
    StartSrpcServices will require using the service_runtime pointer,
    to set up the srpc_client pointer. So we cannot destroy the
    service_runtime at the same time.
    
    E.g., if I add a sleep() to induce the race, I get:
    
    ../../native_client/src/include/nacl_scoped_ptr.h:96: C *nacl::scoped_ptr<plugin::SelLdrLauncherChrome>::operator->() const [C = plugin::SelLdrLauncherChrome]: Assertion `ptr_ != __null' failed.
    Received signal 6
    #0 0x7f687f4aef7e base::debug::StackTrace::StackTrace()
    #1 0x7f687f4aeabf base::debug::(anonymous namespace)::StackDumpSignalHandler()
    #2 0x7f6879dee340 <unknown>
    #3 0x7f6876504cc9 gsignal
    #4 0x7f68765080d8 abort
    #5 0x7f68764fdb86 <unknown>
    #6 0x7f68764fdc32 __assert_fail
    #7 0x7f688e2887f2 nacl::scoped_ptr<>::operator->()
    #8 0x7f688e288487 plugin::ServiceRuntime::SetupAppChannel()
    #9 0x7f688e28cb76 plugin::NaClSubprocess::StartSrpcServices()
    #10 0x7f688e281810 plugin::PnaclTranslateThread::DoLink()
    #11 0x7f688e27fe7d plugin::PnaclTranslateThread::DoLinkThread()
    #12 0x7f6879de6182 start_thread
    #13 0x7f68765c847d clone
    
    Should have checked this in previous refactoring:
    https://codereview.chromium.org/1128943003
    
    BUG=473474
    
    Review URL: https://codereview.chromium.org/1128373005
    
    Cr-Commit-Position: refs/heads/master@{#329718}
    7862c253
pnacl_translate_thread.h 6.04 KB