From 46858cf2f6a847b2c5c56bbf3ca314512b3e9b0b Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sun, 24 May 2015 16:36:17 +0200 Subject: [PATCH] noux: exit with child Issue: #1408 --- repos/ports/run/noux.run | 2 +- repos/ports/src/noux/child.h | 3 +++ repos/ports/src/noux/terminal_io_channel.h | 6 +++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/repos/ports/run/noux.run b/repos/ports/run/noux.run index a3ffebab4f..dc1bc1cd29 100644 --- a/repos/ports/run/noux.run +++ b/repos/ports/run/noux.run @@ -56,6 +56,6 @@ if {[have_spec x86_64]} { append qemu_args " -m 300 " } -run_genode_until "child /bin/ls exited with exit value 0.*\n" 30 +run_genode_until {child "noux" exited with exit value 0.*\n} 30 exec rm bin/coreutils.tar diff --git a/repos/ports/src/noux/child.h b/repos/ports/src/noux/child.h index 3b7ae3d8a1..2a3084a079 100644 --- a/repos/ports/src/noux/child.h +++ b/repos/ports/src/noux/child.h @@ -388,6 +388,9 @@ namespace Noux { _sig_rec->dissolve(&_destruct_dispatcher); _entrypoint.dissolve(this); + + if (is_init_process(this)) + init_process_exited(); } void start() { _entrypoint.activate(); } diff --git a/repos/ports/src/noux/terminal_io_channel.h b/repos/ports/src/noux/terminal_io_channel.h index 7d32cdd8f0..f92df49f51 100644 --- a/repos/ports/src/noux/terminal_io_channel.h +++ b/repos/ports/src/noux/terminal_io_channel.h @@ -56,7 +56,11 @@ namespace Noux { } } - ~Terminal_io_channel() { sig_rec.dissolve(this); } + ~Terminal_io_channel() + { + try { sig_rec.dissolve(this); } + catch (Genode::Signal_receiver::Context_not_associated) { } + } bool write(Sysio *sysio, size_t &offset) override {