Title: [138482] trunk/Source/WebCore
- Revision
- 138482
- Author
- [email protected]
- Date
- 2012-12-26 12:13:25 -0800 (Wed, 26 Dec 2012)
Log Message
[Mac] MemoryPressureHandler: Occasional crashes in uninstall() when responding to memory pressure signal.
<http://webkit.org/b/105772>
Reviewed by Stephanie Lewis.
We can't synchronously dereference _cache_event_source in uninstall() just because m_installed
is true -- the block that initializes _cache_event_source is asynchronous and may not have executed.
Fix this by performing the uninstallation asynchronously on the main queue as well.
* platform/mac/MemoryPressureHandlerMac.mm:
(WebCore::MemoryPressureHandler::uninstall):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (138481 => 138482)
--- trunk/Source/WebCore/ChangeLog 2012-12-26 19:49:59 UTC (rev 138481)
+++ trunk/Source/WebCore/ChangeLog 2012-12-26 20:13:25 UTC (rev 138482)
@@ -1,3 +1,17 @@
+2012-12-26 Andreas Kling <[email protected]>
+
+ [Mac] MemoryPressureHandler: Occasional crashes in uninstall() when responding to memory pressure signal.
+ <http://webkit.org/b/105772>
+
+ Reviewed by Stephanie Lewis.
+
+ We can't synchronously dereference _cache_event_source in uninstall() just because m_installed
+ is true -- the block that initializes _cache_event_source is asynchronous and may not have executed.
+ Fix this by performing the uninstallation asynchronously on the main queue as well.
+
+ * platform/mac/MemoryPressureHandlerMac.mm:
+ (WebCore::MemoryPressureHandler::uninstall):
+
2012-12-26 Sheriff Bot <[email protected]>
Unreviewed, rolling out r137905.
Modified: trunk/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm (138481 => 138482)
--- trunk/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm 2012-12-26 19:49:59 UTC (rev 138481)
+++ trunk/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm 2012-12-26 20:13:25 UTC (rev 138482)
@@ -85,15 +85,19 @@
if (!m_installed)
return;
- dispatch_source_cancel(_cache_event_source);
- dispatch_release(_cache_event_source);
- _cache_event_source = 0;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ if (_cache_event_source) {
+ dispatch_source_cancel(_cache_event_source);
+ dispatch_release(_cache_event_source);
+ _cache_event_source = 0;
+ }
- if (_timer_event_source) {
- dispatch_source_cancel(_timer_event_source);
- dispatch_release(_timer_event_source);
- _timer_event_source = 0;
- }
+ if (_timer_event_source) {
+ dispatch_source_cancel(_timer_event_source);
+ dispatch_release(_timer_event_source);
+ _timer_event_source = 0;
+ }
+ });
m_installed = false;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes