Bugzilla will be upgraded to version 5.0 on a still to be determined date in the near future. The original upgrade date has been delayed.

Bug 959184

Summary: Corosync can exit because of SIGPIPE
Product: Red Hat Enterprise Linux 6 Reporter: Jan Friesse <jfriesse>
Component: corosyncAssignee: Jan Friesse <jfriesse>
Status: CLOSED ERRATA QA Contact: Cluster QE <mspqa-list>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 6.4CC: cluster-maint, jkortus, lnovich, sdake
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
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: ---
Description Flags
Proposed patch - Handle SIGPIPE in req_setup_send none

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)

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

How reproducible:

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:

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.