Jira (PUP-5028) 100% cpu

2015-08-13 Thread Peter Huene (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Peter Huene commented on  PUP-5028 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
  Re: 100% cpu  
 
 
 
 
 
 
 
 
 
 
Ignore my last comment. I was incorrectly looking at the polls in virNetClientSetTLSSession and not virNetClientIOEventLoop where the backtrace is showing the problem lies. 
Looking at virNetClientIOEventLoop, a bad descriptor to poll should break it out of the loop: 
 
 
 
 
 
 
 repoll: 
 
 
 
 
ret = poll(fds, ARRAY_CARDINALITY(fds), timeout); 
 
 
 
 
if (ret < 0 && (errno == EAGAIN || errno == EINTR)) 
 
 
 
 
goto repoll; 
 
 
 
 
  
 
 
 
 
ignore_value(pthread_sigmask(SIG_SETMASK, &oldmask, NULL)); 
 
 
 
 
  
 
 
 
 
virObjectLock(client); 
 
 
 
 
  
 
 
 
 
if (ret < 0) { 
 
   

Jira (PUP-5028) 100% cpu

2015-08-13 Thread Peter Huene (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Peter Huene commented on  PUP-5028 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
  Re: 100% cpu  
 
 
 
 
 
 
 
 
 
 
Indeed, it looks like libvirt ignores legitimate errors from poll and only checks for needing to poll again. 
I suspect this would fix it: 
 
 
 
 
 
 
if (ret < 0) { 
 
 
 
 
if (errno == EAGAIN || errno == EINTR) { 
 
 
 
 
goto repoll; 
 
 
 
 
} 
 
 
 
 
} 
 
 
 
 
ignore_value(pthread_sigmask(SIG_SETMASK, &oldmask, NULL)); 
 
 
 
 
if (ret < 0) { 
 
 
 
 
goto error; 
 
 
 
 
}
 
 
 
 
 
 
 
Note that there's two places where poll is called that could enter an infinite loop. 
Unfortunately, there's little Puppet or Facter can do to work around this bug, especially if it's occurring during a Ruby GC. This will need to be

Jira (PUP-5028) 100% cpu

2015-08-13 Thread Maxim Kozin (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Maxim Kozin updated an issue 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 Puppet /  PUP-5028 
 
 
 
  100% cpu  
 
 
 
 
 
 
 
 
 
 
Custom facts with libvirt-lxc and external commands 
 
 
 
 
 
 
 
 
 

Change By:
 
 Maxim Kozin 
 
 
 

Attachment:
 
 lxc.rb 
 
 
 
 
 
 
 
 
 
 
 
 

 
 Add Comment 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

 This message was sent by Atlassian JIRA (v6.4.5#64020-sha1:78acd6c) 
 
 
 
 
  
 
 
 
 
 
 
 
 
   





-- 
You received this message because you are subscribed to the Google Groups "Puppet Bugs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-bugs+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-bugs@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-bugs.
For more options, visit https://groups.google.com/d/optout.


Jira (PUP-5028) 100% cpu

2015-08-13 Thread Maxim Kozin (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Maxim Kozin commented on  PUP-5028 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
  Re: 100% cpu  
 
 
 
 
 
 
 
 
 
 
We have hardware nodes with libvirt-lxc and LXC containers under puppet. Puppet run on both type servers, but hang only on libvirt-lxc nodes. Yes, we use custom facts which communicate with libvirt and execute some external command Code in attachment. Moreover - backtrace in gdb show that we loop in libvirt code, in poll() on nonexistent fd with timeout = -1: #0 pthread_sigmask (how=how@entry=2, newmask=, newmask@entry=0x7fff36a73900, oldmask=oldmask@entry=0x0) at ../nptl/sysdeps/pthread/pthread_sigmask.c:53 #1 0x7f185bcc213d in virNetClientIOEventLoop (client=client@entry=0x45c4ea0, thiscall=thiscall@entry=0x3748920) at rpc/virnetclient.c:1518 #2 0x7f185bcc28eb in virNetClientIO (thiscall=0x3748920, client=0x45c4ea0) at rpc/virnetclient.c:1786 #3 virNetClientSendInternal (client=client@entry=0x45c4ea0, msg=msg@entry=0x45c31b0, expectReply=expectReply@entry=true, nonBlock=nonBlock@entry=false) at rpc/virnetclient.c:1958 #4 0x7f185bcc3cf3 in virNetClientSendWithReply (client=client@entry=0x45c4ea0, msg=msg@entry=0x45c31b0) at rpc/virnetclient.c:1986 #5 0x7f185bcc4502 in virNetClientProgramCall (prog=prog@entry=0x45c4e30, client=client@entry=0x45c4ea0, serial=serial@entry=7, proc=proc@entry=2, noutfds=noutfds@entry=0, outfds=outfds@entry=0x0, ninfds=ninfds@entry=0x0, infds=infds@entry=0x0, args_filter=args_filter@entry=0x7f186c795700 <__GI_xdr_void>, args=args@entry=0x0, ret_filter=ret_filter@entry=0x7f186c795700 <__GI_xdr_void>, ret=ret@entry=0x0) at rpc/virnetclientprogram.c:329 #6 0x7f185bc9c992 in callFull (priv=priv@entry=0x45c9140, flags=flags@entry=0, fdin=fdin@entry=0x0, fdinlen=fdinlen@entry=0, fdout=fdout@entry=0x0, fdoutlen=fdoutlen@entry=0x0, proc_nr=proc_nr@entry=2, args_filter=0x7f186c795700 <_GI_xdr_void>, args=args@entry=0x0, ret_filter=0x7f186c795700 <_GI_xdr_void>, ret=ret@entry=0x0, conn=0x45c9140) at remote/remote_driver.c:6575 #7 0x7f185bcb494c in call (conn=0x45c9140, ret=0x0, ret_filter=, args=0x0, args_filter=, proc_nr=2, flags=0, priv=0x45c9140) at remote/remote_driver.c:6597 #8 doRemoteClose (priv=0x45c9140, conn=0x45c4ad0) at remote/remote_driver.c:1228 #9 0x7f185bcb4b7c in remoteConnectClose (conn=0x45c4ad0) at remote/remote_driver.c:1271 #10 0x7f185bc4bd5f in virConnectDispose (obj=0x45c4ad0) at datatypes.c:154 #11 0x7f185bbcb183 in virObjectUnref (anyobj=) at util/virobject.c:265 #12 0x7f185bc4bca3 in virDomainDispose (obj=0x45c4cf0) at datatypes.c:255 #13 0x7f185bbcb183 in virObjectUnref (anyobj=anyobj@entry=0x45c4cf0) at util/virobject.c:265 #14 0x7f185bc57969 in virDomainFree (domain=0x45c4cf0) at libvirt.c:2272 #15 0x7f1860495419 in domain_free (d=) at domain.c:95 #16 0x7f186d609191 in run_final (objspace=0x1766940, objspace=0x1766940, obj=63470080) at gc.c:1418 #17 finalize_list (objspace=objspace@entry=0x1766940, p=0x3c87a00) at gc.c:1432 #18 0x7f186d609240 in finalize_deferred (objspace=objspace@entry=0x1766940) at gc.c:1452 #19 0x7f186d60a03e in rb_gc_finalize_deferred () at gc.c:1461 #20 0x7f186d7107a5 in rb_threadptr_execute_interrupts (th=th@entry=0x1766590, blocking_timing=blocking_timing@entry=0) at thread.c:1956 #21 0x7f186d7109ec in rb_threadptr_execute_interrupts (th=th@entry=0x1766590, blocking_timing=blocking_timing@entry=0) at thread.c:1898 #22 0x7f186d6f35e4 in vm_call0_body (th=th@entry=0x1766590, ci=ci@entry=0x7fff36a74120, argv=) at vm_eval.c:238 #23 0x7f186d6f497b in vm_call0 (defined_class=, me=0x1857bf0, argv=, argc=1, id=1408, recv=59393760, th=0x1766590) at vm_eval.c:49 #24 rb_call0 (recv=59393760, mid=1408, argc=1, argv=, scope=CALL_FCALL, self=24898920) at vm_eval.c:324 #25 0x7f186d63fe21 in rb_class_new_instance (argc=1, argv=0x7f186dafba90, klass=) at object.c:1799 #26 0x7f186d6f24f2 in vm_call_cfunc_with_fra

Jira (PUP-5028) 100% cpu

2015-08-12 Thread Peter Huene (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Peter Huene commented on  PUP-5028 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
  Re: 100% cpu  
 
 
 
 
 
 
 
 
 
 
Looks like the fact might be coming from this module, which has been updated not to call back into Puppet's type system  to query pip version: 
https://github.com/stankevich/puppet-python/commit/fda0c748790ace9a1822fdfa912fc85499ddcf80 
 
 
 
 
 
 
 
 
 
 
 
 

 
 Add Comment 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

 This message was sent by Atlassian JIRA (v6.4.5#64020-sha1:78acd6c) 
 
 
 
 
  
 
 
 
 
 
 
 
 
   





-- 
You received this message because you are subscribed to the Google Groups "Puppet Bugs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-bugs+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-bugs@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-bugs.
For more options, visit https://groups.google.com/d/optout.


Jira (PUP-5028) 100% cpu

2015-08-12 Thread Josh Cooper (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Josh Cooper assigned an issue to Maxim Kozin 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 Puppet /  PUP-5028 
 
 
 
  100% cpu  
 
 
 
 
 
 
 
 
 

Change By:
 
 Josh Cooper 
 
 
 

Assignee:
 
 Kylo Ginsberg Maxim Kozin 
 
 
 
 
 
 
 
 
 
 
 
 

 
 Add Comment 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

 This message was sent by Atlassian JIRA (v6.4.5#64020-sha1:78acd6c) 
 
 
 
 
  
 
 
 
 
 
 
 
 
   





-- 
You received this message because you are subscribed to the Google Groups "Puppet Bugs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-bugs+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-bugs@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-bugs.
For more options, visit https://groups.google.com/d/optout.


Jira (PUP-5028) 100% cpu

2015-08-12 Thread Josh Cooper (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Josh Cooper commented on  PUP-5028 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
  Re: 100% cpu  
 
 
 
 
 
 
 
 
 
 
Maxim Kozin can you run puppet with --debug as it should show the commands that puppet is attempting to execute. Also it looks like you have a custom fact that is calling into puppet? Can you share the fact code? 
 
 
 
 
 
 
 
 
 
 
 
 

 
 Add Comment 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

 This message was sent by Atlassian JIRA (v6.4.5#64020-sha1:78acd6c) 
 
 
 
 
  
 
 
 
 
 
 
 
 
   





-- 
You received this message because you are subscribed to the Google Groups "Puppet Bugs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-bugs+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-bugs@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-bugs.
For more options, visit https://groups.google.com/d/optout.


Jira (PUP-5028) 100% cpu

2015-08-12 Thread Maxim Kozin (JIRA)
Title: Message Title
 
 
 
 
 
 
 
 
 
 
  
 
 Maxim Kozin created an issue 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 Puppet /  PUP-5028 
 
 
 
  100% cpu  
 
 
 
 
 
 
 
 
 

Issue Type:
 
  Bug 
 
 
 

Affects Versions:
 

 PUP 3.7.5 
 
 
 

Assignee:
 
 Kylo Ginsberg 
 
 
 

Components:
 

 Client 
 
 
 

Created:
 

 2015/08/12 10:35 AM 
 
 
 

Environment:
 
 
CentOS Linux release 7.0.1406 (Core) 3.10.0-123.13.2.el7.x86_64  
 
 
 

Priority:
 
  Normal 
 
 
 

Reporter:
 
 Maxim Kozin 
 
 
 
 
 
 
 
 
 
 
puppet service periodically get >100% cpu load: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND  17976 root 20 0 408432 50620 1780 R 129.5 0.2 2616:17 puppet  
Use described here method (https://gist.github.com/jashmenn/4069637), I get ruby backtrace: /usr/share/ruby/vendor_ruby/puppet/util.rb:295:in `new' /usr/share/ruby/vendor_ruby/puppet/util.rb:295:in `block (2 levels) in safe_posix_fork' /usr/share/ruby/vendor_ruby/puppet/util.rb:295:in `upto' /usr/share/ruby/vendor_ruby/puppet/util.rb:295:in `block in safe_posix_fork' /usr/share/ruby/vendor_ruby/puppet/util.rb:290:in `fork' /usr/share/ruby/vendor_ruby/puppet/util.rb:290:in `safe_posix_fork' /usr/share/ruby/vendor_ruby/puppet/util/execution.rb:237:in