Index: chrome/browser/service_process/service_process_control.cc |
diff --git a/chrome/browser/service_process/service_process_control.cc b/chrome/browser/service_process/service_process_control.cc |
index 193f1f08d97614e22ee4f5970f431b72e176dda8..c6eae8471ef531c31cda327e979838a51e61f6af 100644 |
--- a/chrome/browser/service_process/service_process_control.cc |
+++ b/chrome/browser/service_process/service_process_control.cc |
@@ -25,6 +25,22 @@ |
using content::BrowserThread; |
+namespace { |
+ |
+// Test: On Mac, launchd_msg_send tries to allocate a 10MB buffer, but doesn't |
+// handle errors and makes ugly crash dumps when close to OOM. |
+// TODO(vitalybuka): Remove after few Canary builds. |
+// See http://crbug.com/406227 |
+void AllocDebugTest() { |
+#if defined(OS_MACOSX) |
+ void* buffer = malloc(20 * 1024 * 1024); |
+ CHECK(buffer); |
+ free(buffer); |
+#endif // OS_MACOSX |
+} |
+ |
+} // namespace |
+ |
// ServiceProcessControl implementation. |
ServiceProcessControl::ServiceProcessControl() { |
} |
@@ -223,6 +239,7 @@ void ServiceProcessControl::OnHistograms( |
} |
void ServiceProcessControl::RunHistogramsCallback() { |
+ AllocDebugTest(); |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (!histograms_callback_.is_null()) { |
histograms_callback_.Run(); |
@@ -259,6 +276,7 @@ bool ServiceProcessControl::GetCloudPrintProxyInfo( |
bool ServiceProcessControl::GetHistograms( |
const base::Closure& histograms_callback, |
const base::TimeDelta& timeout) { |
+ AllocDebugTest(); |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DCHECK(!histograms_callback.is_null()); |
histograms_callback_.Reset(); |