Index: binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs	(revision 190)
+++ binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs	(revision 192)
@@ -22,4 +22,5 @@
 		}
 
+		private static object lockObject = new object ();
 		private MapRenderBlockBuffer[] zoomLevelBuffers;
 		private Dictionary<Vector2i, Color[]> dirtyChunks = new Dictionary<Vector2i, Color[]> ();
@@ -33,8 +34,7 @@
 			Constants.MAP_DIRECTORY = StaticDirectories.GetSaveGameDir () + "/map";
 
-			if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
-				LoadMapInfo ();
-			} else {
-				WriteMapInfo ();
+			lock (lockObject) {
+				if (!LoadMapInfo ())
+					WriteMapInfo ();
 			}
 
@@ -55,5 +55,5 @@
 					try {
 						if (!Instance.renderingFullMap) {
-							lock (Instance.zoomLevelBuffers) {
+							lock (lockObject) {
 								Chunk c = (Chunk)o;
 								Vector3i cPos = c.GetWorldPos ();
@@ -100,5 +100,5 @@
 			);
 
-			lock (Instance.zoomLevelBuffers) {
+			lock (lockObject) {
 				for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
 					zoomLevelBuffers [i].ResetBlock ();
@@ -172,5 +172,5 @@
 		private void TimedRendering (object source, System.Timers.ElapsedEventArgs e)
 		{
-			lock (zoomLevelBuffers) {
+			lock (lockObject) {
 				RenderDirtyChunks ();
 				if (dirtyChunks.Count > 0)
@@ -251,17 +251,25 @@
 		}
 
-		private void LoadMapInfo ()
+		private bool LoadMapInfo ()
 		{
 			if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
 				string json = File.ReadAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", Encoding.UTF8);
-				JSONNode node = Parser.Parse (json);
-				if (node is JSONObject) {
-					JSONObject jo = (JSONObject)node;
-					if (jo.ContainsKey ("blockSize"))
-						Constants.MAP_BLOCK_SIZE = ((JSONNumber)jo ["blockSize"]).GetInt ();
-					if (jo.ContainsKey ("maxZoom"))
-						Constants.ZOOMLEVELS = ((JSONNumber)jo ["maxZoom"]).GetInt () + 1;
-				}
-			}
+				try {
+					JSONNode node = Parser.Parse (json);
+					if (node is JSONObject) {
+						JSONObject jo = (JSONObject)node;
+						if (jo.ContainsKey ("blockSize"))
+							Constants.MAP_BLOCK_SIZE = ((JSONNumber)jo ["blockSize"]).GetInt ();
+						if (jo.ContainsKey ("maxZoom"))
+							Constants.ZOOMLEVELS = ((JSONNumber)jo ["maxZoom"]).GetInt () + 1;
+						return true;
+					}
+				} catch (MalformedJSONException e) {
+					Log.Out ("Exception in LoadMapInfo: " + e);
+				} catch (InvalidCastException e) {
+					Log.Out ("Exception in LoadMapInfo: " + e);
+				}
+			}
+			return false;
 		}
 
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs	(revision 190)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs	(revision 192)
@@ -20,5 +20,5 @@
 		public void Update (PlayerDataFile pdf)
 		{
-			Log.Out ("Updating player inventory - player id: " + pdf.id);
+			//Log.Out ("Updating player inventory - player id: " + pdf.id);
 			ProcessInv (bag, pdf.bag);
 			ProcessInv (belt, pdf.inventory);
