[Webkit-unassigned] [Bug 31086] New: Carbon WebKit plugins wreak havoc in Firefox
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Nov 3 14:28:33 PST 2009
https://bugs.webkit.org/show_bug.cgi?id=31086
Summary: Carbon WebKit plugins wreak havoc in Firefox
Product: WebKit
Version: 528+ (Nightly build)
Platform: Macintosh
OS/Version: Mac OS X 10.5
Status: NEW
Severity: Normal
Priority: P2
Component: New Bugs
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: smichaud at pobox.com
For some time crashes at IdleTimerVector have been close to the top of
the Mozilla topcrasher list on OS X. For example see
http://crash-stats.mozilla.com/query/query?version=ALL%3AALL&platform=mac&date=&range_value=1&range_unit=weeks&query_search=signature&query_type=exact&query=&do_query=1.
IdleTimerVector (in the HIToolbox framework) is what's called by the
OS as a result of using InstallEventLoopIdleTimer()
(http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/Carbon_Event_Manager_Ref/Reference/reference.html#//apple_ref/doc/uid/TP30000135-CH1g-CJBJCEJJ)
to install an "idle timer".
The Mozilla tree doesn't contain any calls to
InstallEventLoopIdleTimer(). But this *is* called by
DivXBrowserPlugin (http://www.divx.com/). And 100% of the
IdleTimerVector crashes are associated with this module.
DivXBrowserPlugin is a Carbon app that uses WebKit. There aren't too
many of these (DivXBrowserPlugin is the only one I can find).
Moreover it doesn't call InstallEventLoopIdleTimer() directly --
instead it calls WebInitForCarbon() (in the WebKit) and it's the
latter that calls InstallEventLoopIdleTimer(). The WebKit framework
is also 100% associated with the IdleTimerVector crashes.
(For information on the correlation of FF crashes with particular
modules, see the following links:
http://people.mozilla.org/~dbaron/crash-stats/20090929-interesting-modules
http://people.mozilla.com/crash_analysis/)
It turns out these crashes are caused by what happens in WebKit's
PoolCleaner() function -- the target of the "idle timer" installed by
WebInitForCarbon(). They should happen in any Cocoa browser that
loads a Carbon WebKit plugin, unless the browser takes certain
precautions (i.e. unless it does something to "disable"
PoolCleaner()).
The IdleTimerVector crashes don't happen on OS X 10.6 and above --
where PoolCleaner() is already disabled by changes to the Foundation
framework's NSPushAutoreleasePool() and NSPopAutoreleasePool()
functions.
This is discussed in much more detail at
https://bugzilla.mozilla.org/show_bug.cgi?id=509130.
I've proposed a patch there that works around the bug in Firefox. And
Safari already works around the problem in a different way (see
https://bugzilla.mozilla.org/show_bug.cgi?id=509130#c42).
But it'd be nice to get this problem fixed at the source, in WebKit
code.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list