The debugger currently stores breakpoint data as entries in a Vector (see BreakpointsInLine). It also keeps a fast map look up of breakpoint IDs to the breakpoint data (see m_breakpointIDToBreakpoint). Because a Vector can compact or reallocate it backing store, this can causes all sorts of havoc. The m_breakpointIDToBreakpoint assumes that the breakpoint data doesn't move in memory.
The fix is to replace the BreakpointsInLine Vector with a BreakpointsList doubly linked list.
Created attachment 234208 [details]
Comment on attachment 234208 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=234208&action=review
> + Breakpoint(Breakpoint& other)
Should be const&.
The compiler was complaining about:
while (breakpoint = removeHead())
Will add the parens.
Created attachment 234209 [details]
updated patch to make the EWS bots happy + Geoff's suggested fix.
Thanks. Patch with fixes land in r170677: <http://trac.webkit.org/r170677>.