IOException should not be reported with ERROR or WARN level in IDEA logger.
If you use ERROR/WARN levels, the situation is treated as programming error, and we get automatic reports about that.
But this situation is part of normal behavior, user should be notified, and/or LOG level used.
Cannot run program "/home/anatoly/.cabal/bin/ghc-modi" (in directory "/home/anatoly/IdeaProjects/Test"): error=2, No such file or directory
java.io.IOException: Cannot run program "/home/anatoly/.cabal/bin/ghc-modi" (in directory "/home/anatoly/IdeaProjects/Test"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at org.jetbrains.haskell.util.ProcessRunner.getProcess(ProcessRunner.kt:61)
at org.jetbrains.haskell.external.GhcModi.startProcess(GhcModi.kt:63)
at org.jetbrains.haskell.external.GhcModi.runCommand(GhcModi.kt:93)
at org.jetbrains.haskell.external.HaskellExternalAnnotator.getResultFromGhcModi(HaskellExternalAnnotator.kt:97)
at org.jetbrains.haskell.external.HaskellExternalAnnotator.doAnnotate(HaskellExternalAnnotator.kt:166)
at org.jetbrains.haskell.external.HaskellExternalAnnotator.doAnnotate(HaskellExternalAnnotator.kt:34)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:184)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.access$500(ExternalToolPass.java:46)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:126)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:298)
at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:295)
at com.intellij.util.concurrency.QueueProcessor$2$1.run(QueueProcessor.java:110)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:107)
at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:104)
at com.intellij.util.concurrency.QueueProcessor$3$1.run(QueueProcessor.java:215)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.concurrency.QueueProcessor$3.run(QueueProcessor.java:212)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:364)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:55)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.$$YJP$$forkAndExec(Native Method)
at java.lang.UNIXProcess.forkAndExec(UNIXProcess.java)
at java.lang.UNIXProcess.(UNIXProcess.java:248)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 35 more
IOException should not be reported with ERROR or WARN level in IDEA logger. If you use ERROR/WARN levels, the situation is treated as programming error, and we get automatic reports about that.
But this situation is part of normal behavior, user should be notified, and/or LOG level used.
Cannot run program "/home/anatoly/.cabal/bin/ghc-modi" (in directory "/home/anatoly/IdeaProjects/Test"): error=2, No such file or directory
java.io.IOException: Cannot run program "/home/anatoly/.cabal/bin/ghc-modi" (in directory "/home/anatoly/IdeaProjects/Test"): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.jetbrains.haskell.util.ProcessRunner.getProcess(ProcessRunner.kt:61) at org.jetbrains.haskell.external.GhcModi.startProcess(GhcModi.kt:63) at org.jetbrains.haskell.external.GhcModi.runCommand(GhcModi.kt:93) at org.jetbrains.haskell.external.HaskellExternalAnnotator.getResultFromGhcModi(HaskellExternalAnnotator.kt:97) at org.jetbrains.haskell.external.HaskellExternalAnnotator.doAnnotate(HaskellExternalAnnotator.kt:166) at org.jetbrains.haskell.external.HaskellExternalAnnotator.doAnnotate(HaskellExternalAnnotator.kt:34) at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:184) at com.intellij.codeInsight.daemon.impl.ExternalToolPass.access$500(ExternalToolPass.java:46) at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:126) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327) at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:352) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:298) at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:295) at com.intellij.util.concurrency.QueueProcessor$2$1.run(QueueProcessor.java:110) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:107) at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:104) at com.intellij.util.concurrency.QueueProcessor$3$1.run(QueueProcessor.java:215) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.concurrency.QueueProcessor$3.run(QueueProcessor.java:212) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:364) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:55) Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.$$YJP$$forkAndExec(Native Method) at java.lang.UNIXProcess.forkAndExec(UNIXProcess.java) at java.lang.UNIXProcess.(UNIXProcess.java:248)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 35 more