Bug 679531

Summary: read/write syscalls are suspect in that they do not handle signal interrupts
Product: Red Hat Enterprise Linux 6 Reporter: Steven Dake <sdake>
Component: corosyncAssignee: Angus Salkeld <asalkeld>
Status: CLOSED NOTABUG QA Contact: Cluster QE <mspqa-list>
Severity: medium Docs Contact:
Priority: low    
Version: 6.2CC: cluster-maint, jfriesse, sdake
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 679534 (view as bug list) Environment:
Last Closed: 2011-02-23 16:45:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 679534    
Attachments:
Description Flags
patch that shows read is restarted if interrupted by signal none

Description Steven Dake 2011-02-22 19:40:53 UTC
Description of problem:
If a read/write occurs while a signal is delivered to corosync, the signal could interrupt the read/write operation.  Hunt down all read/write operations in corosync of fixed length and add mechanism to handle interrupted read/write system calls.

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

How reproducible:
theoretical problem, could be cause of ring id file being zero.

Steps to Reproduce:
1. none known
2.
3.
  
Actual results:
read and write operations on files read or write may only return partial read or  partial write.

Expected results:
read or write operations should return full length of read/write even when signals interrupt the operation.

Additional info:

Comment 3 Steven Dake 2011-02-23 16:45:31 UTC
Reading signal(7) man page isn't very clear about restarts (it says disks do not count as "slow medium" and don't return EINTR if interrupted with SIGACTION but other mediums do.

I wrote a test case attached which verifies this manpage behavior with 1gb of reads couldn't get a short read operation.  It says this may be linux specific, so if people report this in the future on other platforms we can reopen.

Comment 4 Steven Dake 2011-02-23 16:46:44 UTC
Created attachment 480526 [details]
patch that shows read is restarted if interrupted by signal