| 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..d9350dec04185956e39e6e47be7b933875b653ed 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().
|
| + 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;
|
|
|