Chromium Code Reviews| Index: chrome/browser/image_decoder_browsertest.cc |
| diff --git a/chrome/browser/image_decoder_browsertest.cc b/chrome/browser/image_decoder_browsertest.cc |
| index 19e5937b37e06dae83ec38372dcbb1a06da2b637..fc6e016e83f7d28aafbaf007db83c121ac39649b 100644 |
| --- a/chrome/browser/image_decoder_browsertest.cc |
| +++ b/chrome/browser/image_decoder_browsertest.cc |
| @@ -108,7 +108,12 @@ class KillProcessObserver : public content::BrowserChildProcessObserver { |
| #endif |
| // Use a non-zero exit code so it counts as a crash. |
| - EXPECT_TRUE(base::Process(handle).Terminate(1, true)); |
| + // Don't wait for the process after sending the termination signal |
| + // (SIGTERM). According to POSIX, doing so causes the resulting zombie to be |
| + // removed from the process table. However, Chromium treats an error on |
| + // |waitpid| (in this case, ECHILD) as a "normal" termination and doesn't |
| + // invoke the process host delegate's |OnProcessCrashed|. |
|
Lei Zhang
2015/05/12 02:23:24
nit: OnProcessCrashes()
Anand Mistry (off Chromium)
2015/05/12 03:12:20
Done. And I double-checked, it is OnProcessCrashed
|
| + EXPECT_TRUE(base::Process(handle).Terminate(1, false)); |
| did_kill_ = true; |
| } |
| @@ -157,8 +162,7 @@ IN_PROC_BROWSER_TEST_F(ImageDecoderBrowserTest, StartAndDestroy) { |
| // Note: This test is inherently racy because KillProcessObserver lives on the |
| // UI thread but ImageDecoder does its work mainly on the IO thread. So the test |
| // checks for both possible valid outcomes. |
| -// BUG(486194): Disabled due to flakyness. |
| -IN_PROC_BROWSER_TEST_F(ImageDecoderBrowserTest, DISABLED_StartAndKillProcess) { |
| +IN_PROC_BROWSER_TEST_F(ImageDecoderBrowserTest, StartAndKillProcess) { |
| KillProcessObserver observer; |
| scoped_refptr<content::MessageLoopRunner> runner = |
| new content::MessageLoopRunner; |