| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. |
| |
| #include <lib/zx/exception.h> |
| |
| #include <gtest/gtest.h> |
| |
| #include "src/developer/forensics/exceptions/handler_manager.h" |
| #include "src/developer/forensics/exceptions/tests/crasher_wrapper.h" |
| #include "src/developer/forensics/testing/unit_test_fixture.h" |
| |
| namespace forensics { |
| namespace exceptions { |
| namespace { |
| |
| using ProcessLaunchFailureTest = UnitTestFixture; |
| |
| // The sandbox this test runs in is not permitted to launch processes so the handler subprocess will |
| // not be spawned. When this happens Handle should complete without issue, not loop forever. |
| // |
| // This is tested because we experienced an error where exceptions.cmx could not successfully launch |
| // subprocesses and ended up handling the same exception in an unterminated loop. For more |
| // information, see fxbug.dev/59246. |
| TEST_F(ProcessLaunchFailureTest, HandleOnlyOnce) { |
| HandlerManager handler_manager(dispatcher(), CrashCounter(&InspectRoot()), 1u, |
| zx::duration::infinite()); |
| handler_manager.Handle(zx::exception{}); |
| } |
| |
| } // namespace |
| } // namespace exceptions |
| } // namespace forensics |