Hi,

Initially my playbook stuck at setup stage for a specific server.

Upon running ansible -vvvv <servername> -m setup , the process also stuck.

I have set the environment variable ANSIBLE_KEEP_REMOTE_FILES=1 then trying 
again, and still stuck.

In the target server, I went to the folder 
/root/.ansible/tmp/ansible-tmp-1472920749.88-102164203403323 and executed

python -m trace --trace ./setup

it stuck at the last line:

--- modulename: subprocess, funcname: close_unregister_and_remove
subprocess.py(1437):                 poller.unregister(fd)
subprocess.py(1438):                 fd2file[fd].close()
subprocess.py(1439):                 fd2file.pop(fd)
subprocess.py(1461):                 for fd, mode in ready:
subprocess.py(1462):                     if mode & select.POLLOUT:
subprocess.py(1474):                     elif mode & select_POLLIN_POLLPRI:
subprocess.py(1475):                         data = os.read(fd, 4096)
subprocess.py(1476):                         if not data:
subprocess.py(1478):                         fd2output[fd].append(data)
subprocess.py(1461):                 for fd, mode in ready:
subprocess.py(1453):             while fd2file:
subprocess.py(1454):                 try:
subprocess.py(1455):                     ready = poller.poll()

when pressing ctrl-c, the traceback is:

Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/lib64/python2.7/trace.py", line 819, in <module>
    main()
  File "/usr/lib64/python2.7/trace.py", line 807, in main
    t.runctx(code, globs, globs)
  File "/usr/lib64/python2.7/trace.py", line 513, in runctx
    exec cmd in globals, locals
  File "./setup", line 237, in <module>
    exitcode = invoke_module(module, zipped_mod, ZIPLOADER_PARAMS)
  File "./setup", line 62, in invoke_module
    (stdout, stderr) = p.communicate(json_params)
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1401, in _communicate
    stdout, stderr = self._communicate_with_poll(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1455, in 
_communicate_with_poll
    ready = poller.poll()
KeyboardInterrupt

For other machine, they did not stuck at the polling process.

Any idea to troubleshoot further?

Thanks

-- extended output -- 

setup(237):             exitcode = invoke_module(module, zipped_mod, 
ZIPLOADER_PARAMS)
 --- modulename: setup, funcname: invoke_module
setup(55):     pythonpath = os.environ.get('PYTHONPATH')
 --- modulename: UserDict, funcname: get
UserDict.py(59):         if key not in self:
 --- modulename: UserDict, funcname: __contains__
UserDict.py(71):         return key in self.data
UserDict.py(60):             return failobj
setup(56):     if pythonpath:
setup(59):         os.environ['PYTHONPATH'] = modlib_path
 --- modulename: os, funcname: __setitem__
os.py(471):                 putenv(key, item)
os.py(472):                 self.data[key] = item
setup(61):     p = subprocess.Popen(['/usr/bin/python', module], 
env=os.environ, shell=False, stdout=subprocess.PIPE, 
stderr=subprocess.PIPE, stdin=subprocess.PIPE)
 --- modulename: subprocess, funcname: __init__
subprocess.py(656):         _cleanup()
 --- modulename: subprocess, funcname: _cleanup
subprocess.py(461):     for inst in _active[:]:
subprocess.py(658):         self._child_created = False
subprocess.py(659):         if not isinstance(bufsize, (int, long)):
subprocess.py(662):         if mswindows:
subprocess.py(672):             if startupinfo is not None:
subprocess.py(675):             if creationflags != 0:
subprocess.py(679):         self.stdin = None
subprocess.py(680):         self.stdout = None
subprocess.py(681):         self.stderr = None
subprocess.py(682):         self.pid = None
subprocess.py(683):         self.returncode = None
subprocess.py(684):         self.universal_newlines = universal_newlines
subprocess.py(703):          errread, errwrite), to_close = 
self._get_handles(stdin, stdout, stderr)
 --- modulename: subprocess, funcname: _get_handles
subprocess.py(1104):             to_close = set()
subprocess.py(1105):             p2cread, p2cwrite = None, None
subprocess.py(1106):             c2pread, c2pwrite = None, None
subprocess.py(1107):             errread, errwrite = None, None
subprocess.py(1109):             if stdin is None:
subprocess.py(1111):             elif stdin == PIPE:
subprocess.py(1112):                 p2cread, p2cwrite = self.pipe_cloexec()
 --- modulename: subprocess, funcname: pipe_cloexec
subprocess.py(1168):             r, w = os.pipe()
subprocess.py(1169):             self._set_cloexec_flag(r)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1170):             self._set_cloexec_flag(w)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1171):             return r, w
subprocess.py(1113):                 to_close.update((p2cread, p2cwrite))
subprocess.py(1120):             if stdout is None:
subprocess.py(1122):             elif stdout == PIPE:
subprocess.py(1123):                 c2pread, c2pwrite = self.pipe_cloexec()
 --- modulename: subprocess, funcname: pipe_cloexec
subprocess.py(1168):             r, w = os.pipe()
subprocess.py(1169):             self._set_cloexec_flag(r)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1170):             self._set_cloexec_flag(w)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1171):             return r, w
subprocess.py(1124):                 to_close.update((c2pread, c2pwrite))
subprocess.py(1131):             if stderr is None:
subprocess.py(1133):             elif stderr == PIPE:
subprocess.py(1134):                 errread, errwrite = self.pipe_cloexec()
 --- modulename: subprocess, funcname: pipe_cloexec
subprocess.py(1168):             r, w = os.pipe()
subprocess.py(1169):             self._set_cloexec_flag(r)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1170):             self._set_cloexec_flag(w)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1171):             return r, w
subprocess.py(1135):                 to_close.update((errread, errwrite))
subprocess.py(1144):             return (p2cread, p2cwrite,
subprocess.py(1145):                     c2pread, c2pwrite,
subprocess.py(1146):                     errread, errwrite), to_close
subprocess.py(705):         try:
subprocess.py(706):             self._execute_child(args, executable, 
preexec_fn, close_fds,
subprocess.py(707):                                 cwd, env, 
universal_newlines,
subprocess.py(708):                                 startupinfo, 
creationflags, shell, to_close,
subprocess.py(709):                                 p2cread, p2cwrite,
subprocess.py(710):                                 c2pread, c2pwrite,
subprocess.py(711):                                 errread, errwrite)
 --- modulename: subprocess, funcname: _execute_child
subprocess.py(1196):             if isinstance(args, types.StringTypes):
subprocess.py(1199):                 args = list(args)
subprocess.py(1201):             if shell:
subprocess.py(1206):             if executable is None:
subprocess.py(1207):                 executable = args[0]
subprocess.py(1209):             def _close_in_parent(fd):
subprocess.py(1216):             errpipe_read, errpipe_write = 
self.pipe_cloexec()
 --- modulename: subprocess, funcname: pipe_cloexec
subprocess.py(1168):             r, w = os.pipe()
subprocess.py(1169):             self._set_cloexec_flag(r)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1170):             self._set_cloexec_flag(w)
 --- modulename: subprocess, funcname: _set_cloexec_flag
subprocess.py(1150):             try:
subprocess.py(1151):                 cloexec_flag = fcntl.FD_CLOEXEC
subprocess.py(1155):             old = fcntl.fcntl(fd, fcntl.F_GETFD)
subprocess.py(1156):             if cloexec:
subprocess.py(1157):                 fcntl.fcntl(fd, fcntl.F_SETFD, old | 
cloexec_flag)
subprocess.py(1171):             return r, w
subprocess.py(1217):             try:
subprocess.py(1218):                 try:
subprocess.py(1219):                     gc_was_enabled = gc.isenabled()
subprocess.py(1222):                     gc.disable()
subprocess.py(1223):                     try:
subprocess.py(1224):                         self.pid = os.fork()
subprocess.py(1229):                     self._child_created = True
subprocess.py(1230):                     if self.pid == 0:
subprocess.py(1300):                     if gc_was_enabled:
subprocess.py(1229):                     self._child_created = True
subprocess.py(1301):                         gc.enable()
subprocess.py(1230):                     if self.pid == 0:
subprocess.py(1304):                     os.close(errpipe_write)
subprocess.py(1232):                         try:
subprocess.py(1234):                             if p2cwrite is not None:
subprocess.py(1308):                 data = _eintr_retry_call(os.read, 
errpipe_read, 1048576)
subprocess.py(1235):                                 os.close(p2cwrite)
subprocess.py(1236):                             if c2pread is not None:
subprocess.py(1237):                                 os.close(c2pread)
subprocess.py(1238):                             if errread is not None:
subprocess.py(1239):                                 os.close(errread)
subprocess.py(1240):                             os.close(errpipe_read)
 --- modulename: subprocess, funcname: _eintr_retry_call
subprocess.py(1245):                             if c2pwrite == 0:
subprocess.py(476):     while True:
subprocess.py(1247):                             if errwrite == 0 or 
errwrite == 1:
subprocess.py(477):         try:
subprocess.py(1251):                             def _dup2(a, b):
subprocess.py(478):             return func(*args)
subprocess.py(1259):                             _dup2(p2cread, 0)
 --- modulename: subprocess, funcname: _dup2
subprocess.py(1255):                                 if a == b:
subprocess.py(1257):                                 elif a is not None:
subprocess.py(1258):                                     os.dup2(a, b)
subprocess.py(1260):                             _dup2(c2pwrite, 1)
 --- modulename: subprocess, funcname: _dup2
subprocess.py(1255):                                 if a == b:
subprocess.py(1257):                                 elif a is not None:
subprocess.py(1258):                                     os.dup2(a, b)
subprocess.py(1310):                 if p2cread is not None and p2cwrite is 
not None:
subprocess.py(1311):                     _close_in_parent(p2cread)
 --- modulename: subprocess, funcname: _close_in_parent
subprocess.py(1210):                 os.close(fd)
subprocess.py(1211):                 to_close.remove(fd)
subprocess.py(1312):                 if c2pwrite is not None and c2pread is 
not None:
subprocess.py(1313):                     _close_in_parent(c2pwrite)
 --- modulename: subprocess, funcname: _close_in_parent
subprocess.py(1210):                 os.close(fd)
subprocess.py(1211):                 to_close.remove(fd)
subprocess.py(1314):                 if errwrite is not None and errread is 
not None:
subprocess.py(1315):                     _close_in_parent(errwrite)
 --- modulename: subprocess, funcname: _close_in_parent
subprocess.py(1210):                 os.close(fd)
subprocess.py(1211):                 to_close.remove(fd)
subprocess.py(1318):                 os.close(errpipe_read)
subprocess.py(1320):             if data != "":
subprocess.py(727):         if mswindows:
subprocess.py(735):         if p2cwrite is not None:
subprocess.py(736):             self.stdin = os.fdopen(p2cwrite, 'wb', 
bufsize)
subprocess.py(737):         if c2pread is not None:
subprocess.py(738):             if universal_newlines:
subprocess.py(741):                 self.stdout = os.fdopen(c2pread, 'rb', 
bufsize)
subprocess.py(742):         if errread is not None:
subprocess.py(743):             if universal_newlines:
subprocess.py(746):                 self.stderr = os.fdopen(errread, 'rb', 
bufsize)
setup(62):     (stdout, stderr) = p.communicate(json_params)
 --- modulename: subprocess, funcname: communicate
subprocess.py(780):         if [self.stdin, self.stdout, 
self.stderr].count(None) >= 2:
subprocess.py(800):         return self._communicate(input)
 --- modulename: subprocess, funcname: _communicate
subprocess.py(1393):             if self.stdin:
subprocess.py(1396):                 self.stdin.flush()
subprocess.py(1397):                 if not input:
subprocess.py(1400):             if _has_poll:
subprocess.py(1401):                 stdout, stderr = 
self._communicate_with_poll(input)
 --- modulename: subprocess, funcname: _communicate_with_poll
subprocess.py(1426):             stdout = None # Return
subprocess.py(1427):             stderr = None # Return
subprocess.py(1428):             fd2file = {}
subprocess.py(1429):             fd2output = {}
subprocess.py(1431):             poller = select.poll()
subprocess.py(1432):             def register_and_append(file_obj, 
eventmask):
subprocess.py(1436):             def close_unregister_and_remove(fd):
subprocess.py(1441):             if self.stdin and input:
subprocess.py(1442):                 register_and_append(self.stdin, 
select.POLLOUT)
 --- modulename: subprocess, funcname: register_and_append
subprocess.py(1433):                 poller.register(file_obj.fileno(), 
eventmask)
subprocess.py(1434):                 fd2file[file_obj.fileno()] = file_obj
subprocess.py(1444):             select_POLLIN_POLLPRI = select.POLLIN | 
select.POLLPRI
subprocess.py(1445):             if self.stdout:
subprocess.py(1446):                 register_and_append(self.stdout, 
select_POLLIN_POLLPRI)
 --- modulename: subprocess, funcname: register_and_append
subprocess.py(1433):                 poller.register(file_obj.fileno(), 
eventmask)
subprocess.py(1434):                 fd2file[file_obj.fileno()] = file_obj
subprocess.py(1447):                 fd2output[self.stdout.fileno()] = 
stdout = []
subprocess.py(1448):             if self.stderr:
subprocess.py(1449):                 register_and_append(self.stderr, 
select_POLLIN_POLLPRI)
 --- modulename: subprocess, funcname: register_and_append
subprocess.py(1433):                 poller.register(file_obj.fileno(), 
eventmask)
subprocess.py(1434):                 fd2file[file_obj.fileno()] = file_obj
subprocess.py(1450):                 fd2output[self.stderr.fileno()] = 
stderr = []
subprocess.py(1452):             input_offset = 0
subprocess.py(1453):             while fd2file:
subprocess.py(1454):                 try:
subprocess.py(1455):                     ready = poller.poll()
subprocess.py(1461):                 for fd, mode in ready:
subprocess.py(1462):                     if mode & select.POLLOUT:
subprocess.py(1463):                         chunk = input[input_offset : 
input_offset + _PIPE_BUF]
subprocess.py(1464):                         try:
subprocess.py(1465):                             input_offset += 
os.write(fd, chunk)
subprocess.py(1472):                             if input_offset >= 
len(input):
subprocess.py(1473):                                 
close_unregister_and_remove(fd)
 --- modulename: subprocess, funcname: close_unregister_and_remove
subprocess.py(1437):                 poller.unregister(fd)
subprocess.py(1438):                 fd2file[fd].close()
subprocess.py(1439):                 fd2file.pop(fd)
subprocess.py(1461):                 for fd, mode in ready:
subprocess.py(1462):                     if mode & select.POLLOUT:
subprocess.py(1474):                     elif mode & select_POLLIN_POLLPRI:
subprocess.py(1475):                         data = os.read(fd, 4096)
subprocess.py(1476):                         if not data:
subprocess.py(1478):                         fd2output[fd].append(data)
subprocess.py(1461):                 for fd, mode in ready:
subprocess.py(1453):             while fd2file:
subprocess.py(1454):                 try:
subprocess.py(1455):                     ready = poller.poll()

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/bbf84b01-ea93-45e2-a6a8-8dc38d688e00%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to