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..01785b3a5a3fc4ed497762466b794f243cdda6fb 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 kill signal. According to |
Lei Zhang
2015/05/11 23:09:19
By 'kill signal', did you mean SIGTERM?
Anand Mistry (off Chromium)
2015/05/12 00:05:31
Yes.
|
+ // 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 detegate's |OnProcessCrashed|. |
Lei Zhang
2015/05/11 23:09:19
nit: typo
Anand Mistry (off Chromium)
2015/05/12 00:05:31
Done.
|
+ EXPECT_TRUE(base::Process(handle).Terminate(1, false)); |
Lei Zhang
2015/05/11 23:09:19
Maybe we should post this to the IO thread, so the
Anand Mistry (off Chromium)
2015/05/12 00:05:31
I don't think it's possible for the two to race. I
Lei Zhang
2015/05/12 02:23:24
I was thinking if we had left this as true, then t
|
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; |