Index: /trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java	(revision 11165)
+++ /trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java	(revision 11166)
@@ -18,4 +18,5 @@
 import javax.json.stream.JsonGenerator;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -119,5 +120,8 @@
         @Override
         public void visit(Relation r) {
-            if (r != null && r.isMultipolygon() && !r.hasIncompleteMembers()) {
+            if (r == null || !r.isMultipolygon() || r.hasIncompleteMembers()) {
+                return;
+            }
+            try {
                 final Pair<List<JoinedPolygon>, List<JoinedPolygon>> mp = MultipolygonBuilder.joinWays(r);
                 final JsonArrayBuilder polygon = Json.createArrayBuilder();
@@ -130,4 +134,7 @@
                 final JsonArrayBuilder multiPolygon = Json.createArrayBuilder().add(polygon);
                 geomObj.add("coordinates", multiPolygon);
+            } catch (MultipolygonBuilder.JoinedPolygonCreationException ex) {
+                Main.warn("GeoJSON: Failed to export multipolygon " + r.getUniqueId());
+                Main.warn(ex);
             }
         }
Index: /trunk/test/unit/org/openstreetmap/josm/io/GeoJSONWriterTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/GeoJSONWriterTest.java	(revision 11165)
+++ /trunk/test/unit/org/openstreetmap/josm/io/GeoJSONWriterTest.java	(revision 11166)
@@ -77,3 +77,17 @@
         }
     }
+
+    /**
+     * Unit test for exporting invalid multipolygons, see #13827
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testMultipolygonRobustness() throws Exception {
+        try (FileInputStream in = new FileInputStream("data_nodist/multipolygon.osm")) {
+            DataSet ds = OsmReader.parseDataSet(in, null);
+            final OsmDataLayer layer = new OsmDataLayer(ds, "foo", null);
+            final GeoJSONWriter writer = new GeoJSONWriter(layer);
+            assertTrue(writer.write().contains("MultiPolygon"));
+        }
+    }
 }
