salt: [BUG] [v3000] [vRC1 Sodium] [v3001] slsutil.renderer when called through salt-call not exiting after run

Description Running salt-call slsutil.renderer is causing a freeze after the output.

Setup install salt and render a file with saltutil.renderer salt-call slsutil.renderer watch it stick and have to hit ctrl+c to get a prompt back.

Steps to Reproduce the behavior salt-call slsutil.renderer salt://test/init.sls file doesn’t need to exist.

Expected behavior salt-call exists after modules return.

Screenshots If applicable, add screenshots to help explain your problem.

Versions Report

salt-call test.versions
local:
    Salt Version:
               Salt: 3001rc1

    Dependency Versions:
               cffi: Not Installed
           cherrypy: 8.9.1
           dateutil: 2.7.3
          docker-py: Not Installed
              gitdb: 2.0.6
          gitpython: 3.0.7
             Jinja2: 2.10.1
            libgit2: 0.28.3
           M2Crypto: Not Installed
               Mako: Not Installed
       msgpack-pure: Not Installed
     msgpack-python: 0.6.2
       mysql-python: Not Installed
          pycparser: Not Installed
           pycrypto: 2.6.1
       pycryptodome: 3.6.1
             pygit2: 1.0.3
             Python: 3.8.2 (default, Apr 27 2020, 15:53:34)
       python-gnupg: 0.4.5
             PyYAML: 5.3.1
              PyZMQ: 18.1.1
              smmap: 2.0.5
            timelib: Not Installed
            Tornado: 4.5.3
                ZMQ: 4.3.2

    System Versions:
               dist: ubuntu 20.04 focal
             locale: utf-8
            machine: x86_64
            release: 5.4.0-29-generic
             system: Linux
            version: Ubuntu 20.04 focal

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 27 (17 by maintainers)

Most upvoted comments

Definitely something screwy going on here.

Thanks to @xcorvis I was finally able to repro this:

Running salt-call with strace -y, we get this:

poll([{fd=10<anon_inode:[eventfd]>, events=POLLIN}], 1, -1

That’s where it hangs indefinitely. From the poll manpage we can see:

poll(struct pollfd fds[], nfds_t nfds, int timeout);
...
If the value of
     timeout is -1, the poll blocks indefinitely.

So whatever we’re polling for here, we’re doing it for-ev-errrr. I’ll post updates as I find them.

@whytewolf I believe I have the fix for your hang. It works for my environment. I would appreciate it if you tested it in your environment to make sure it works for you so you don’t need to wait for another release.