Index: content/child/child_thread.cc |
diff --git a/content/child/child_thread.cc b/content/child/child_thread.cc |
index f5061bfe16c5432c278bcd7bc0b3f0d4a751b52b..6eba0c83ede89f9208f3c9a259fa1c2d79e1b3f4 100644 |
--- a/content/child/child_thread.cc |
+++ b/content/child/child_thread.cc |
@@ -75,7 +75,11 @@ class SuicideOnChannelErrorFilter : public IPC::ChannelProxy::MessageFilter { |
// handlers. SIGALRM has a default disposition of terminating the |
// application. |
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kChildCleanExit)) |
- alarm(30); |
+ // FIXME(asharif): This is wrong code. We cannot call exit() in a |
+ // multi-threaded environment. However, simply having a return statement |
+ // here causes a deadlock or abort because of the same thread tries to |
+ // acquire the same lock twice. See: crbug.com/263594 |
+ exit(0); |
else |
_exit(0); |
} |