I think I've worked out what's going on here. I've attached a patch - could you give it a try and see if works for you? When the user types in the search field, NSMenu looks for matching candidates by creating events to open each menu, trigger an update and read the results. If the search field already contains text, this happens as soon as the Help menu opens, either when the user clicks Help or mouse drags onto the Help menu. The code in ns_check_menu_open and ns_check_pending_open_menu that postpones mouse clicks (to fetch menus from Lisp) also tries to postpone these drag and search events. When it releases a delayed click on Help (even if the event wasn't a click to begin with), the menu reopens and the process loops. The attached patch gets around this by never postponing mouse drag or non-user mouse down events.