|
From: | Krishnan Parthasarathi |
Subject: | Re: [Gluster-devel] rpc problems when using syncops in callbacks |
Date: | Mon, 29 Apr 2013 11:47:33 +0530 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 |
Hi Fog,
RPC callbacks are executed in the epoll thread[1]. Calling synctask_yield causes that epoll thread to be blocked until, the corresponding "wake" is called. Most likely, the code calling the "wake" is tied to a network-event, which wouldn't be 'noticed' until the epoll thread is unblocked. This is a classic deadlock. You could attach gdb to the hung process and check if synctask_yield was called on the epoll thread. For further analysis, you might want to paste the output of "thread apply all bt full" from gdb, attached to the hung process. [1] - epoll thread - is a short name for the thread executing epoll (), 'listening' for network events. HTH, krish On 04/26/2013 03:10 PM, fog - wrote:
|
[Prev in Thread] | Current Thread | [Next in Thread] |