Bug 959184 - Corosync can exit because of SIGPIPE
Summary: Corosync can exit because of SIGPIPE
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: corosync
Version: 6.4
Hardware: Unspecified
OS: Unspecified
urgent
urgent
Target Milestone: rc
: ---
Assignee: Jan Friesse
QA Contact: Cluster QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-05-03 10:03 UTC by Jan Friesse
Modified: 2013-11-21 04:34 UTC (History)
4 users (show)

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.
Clone Of:
Environment:
Last Closed: 2013-11-21 04:34:09 UTC


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


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2013:1531 normal SHIPPED_LIVE corosync bug fix and enhancement update 2013-11-21 00:40:57 UTC

Description Jan Friesse 2013-05-03 10:03:20 UTC
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 13:19:09 UTC

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-21 04:34:09 UTC
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.