aboutsummaryrefslogtreecommitdiff
path: root/patches/glibc/unsubmitted-prof-eintr.diff
blob: 1b0808c97fc25bdf869f35dbebda64edadcb29b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
When profiling ext2fs, the shutdown stops all RPC, which thus interrupts this
open, and we have to retry here.

TODO: is open really supposed to expose such EINTR?  Should the generic gmon
loop around EINTR (since there might be signals happening indeed)

diff --git a/gmon/gmon.c b/gmon/gmon.c
index 6439ed1caa..507ad0c9fc 100644
--- a/gmon/gmon.c
+++ b/gmon/gmon.c
@@ -390,8 +390,10 @@ write_gmon (void)
 
     if (fd == -1)
       {
+        do
 	fd = __open_nocancel ("gmon.out", O_CREAT | O_TRUNC | O_WRONLY
 			      | O_NOFOLLOW | O_CLOEXEC, 0666);
+        while (fd < 0 && errno == EINTR);
 	if (fd < 0)
 	  {
 	    char buf[300];