From e3c9eb0cd9dded109deaa08df4da4ad1eb17a265 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 14 Jun 2018 05:09:00 -0400 Subject: [PATCH] Remove the shutdown hook when it's done --- main/src/main/scala/sbt/Main.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index 67bc59857..920a0c302 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -115,10 +115,20 @@ object StandardMain { val previous = TrapExit.installManager() try { try { - try { + val hooked = try { Runtime.getRuntime.addShutdownHook(shutdownHook) + true + } catch { + case _: IllegalArgumentException => false + } + try { MainLoop.runLogged(s) - } finally exchange.shutdown + } finally { + exchange.shutdown + if (hooked) { + Runtime.getRuntime.removeShutdownHook(shutdownHook) + } + } } finally DefaultBackgroundJobService.backgroundJobService.shutdown() } finally TrapExit.uninstallManager(previous) }