diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 5d3d3384a29b0447f760d706bf75be4504d80aaa..6ba76f55fbbc9dee0518b780e70a759204f78b11 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -14212,8 +14212,12 @@ void setColor(std::vector<int> tags[4], unsigned int val, bool recursive)
   if(GModel::current()->getOCCInternals() &&
      GModel::current()->getOCCInternals()->getChanged())
     GModel::current()->getOCCInternals()->synchronize(GModel::current());
-  if(GModel::current()->getGEOInternals()->getChanged())
-    GModel::current()->getGEOInternals()->synchronize(GModel::current());
+
+  // FIXME: sync in the middle of some geo files leads to crashes: disabling
+  // until I figure it out
+
+  //if(GModel::current()->getGEOInternals()->getChanged())
+  //    GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
   for(int dim = 0; dim < 4; dim++){
     for(unsigned int i = 0; i < tags[dim].size(); i++){
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index a55b82c2ce7829df7a8c37ff85d9e507fb8d4daf..68150ba2ff4bf21e756fb6bd9c5eca73f7e0b3f0 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -6739,8 +6739,12 @@ void setColor(std::vector<int> tags[4], unsigned int val, bool recursive)
   if(GModel::current()->getOCCInternals() &&
      GModel::current()->getOCCInternals()->getChanged())
     GModel::current()->getOCCInternals()->synchronize(GModel::current());
-  if(GModel::current()->getGEOInternals()->getChanged())
-    GModel::current()->getGEOInternals()->synchronize(GModel::current());
+
+  // FIXME: sync in the middle of some geo files leads to crashes: disabling
+  // until I figure it out
+
+  //if(GModel::current()->getGEOInternals()->getChanged())
+  //    GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
   for(int dim = 0; dim < 4; dim++){
     for(unsigned int i = 0; i < tags[dim].size(); i++){