title: ICE default IO error handler doing an exit(), pid = 11281, errno = 4
body: <p>One of our PyQt app throwa an error about ICEAuthority as below and exit -</p>
  
  <blockquote>
    <p>ICE default IO error handler doing an exit(), pid = 11281, errno = 4</p>
  </blockquote>
  
  <p>On looking at the trace, we see the following -</p>
  
  <pre><code>write(25, "\1\0\3\200\3\0\0\0\3\0\0\0\t\0\0\0\10\0\0\0\1\0\0\0\377rtStyle", 32) = 32
  read(25, 0x16a67f0, 8) = ? ERESTARTSYS (To be restarted)
  — SIGCHLD (Child exited) @ 0 (0) —
  write(6, "\0", 1) = 1
  rt_sigreturn(0x2) = -1 EINTR (Interrupted system call)
  write(2, "ICE default IO error handler doi"..., 69) = 69
  </code></pre>
  
  <p>This looks like the ICEAuthority file read operation failed to restart after handling the SIGCHLD for one of the processes we spawned from the PyQt app. On googling, there are a lot of reports about ICEAuthority file failure and people suggest restarting the system, deleting the .ICEAuthority file, or unsetting SESSION_MANAGER. We are inclined to unset SESSION_MANAGER in our PyQt app for now. But I'd like to understand why the operation failed to restart the read operation of the ICEAuthority file. Is this a bug in the gnome-session code? Is anyone aware of it?</p>
  
  <p>Also I'd like to mention that I tried setting SA_RESTART to false for the SIGCHLD handle to restart the operation. This failed to work.</p>
  
  <p>Please find below our system details -</p>
  
  <blockquote>
    <p>Linux nyc-nx-l01.schrodinger.com 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux</p>
  </blockquote>
  
  <p>CentOS release 6.4 (Final)</p>