Index: src/js/_enqueues/wp/customize/nav-menus.js
===================================================================
--- src/js/_enqueues/wp/customize/nav-menus.js	(revision 45550)
+++ src/js/_enqueues/wp/customize/nav-menus.js	(working copy)
@@ -1876,12 +1876,15 @@
 			if ( ! setting ) {
 				return 0;
 			}
-			while ( setting && setting.menu_item_parent ) {
+			// Protect against bad recursive navigation menu data causing causing browser to freeze.
+			var seen_parents = {};
+			while ( setting && setting.menu_item_parent && ! seen_parents[setting.menu_item_parent] ) {
 				depth += 1;
 				control = api.control( 'nav_menu_item[' + setting.menu_item_parent + ']' );
 				if ( ! control ) {
 					break;
 				}
+				seen_parents[setting.menu_item_parent] = setting;
 				setting = control.setting();
 			}
 			return depth;
