Critical bug in MCServer
#8
Okay, I dug really deep into this and I think it's working out nicely. I've decided to make a shared pointer to cChunk to be the entity that is passed to and from routines. I'm thread-locking everything up to protect against race conditions. This also requires that many of the interface functions be rewritten. The changes are really massive, I think I've re-written about 30 % of the entire codebase by now, and still not finished. I hope no-one commits anything big to the repository right now, or else I'll choke on the conflictsTongue

The main idea that I'm trying to implement is that the code doesn't get a direct cChunk pointer anywhere. Anyone asking for a chunk will get a shared pointer, and a valid one. This way there's no problem with a thread accessing a chunk when another thread has deleted it. However, it requires that all code checks the returned pointer whether the chunk is valid (loaded / generated) and act accordingly if it is not.

I've run into a few cases that'll need rewriting for thread safety as well - clients in a server, entities in a world, block entities in a chunk - these all will need a similar set of changes in the near future. I'm leaving them as-is for now - it worked till now, it'll probably still work, though with the occasional danger of a crash.
Thanks given by:


Messages In This Thread
Critical bug in MCServer - by FakeTruth - 01-01-2012, 02:21 PM
RE: Critical bug in MCServer - by mtilden - 01-01-2012, 11:05 PM
RE: Critical bug in MCServer - by Lapayo - 01-01-2012, 11:47 PM
RE: Critical bug in MCServer - by FakeTruth - 01-02-2012, 12:21 AM
RE: Critical bug in MCServer - by xoft - 02-08-2012, 11:44 PM
RE: Critical bug in MCServer - by FakeTruth - 02-09-2012, 12:23 AM
RE: Critical bug in MCServer - by xoft - 02-09-2012, 03:26 AM
RE: Critical bug in MCServer - by xoft - 02-10-2012, 01:44 AM
RE: Critical bug in MCServer - by FakeTruth - 02-10-2012, 02:05 AM
RE: Critical bug in MCServer - by xoft - 02-10-2012, 07:28 AM
RE: Critical bug in MCServer - by xoft - 02-13-2012, 05:46 AM
RE: Critical bug in MCServer - by tbar - 02-13-2012, 07:53 PM
RE: Critical bug in MCServer - by xoft - 02-14-2012, 07:59 AM
RE: Critical bug in MCServer - by tbar - 02-14-2012, 06:35 PM
RE: Critical bug in MCServer - by xoft - 02-14-2012, 11:10 PM
RE: Critical bug in MCServer - by FakeTruth - 02-14-2012, 09:29 PM
RE: Critical bug in MCServer - by FakeTruth - 02-14-2012, 11:41 PM
RE: Critical bug in MCServer - by xoft - 02-14-2012, 11:53 PM
RE: Critical bug in MCServer - by FakeTruth - 02-15-2012, 12:00 AM
RE: Critical bug in MCServer - by xoft - 02-15-2012, 12:24 AM
RE: Critical bug in MCServer - by FakeTruth - 02-15-2012, 12:38 AM
RE: Critical bug in MCServer - by xoft - 02-15-2012, 03:05 AM
RE: Critical bug in MCServer - by NiLSPACE - 02-15-2012, 03:18 AM
RE: Critical bug in MCServer - by FakeTruth - 02-15-2012, 05:16 AM
RE: Critical bug in MCServer - by xoft - 02-15-2012, 06:36 AM
RE: Critical bug in MCServer - by FakeTruth - 02-15-2012, 07:10 AM
RE: Critical bug in MCServer - by xoft - 02-15-2012, 07:14 AM
RE: Critical bug in MCServer - by FakeTruth - 02-15-2012, 07:26 AM
RE: Critical bug in MCServer - by FakeTruth - 02-15-2012, 11:22 PM
RE: Critical bug in MCServer - by Boo - 02-16-2012, 04:08 PM
RE: Critical bug in MCServer - by xoft - 02-16-2012, 07:37 PM
RE: Critical bug in MCServer - by Boo - 02-16-2012, 08:26 PM
RE: Critical bug in MCServer - by FakeTruth - 02-16-2012, 08:57 PM
RE: Critical bug in MCServer - by Boo - 02-16-2012, 09:32 PM
RE: Critical bug in MCServer - by FakeTruth - 02-16-2012, 09:57 PM



Users browsing this thread: 2 Guest(s)