Stack overflow in withArgs leads to infinite memory-consuming loop
Given the program:
```hs
import System.Environment
main :: IO ()
main = do
putStrLn "Starting"
withArgs (replicate 1000 "") $ return ()
```
When run with:
```
ghc --make WithArgsBug.hs -rtsopts && WithArgsBug +RTS -K1K
```
The program prints out "Starting", then loops forever, taking 1 CPU core and allocating memory (approx 1Gb per min), until the computer is unresponsive. The program does not respond to Ctrl-C and has to be killed from the task manager.
The `-K1K` flag limits the stack to approx 33Kb.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------------- |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | ndmitchell@gmail.com |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Stack overflow in withArgs leads to infinite memory-consuming loop","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["ndmitchell@gmail.com"],"type":"Bug","description":"Given the program:\r\n\r\n{{{#!hs\r\nimport System.Environment\r\n\r\nmain :: IO ()\r\nmain = do\r\n putStrLn \"Starting\"\r\n withArgs (replicate 1000 \"\") $ return ()\r\n}}}\r\n\r\nWhen run with:\r\n\r\n{{{\r\nghc --make WithArgsBug.hs -rtsopts && WithArgsBug +RTS -K1K\r\n}}}\r\n\r\nThe program prints out \"Starting\", then loops forever, taking 1 CPU core and allocating memory (approx 1Gb per min), until the computer is unresponsive. The program does not respond to Ctrl-C and has to be killed from the task manager.\r\n\r\nThe {{{-K1K}}} flag limits the stack to approx 33Kb.","type_of_failure":"OtherFailure","blocking":[]} -->
issue