Note the `AsyncResponseHandler` suffers from the same issue when used like this: ``` f = client.File() handler = AsyncResponseHandler() status = f.open(smallfile, OpenFlags.READ, callback=handler) status, response, hostlist = handler.wait() ``` This is because the callback is defined as: ``` def __call__(self, status, response, hostlist): self.status = status self.response = response self.hostlist = hostlist self.mutex.release() ``` The file above may be closed in the main process any time after `mutex.release()` is called; however, the callback will still need to hold the GIL to exit the function. It would be quite hard to trigger in this case, however. --- Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd-python/issues/13#issuecomment-170359850 ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1