During `pending tracepoint' work, we find install_breakpoint calls update_global_location_list(1), which may throw error, and we have (at the end of create_break() ): /* That's it. Discard the cleanups for data inserted into the breakpoint. */ discard_cleanups (bkpt_chain); /* But cleanup everything else. */ do_cleanups (old_chain); /* error call may happen here - have BKPT_CHAIN already discarded. */ update_global_location_list (1); return 1; So, we should make sure that install_breakpoint called in create_breakpoint doesn't call update_global_location_list(1), so that update_global_location_list can be deferred to call at the end of create_breakpoint. In this patch, we add a new parameter to determine to call update_global_location_list. We pass 0 to install_breakpoint when it is used in create_breakpoint and its callee. -- Yao (齐尧)