Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NSInternalInconsistencyException occurs when shellOut is run too many times #79

Open
aim2120 opened this issue Jun 3, 2024 · 0 comments

Comments

@aim2120
Copy link

aim2120 commented Jun 3, 2024

I've already opened a PR for this issue, but wanted to open an issue for documenting purposes.

Copy-pasta from the PR description:


I have a Swift CLI that utilizes ShellOut to interact with binary executables. When I use shellOut too many times, I sometimes hit an exception that looks something like:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to set posix_spawn_file_actions for fd -1 at index 0 with errno 9'
*** First throw call stack:
(
	0   CoreFoundation                      0x00000001859672ec __exceptionPreprocess + 176
	1   libobjc.A.dylib                     0x000000018544e788 objc_exception_throw + 60
	2   Foundation                          0x0000000186a92eb4 -[NSConcreteTask launchWithDictionary:error:] + 4240

I've been able to determine this is due to the Pipe objects from ShellOut not being closed properly.

I've included an example project that demonstrates the issue:
NSExceptionExample.zip

Steps:

  1. Unzip the example library and cd NSExceptionExample
  2. Run swift run NSExceptionExample
  3. While that command is still running, in a separate terminal window, run ps aux | grep NSExceptionExample and take note of the PID.
  4. Run lsof -p <pid> | wc -l
  5. Notice how this number is quite large. Also notice that running again shows the number increasing.
  6. If the swift command runs long enough, you'll hit an exception like the above.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant