• Hans Fugal's avatar
    (wangle) fix a race in whenAll · 20dfb55a
    Hans Fugal authored
    Summary:
    Race in `++ctx->count == ctx->total`. This ordering, while not very obvious or likely, is possible:
    
    T1            T2
    --            --
    ++ctx->count
    ++ctx->count
    ctx->total
    ==
    setValue
    delete ctx
    ctx->total
    ==
    setValue
    delete ctx
    
    Test Plan:
    That's the idea, anyway. I need some sleep, and it takes 20 minutes to build and test. I had a more convoluted fix (using `shared_ptr`) and it did seem to fix the error we were seeing, but I was seeing another error.
    
    Reviewed By: darshan@fb.com
    
    Subscribers: trunkagent, net-systems@, fugalh, exa, njormrod, folly-diffs@
    
    FB internal diff: D1660663
    
    Tasks: 5506504
    
    Signature: t1:1660663:1415207632:49dc224363cec27736fc71fb211fa846be9e170f
    
    Blame Revision: D1636487
    20dfb55a
Future-inl.h 15.8 KB