Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 12511)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 12512)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.DataIntegrityProblemException;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -535,6 +536,11 @@
                     addNewNode(e);
                 } else if (e.getPoint().distance(initialMousePos) > initialMoveThreshold && newN1en != null && selectedSegment != null) {
-                    // main extrusion commands
-                    performExtrusion();
+                    try {
+                        // main extrusion commands
+                        performExtrusion();
+                    } catch (DataIntegrityProblemException ex) {
+                        // Can occur if calling undo while extruding, see #12870
+                        Main.error(ex);
+                    }
                 }
             } else if (mode == Mode.translate || mode == Mode.translate_node) {
