Reading the size of the accesses vector races with pushing items into the vector. The pushing is done under a lock, but reading the size was not done under a lock, and doing so is considered a data race (there are no guarantees on what the size will return while the vector is being modified). This only applies to the case when subpipelines are accessed in new tasks, not inline, but I've added the lock for both cases to keep things simple. See https://gitlab.com/cscs-ci/ci-testing/webhook-ci/mirrors/4700071344751697/7514005670787789/-/jobs/6223967358 (view the full log) for the report by thread sanitizer.
Reading the size of the
accesses
vector races with pushing items into the vector. The pushing is done under a lock, but reading the size was not done under a lock, and doing so is considered a data race (there are no guarantees on what the size will return while the vector is being modified). This only applies to the case when subpipelines are accessed in new tasks, not inline, but I've added the lock for both cases to keep things simple. See https://gitlab.com/cscs-ci/ci-testing/webhook-ci/mirrors/4700071344751697/7514005670787789/-/jobs/6223967358 (view the full log) for the report by thread sanitizer.