New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ipc(sc) can deadlock if ipc_type is socket #46
Comments
Hi Honzaf For some strange reason I can't reproduce this. But was thinking that the socket send buf size might -Angus
|
Angus, Just one note. Problem seems to appear on my machine reliably only if debug is set to trace + to_stderr is set to yes + running corosync as corosync -f. What's even more interesting, only cpg_verify seems to have this problem (or at least, I'm able to reproduce it here). cpgbench or testcpg doesn't. |
Angus, |
Honza thanks for your help with the reproducer, it's a great help. I have sent you 2 patches (hopefully better to apply). I still want to test some more - bit worried about the portability of the last patch. -A |
So those patches I sent will only fix part of the problem, I am working to resolve this better. |
Can you give this a go? |
Honza I think this is fixed in master, but can't hunt down your neat reproducer. Do you still have it by any chance? |
Angus, |
Simple reproducer:
corosync.conf:
qb {
ipc_type: socket
}
start corosync
start test/cpgverify
corosync + cpgverify will deadlock in qb_ipc_us_sendv function because:
if (errno == EAGAIN &&
(processed > 0 || iov_p > 0)) {
goto retry_send;
but processed is >0. So it just retry forever (or until cpgverify is stopped).
The text was updated successfully, but these errors were encountered: