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) }