Chromium Code Reviews| Index: chrome/app/chrome_exe_main_win.cc |
| =================================================================== |
| --- chrome/app/chrome_exe_main_win.cc (revision 157020) |
| +++ chrome/app/chrome_exe_main_win.cc (working copy) |
| @@ -21,14 +21,18 @@ |
| public: |
| static void NTAPI UpdateCount(PVOID module, DWORD reason, PVOID reserved) { |
| if (reason == DLL_THREAD_ATTACH) { |
| - if (::InterlockedIncrement(&count_) > cap_) |
| - __debugbreak(); |
| + if (::InterlockedIncrement(&count_) > cap_) { |
| + cap_ = LONG_MAX; |
| + // We schedule a callback, because the loader would eat an exception. |
| + ::QueueUserAPC(CrashProcessCallback, ::GetCurrentThread(), NULL); |
| + } |
| } else if (reason == DLL_THREAD_DETACH) { |
| ::InterlockedDecrement(&count_); |
| } |
| } |
| static void SetCap(LONG cap) { cap_ = cap; } |
| + static void CALLBACK CrashProcessCallback(ULONG_PTR) { __debugbreak(); } |
|
cpu_(ooo_6.6-7.5)
2012/09/16 00:19:10
move to private
|
| private: |
| static LONG volatile count_; |