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