On May 24, 2011, at 09:31 , Darin Adler wrote:

> On May 24, 2011, at 6:56 AM, Raphael Kubo da Costa wrote:

>>> we should fix it by making some better relationship between the Document 
>>> and DocumentLoader that guarantees we won’t have a dangling pointer. Either 
>>> reference counting to keep the object alive, or code to zero out the 
>>> pointer at some point before the object is deleted.
>> 
>> r80507 added a check for m_frame before using it (Document also has a raw 
>> Frame pointer). Perhaps the same should be done here?
> 
> That fix is not a good quality one. It’s a fragile approach. The relationship 
> of a document to its frame is that the association between the two is 
> explicitly broken by the detach function in document. But it’s not clear this 
> is the right way to break the association with a document loader. Here are 
> three specific points:
> 
>    1) It’s poor design that the document grabs and keeps a pointer to the 
> document loader in its constructor. The document is not in a position to 
> monitor the lifetime of the loader. It would be far more maintainable if the 
> same code/class both set up and maintained the pointer.
> 
>    2) It's not clear that detach time is the right moment to invalidate the 
> pointer from a document to its document loader. It would be better to study 
> the lifetime of document loader and loading process to get a clearer idea of 
> exactly what the right time is and what the best relationship between these 
> objects is.
> 
>    3) Keeping a dangling m_documentLoader pointer around with no guarantee 
> that it points to a live object is a bad design pattern. If the loader is no 
> longer valid when the document is not associated with a frame, then right way 
> to deal with that is to zero out m_documentLoader in the detach function, not 
> to check m_frame each time before checking m_documentLoader.
> 
> This fragile design was introduced just three months ago in 
> <http://trac.webkit.org/changeset/78342>. It might be worth asking Nate 
> Chapin or Adam Barth if they had some plans for further refinement. They may 
> have overlooked these design mistakes, but it’s likely they have future plans 
> that will rectify this.
> 
> Maybe we could continue this discussion in a bug report?

We now have crash report data showing that this is hitting the Mac port in the 
field.

I filed https://bugs.webkit.org/show_bug.cgi?id=61494

At this point, I will be working to see how easy it is to simply roll out 78342 
since it was only refactoring and not fixing any particular bug.

~Brady

> 
>    -- Darin
> 
> _______________________________________________
> webkit-dev mailing list
> [email protected]
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to