Hide Forgot
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:
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.
Created attachment 480526 [details] patch that shows read is restarted if interrupted by signal