This service will be undergoing maintenance at 00:00 UTC, 2017-10-23 It is expected to last about 30 minutes
Bug 959184 - Corosync can exit because of SIGPIPE
Corosync can exit because of SIGPIPE
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: corosync (Show other bugs)
6.4
Unspecified Unspecified
urgent Severity urgent
: rc
: ---
Assigned To: Jan Friesse
Cluster QE
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2013-05-03 06:03 EDT by Jan Friesse
Modified: 2013-11-20 23:34 EST (History)
4 users (show)

See Also:
Fixed In Version: corosync-1.4.1-16.el6
Doc Type: Bug Fix
Doc Text:
Cause: IPC client exits in very specific time-frame of connection handshake. Consequence: Corosync receives SIGPIPE and dies. Fix: Function which is responsible for SIGPIPE (sendto) is called with flag which makes SIGPIPE handled by sendto function. Result: Corosync doesn't receive SIGPIPE and doesn't die.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-11-20 23:34:09 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Proposed patch - Handle SIGPIPE in req_setup_send (1.02 KB, patch)
2013-05-03 06:03 EDT, Jan Friesse
no flags Details | Diff

  None (edit)
Description Jan Friesse 2013-05-03 06:03:20 EDT
Created attachment 743139 [details]
Proposed patch - Handle SIGPIPE in req_setup_send

Description of problem:
When IPC client exits exactly when req_setup_send function calls send,
SIGPIPE is generated and corosync (because SIGPIPE is not handled)
exits.

Version-Release number of selected component (if applicable):
Flatiron

How reproducible:
99.21%

Steps to Reproduce:
1. Execute corosync without RR scheduling (pass -p parameter)
2. Execute many confdb IPC clients where each of them is tracking some key(s) and makes changes to that key(s) (or use https://github.com/jfriesse/csts/blob/master/apps/confdb-track-and-change.c)
3. send SIGINT to IPC clients
4. *Corosync* receives SIGPIPE and dies

"Unit" test:
https://github.com/jfriesse/csts/blob/master/tests/sigpipe-on-confdb-exit.sh

Actual results:
$res != 0

Expected results:
$res == 0

Additional info:
Problem is NOT specific to confdb, but it's a way how to reproduce problem reliably.
Comment 7 Jaroslav Kortus 2013-09-11 09:19:09 EDT

Verified using sigpipe-on-confdb-exit.sh test:

FAIL on corosync-1.4.1-15.el6.x86_64 (RHEL6.4)
PASS on corosync-1.4.1-17.el6.x86_64 (RHEL6.5)
Comment 9 errata-xmlrpc 2013-11-20 23:34:09 EST
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-1531.html

Note You need to log in before you can comment on or make changes to this bug.