----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/1998/#review4681 -----------------------------------------------------------
Ship it! Ship It! - Steve Reinhardt On Sept. 6, 2013, 10:29 a.m., Mitch Hayenga wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/1998/ > ----------------------------------------------------------- > > (Updated Sept. 6, 2013, 10:29 a.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > ------- > > Fixes a race condition in the socket listen function. > > gem5 makes the incorrect assumption that by "binding" a socket, it > effectively has allocated a port. Linux only allocates ports once you call > listen on the given socket, not when you call bind. So even if the port was > free when bind was called, another process (gem5 instance) could race in > between the bind & listen calls and steal the port. In the current code, if > the call to bind fails due to the port being in use (EADDRINUSE), gem5 > retries for a different port. However if listen fails, gem5 just panics. The > fix is testing the return value of listen and re-trying if it was due to > EADDRINUSE. > > > Diffs > ----- > > src/base/socket.cc a317086a3e19 > > Diff: http://reviews.gem5.org/r/1998/diff/ > > > Testing > ------- > > Have been running with this patch since April, eliminated the race condition. > > > Thanks, > > Mitch Hayenga > > _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
