Team: Defer adding the team to parent and hash until just before starting.hrev51700
commit04c3bd6cf190ae0ae359433aab1cd131fa2e1e02
authorAugustin Cavalier <waddlesplash@gmail.com>
Wed, 20 Dec 2017 03:47:31 +0000 (19 22:47 -0500)
committerAugustin Cavalier <waddlesplash@gmail.com>
Wed, 20 Dec 2017 03:47:31 +0000 (19 22:47 -0500)
tree5dcf0f4a9bbfc0446a4602a215ac5f642296d2d2
parent4ecdf1e195452fa410065d0016adb70d47c5a9e9
Team: Defer adding the team to parent and hash until just before starting.

Previously I had intended to take the simpler route and just lock the
already-inserted team before setting the io_context (as in prior commits),
but after hearing some reports from users that some other seemingly
unrelated KDLs had possibly cleared up after the first iteration of
that fix, I decided to go with this route instead.

Now we do not insert the team into the parent and hash and send the
notification until just before the team's main thread is actually started;
i.e. we now initialize not only io_context but also the team's args, VM
address space, and user data (and if creation of any of these fails
we do not inset the team into the hash at all.)

Since the team structure was not locked at all while this initialization
was taking place, any number of race-dependent bugs could have been
caused by this on multicore systems.
src/system/kernel/team.cpp