← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1870352] Re: "ctypes.CDLL" C functions could release the GIL during the execution call

 

Reviewed:  https://review.opendev.org/717017
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=306280813f34f8bbe384ae5bea67f0f66e316b61
Submitter: Zuul
Branch:    master

commit 306280813f34f8bbe384ae5bea67f0f66e316b61
Author: Rodolfo Alonso Hernandez <ralonsoh@xxxxxxxxxx>
Date:   Thu Apr 2 13:49:19 2020 +0000

    Replace ctype.CDLL by ctypes.PyDLL in linux.ip_lib
    
    Some linux.ip_lib functions make use of "ctype.CDLL" methods
    (create_netns, remove_netns). Those methods are called inside a
    "privsep" context; that means the function reference and the
    arguments are passed to a privileged context that will execute
    the method.
    
    "privsep" library makes use of eventlet to implement multitasking.
    If the method executed returns the GIL, nothing guarantees that
    the "eventlet" executor will return it again to this task. This
    could lead to timeouts during the execution of those methods.
    
    From https://docs.python.org/3.6/library/ctypes.html#ctypes.PyDLL:
      "Instances of this class behave like CDLL instances, except that
       the Python GIL is not released during the function call, and
       after the function execution the Python error flag is checked."
    
    Change-Id: I36ef9bf59e9c93f50464457a5d9a968738844079
    Closes-Bug: #1870352


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1870352

Title:
  "ctypes.CDLL" C functions could release the GIL during the execution
  call

Status in neutron:
  Fix Released

Bug description:
  Some Linux IP library functions make use of "ctype.CDLL" methods
  (create_netns, remove_netns). Those methods are called inside a
  privsep context; that means the function reference and the arguments
  are passed to a privileged context that will execute the method.
  "privsep" makes use of eventlet to implement multitasking. If the
  method executed returns the GIL, nothing guarantees that the eventlet
  executor will return it again to this task. Therefore we can see, in
  the CI, timeouts during the execution of those functions.

  Log:
  https://81525168d755db537877-a5e4e29d4d6432c5c7202337ef0214bc.ssl.cf1.rackcdn.com/714731/1/gate
  /neutron-fullstack/8a9753b/testr_results.html

  Log snippet: http://paste.openstack.org/show/791531/

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1870352/+subscriptions


References