<font size=2 face="sans-serif">Hi Rafael,</font>
<br><font size=2 face="sans-serif">Thanks for your proposed workaround.</font>
<br><font size=2 face="sans-serif">It works fine with Eclipse Pydev debugger.</font>
<br>
<br><font size=2 face="sans-serif">Michel</font>
<br>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">De :
</font><font size=1 face="sans-serif">Rafael Durán Castañeda
<rafadurancastaneda@gmail.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">A :
</font><font size=1 face="sans-serif">openstack-dev@lists.openstack.org</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date :
</font><font size=1 face="sans-serif">22/08/2012 13:34</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Objet :
</font><font size=1 face="sans-serif">Re: [openstack-dev]
Problem with debugging program having
eventlet.monkey_patch() code</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>On 08/21/2012 03:49 PM, </font><a href=mailto:michel.gauthier@bull.net><font size=3 color=blue><u>michel.gauthier@bull.net</u></font></a><font size=3>
wrote:</font>
<br><font size=2 face="sans-serif">I have installed winpdb, but I have
still a problem while debugging nova-scheduler service : </font><font size=3><br>
</font><font size=2 face="sans-serif"><br>
on </font><tt><font size=2>eventlet.monkey_patch()</font></tt><font size=2 face="sans-serif">
instruction, the debugger get the following exception :</font><font size=3>
<br>
<br>
</font><font size=2 face="sans-serif"><br>
on winpdb GUI session ( launched thru : winpdb command and then atteched
to the debugee session)</font><font size=3> </font><font size=2 face="sans-serif"><br>
Exception in thread Thread-57:</font><font size=3> </font><font size=2 face="sans-serif"><br>
Traceback (most recent call last):</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner</font><font size=3>
</font><font size=2 face="sans-serif"><br>
self.run()</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/lib/python2.7/threading.py", line 504, in run</font><font size=3>
</font><font size=2 face="sans-serif"><br>
self.__target(*self.__args, **self.__kwargs)</font><font size=3>
</font><font size=2 face="sans-serif"><br>
File "/usr/local/lib/python2.7/dist-packages/rpdb2.py",
line 10790, in __event_monitor_proc</font><font size=3> </font><font size=2 face="sans-serif"><br>
(n, sel) = self.getSession().getProxy().wait_for_event(PING_TIMEOUT,
self.m_remote_event_index)</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in
__call__</font><font size=3> </font><font size=2 face="sans-serif"><br>
return self.__send(self.__name, args)</font><font size=3>
</font><font size=2 face="sans-serif"><br>
File "/usr/local/lib/python2.7/dist-packages/rpdb2.py",
line 9520, in __request</font><font size=3> </font><font size=2 face="sans-serif"><br>
raise _e</font><font size=3> </font><font size=2 face="sans-serif"><br>
RuntimeError: cannot release un-acquired lock</font><font size=3> <br>
<br>
</font><font size=2 face="sans-serif"><br>
on winpdb debugee session (launched thru : winpdb -d /usr/bin/nova-scheduler
--flagfile=/etc/nova/nova.conf command)</font><font size=3> </font><font size=2 face="sans-serif"><br>
Exception in thread __worker_target:</font><font size=3> </font><font size=2 face="sans-serif"><br>
Traceback (most recent call last):</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner</font><font size=3>
</font><font size=2 face="sans-serif"><br>
self.run()</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/local/lib/python2.7/dist-packages/rpdb2.py",
line 4574, in run</font><font size=3> </font><font size=2 face="sans-serif"><br>
threading.Thread.run(self)</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/lib/python2.7/threading.py", line 504, in run</font><font size=3>
</font><font size=2 face="sans-serif"><br>
self.__target(*self.__args, **self.__kwargs)</font><font size=3>
</font><font size=2 face="sans-serif"><br>
File "/usr/local/lib/python2.7/dist-packages/rpdb2.py",
line 9361, in __worker_target</font><font size=3> </font><font size=2 face="sans-serif"><br>
self.m_lock.release()</font><font size=3> </font><font size=2 face="sans-serif"><br>
File "/usr/lib/python2.7/threading.py", line 142, in release</font><font size=3>
</font><font size=2 face="sans-serif"><br>
raise RuntimeError("cannot release un-acquired lock")</font><font size=3>
</font><font size=2 face="sans-serif"><br>
RuntimeError: cannot release un-acquired lock</font><font size=3> <br>
<br>
</font><font size=2 face="sans-serif"><br>
Help for a solution.</font><font size=3> <br>
<br>
<br>
<br>
<br>
</font><font size=1 color=#5f5f5f face="sans-serif"><br>
De : </font><font size=1 face="sans-serif">Michael
J Fork </font><a href=mailto:mjfork@us.ibm.com><font size=1 color=blue face="sans-serif"><u><mjfork@us.ibm.com></u></font></a><font size=3>
</font><font size=1 color=#5f5f5f face="sans-serif"><br>
A : </font><font size=1 face="sans-serif">OpenStack
Development Mailing List </font><a href="mailto:openstack-dev@lists.openstack.org"><font size=1 color=blue face="sans-serif"><u><openstack-dev@lists.openstack.org></u></font></a><font size=3>
</font><font size=1 color=#5f5f5f face="sans-serif"><br>
Date : </font><font size=1 face="sans-serif">17/08/2012
15:03</font><font size=3> </font><font size=1 color=#5f5f5f face="sans-serif"><br>
Objet : </font><font size=1 face="sans-serif">Re:
[openstack-dev] Problem with debugging program having
eventlet.monkey_patch() code</font><font size=3>
<br>
</font>
<hr noshade><font size=3><br>
<br>
</font><font size=2 face="sans-serif"><br>
We have found that Winpdb (</font><a href=http://winpdb.org/><font size=2 color=blue face="sans-serif"><u>http://winpdb.org/</u></font></a><font size=2 face="sans-serif">
- platform independent despite Win in the name) works well with multi-threaded
Python. While using PyDev for development, run Winpdb as a remote
debugger for the multithreaded service. Flow is like this:<br>
<br>
Launch Winpdb GUI<br>
# winpdb<br>
<br>
Start Debugging <br>
# cd /home/openstack-dev/workspace/nova/bin <br>
# winpdb -d -r <file_to_debug> <br>
Set Password: openstack <br>
<br>
Attach to Process<br>
1) In Winpdb GUI, select File -> Attach<br>
2) Enter password from step 4, should display files associated with that
password <br>
3) Select process/file then select OK <br>
<br>
To Stop Debug or Make Changes and Restart <br>
1) File -> Stop to detach current debugger <br>
2) Make changes in Eclipse and Save (make sure development user has write
privileges to repository) <br>
3) kill and restart winpdb debugging process started above<br>
4) Re-attach to the process in the Winpdb GUI<br>
<br>
Michael<br>
<br>
-------------------------------------------------<br>
Michael Fork<br>
Cloud Architect, Emerging Solutions<br>
IBM Systems & Technology Group</font><tt><font size=2><br>
</font></tt><tt><font size=2 color=blue><u><br>
</u></font></tt><a href=mailto:michel.gauthier@bull.net><tt><font size=2 color=blue><u>michel.gauthier@bull.net</u></font></tt></a><tt><font size=2>
wrote on 08/17/2012 07:59:18 AM:<br>
<br>
> From: </font></tt><a href=mailto:michel.gauthier@bull.net><tt><font size=2 color=blue><u>michel.gauthier@bull.net</u></font></tt></a><tt><font size=2><br>
> To: </font></tt><a href="mailto:openstack-dev@lists.openstack.org"><tt><font size=2 color=blue><u>openstack-dev@lists.openstack.org</u></font></tt></a><tt><font size=2>,
<br>
> Date: 08/17/2012 08:02 AM<br>
> Subject: [openstack-dev] Problem with debugging program having <br>
> eventlet.monkey_patch() code<br>
> <br>
> Hi all, <br>
> I want to debug nova-scheduler service (Essex version) code
with <br>
> Eclipse->Pydev->Debug Configuration. <br>
> But when I launch it under Debug Configuration, I get the following
<br>
> error messages : <br>
> <br>
> pydev debugger: starting <br>
> Traceback (most recent call last): <br>
> File "/usr/lib/python2.7/dist-packages/eventlet/hubs/hub.py",
line<br>
> 336, in fire_timers <br>
> timer() <br>
> File "/usr/lib/python2.7/dist-packages/eventlet/hubs/timer.py",
<br>
> line 56, in __call__ <br>
> cb(*args, **kw) <br>
> File "/usr/lib/python2.7/dist-packages/eventlet/semaphore.py",
<br>
> line 95, in _do_acquire <br>
> waiter.switch() <br>
> error: cannot switch to a different thread <br>
> <br>
> and then, Pydev debugger does not work! <br>
> <br>
> In fact, these errors are due to the use of eventlet.monkey_patch()
inside <br>
> nova-scheduler launcher (as well as inside other nova-* launchers).
<br>
> <br>
> Do you have any ideas to resolve this problem? <br>
> <br>
> Thanks in advance._______________________________________________<br>
> OpenStack-dev mailing list<br>
> </font></tt><a href="mailto:OpenStack-dev@lists.openstack.org"><tt><font size=2 color=blue><u>OpenStack-dev@lists.openstack.org</u></font></tt></a><tt><font size=2><br>
> </font></tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"><tt><font size=2 color=blue><u>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</u></font></tt></a><tt><font size=2>_______________________________________________<br>
OpenStack-dev mailing list</font></tt><tt><font size=2 color=blue><u><br>
</u></font></tt><a href="mailto:OpenStack-dev@lists.openstack.org"><tt><font size=2 color=blue><u>OpenStack-dev@lists.openstack.org</u></font></tt></a><font size=3 color=blue><u><br>
</u></font><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"><tt><font size=2 color=blue><u>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</u></font></tt></a><font size=3><br>
<br>
<br>
</font>
<br><tt><font size=3>_______________________________________________<br>
OpenStack-dev mailing list<br>
</font></tt><a href="mailto:OpenStack-dev@lists.openstack.org"><tt><font size=3 color=blue><u>OpenStack-dev@lists.openstack.org</u></font></tt></a><tt><font size=3><br>
</font></tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"><tt><font size=3 color=blue><u>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</u></font></tt></a><tt><font size=3><br>
</font></tt>
<br><font size=3>As a quick workaround you can change monkey patching at
nova-scheduler script:<br>
<br>
eventlet.monkey_patch(thread=False)<br>
<br>
HTH</font><tt><font size=2>_______________________________________________<br>
OpenStack-dev mailing list<br>
OpenStack-dev@lists.openstack.org<br>
</font></tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"><tt><font size=2>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</font></tt></a><tt><font size=2><br>
</font></tt>
<br>