On Jul 9, 2005, at 8:24 PM, Ben Kazez wrote:
Hi everyone,
I'm working on a Dashboard widget with a multi-threaded Cocoa plugin. The plugin seems to be working just fine, but I'm getting an occasional (frequent but inconsistent) crash that appears to indicate a bug in WebKit:
====================================================== Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000018
Thread 0 Crashed: 0 com.apple.WebCore 0x95c4a734 khtml::inlineWidth (khtml::RenderObject*, bool, bool) + 152 1 com.apple.WebCore 0x95c48b98 khtml::RenderBlock::findNextLineBreak(khtml::BidiIterator&, khtml::BidiState&) + 3548 2 com.apple.WebCore 0x95c46dbc khtml::RenderBlock::layoutInlineChildren(bool) + 1980 3 com.apple.WebCore 0x95c435d4 khtml::RenderBlock::layoutBlock(bool) + 692 4 com.apple.WebCore 0x95c4a49c khtml::RenderBlock::layoutPositionedObjects(bool) + 172 5 com.apple.WebCore 0x95c43930 khtml::RenderBlock::layoutBlock(bool) + 1552 6 com.apple.WebCore 0x95c4409c khtml::RenderBlock::layoutBlockChildren(bool) + 696 7 com.apple.WebCore 0x95c435ec khtml::RenderBlock::layoutBlock(bool) + 716 8 com.apple.WebCore 0x95c40524 khtml::RenderCanvas::layout() + 252 9 com.apple.WebCore 0x95c3fe08 KHTMLView::layout() + 792 10 com.apple.WebCore 0x95c52518 -[WebCoreBridge forceLayoutAdjustingViewSize:] + 56 11 com.apple.WebKit 0x959ce11c -[WebHTMLView layoutToMinimumPageWidth:maximumPageWidth:adjustingViewSize:] + 228 12 com.apple.WebKit 0x959e1328 -[WebHTMLView (WebPrivate) _web_layoutIfNeededRecursive] + 36 13 com.apple.WebKit 0x959cb8c0 -[WebHTMLView (WebPrivate) _propagateDirtyRectsToOpaqueAncestors] + 72 ... ======================================================
The crash is preceded by incorrect width of displayed divs, disappearing elements, or both. Does this seem to you to be a WebKit bug, or could there be a problem with my code?
It's hard to tell. This bug sounds likely to be some kind of memory trasher, so it may be that something is corrupting memory. Is your plugin calling WebKit APIs from multiple threads? WebKit is not threadsafe so that is one possible cause. Can you reproduce it with just a plain web page with no plugin? If so, it would definitely be a WebKit bug. Regards, Maciej