title: XIO: fatal IO error 11 caused by 32-bit libxcb
body: <p>Yes, this question has been asked before, but reading the answers didn't enlighten me much.</p>
  
  <p>I wrote a C program that crashes after a few days of use. An important point is that it does NOT generate a core file, even though everything is set up so that it should (core_pattern, ulimit -c unlimited, etc. I can trigger a core dump fine with kill -SIGQUIT).</p>
  
  <p>The programs extensively logs what it does, but there's no hint about the crash in the log.
  The only message displayed at the crash (or before?) is:</p>
  
  <pre><code>XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
    after 2322 requests (2322 known processed) with 0 events remaining.
  </code></pre>
  
  <p>So two questions:
  - how is it possible for a program to crash (return $?=1) without core dump.
  - what is this error message about and what can I do ?</p>
  
  <p>System is RedHat Enterprise 6.4</p>
  
  <p>Edit:
  I managed to force a core dump by calling abort() from inside an atexit() callback:</p>
  
  <pre><code>(gdb) bt
  #0  0x00bc8424 in __kernel_vsyscall ()
  #1  0x0085a861 in raise () from /lib/libc.so.6
  #2  0x0085c13a in abort () from /lib/libc.so.6
  #3  0x0808f5cf in Unexpected () at MyCode.c:1378
  #4  0x0085de9f in exit () from /lib/libc.so.6
  #5  0x00c85701 in _XDefaultIOError () from /usr/lib/libX11.so.6
  #6  0x00c85797 in _XIOError () from /usr/lib/libX11.so.6
  #7  0x00c84055 in _XReply () from /usr/lib/libX11.so.6
  #8  0x00c68b8f in XGetImage () from /usr/lib/libX11.so.6
  #9  0x004fd6a7 in ?? () from /usr/local/lib/libcvi.so
  #10 0x00478ad5 in ?? () from /usr/local/lib/libcvi.so
  ...
  #29 0x001eed9d in ?? () from /usr/local/lib/libcvi.so
  #30 0x001eee41 in RunUserInterface () from /usr/local/lib/libcvi.so
  #31 0x0808fab4 in main (argc=2, argv=0xbfbdc984) at MyCode.c:1540
  </code></pre>
  
  <p>Anyone can enlighten me as to this X11 problem ? libcvi.so is not mine, only MyCode.c (LabWindows/CVI).</p>
  
  <p>Edit 2014-12-05:
  Here's an even more precise backtrace. Things definitely happen in X11, but I'm no X11 programmer, so looking at the source code for X from the provided linestell me only that the X server (?) is temporarily unavailable. Is there any way to simply tell it to ignore this error if it's only temporary ?</p>
  
  <pre><code>#4  0x00965eaf in __run_exit_handlers (status=1) at exit.c:78
  #5  exit (status=1) at exit.c:100
  #6  0x00c356b1 in _XDefaultIOError (dpy=0x88aeb80) at XlibInt.c:1292
  #7  0x00c35747 in _XIOError (dpy=0x88aeb80) at XlibInt.c:1498
  #8  0x00c340a6 in _XReply (dpy=0x88aeb80, rep=0xbf82fa90, extra=0, discard=0) at xcb_io.c:708
  #9  0x00c18c0f in XGetImage (dpy=0x88aeb80, d=27263845, x=0, y=0, width=60, height=20, plane_mask=4294967295, format=2) at GetImage.c:75
  #10 0x005f46a7 in ?? () from /usr/local/lib/libcvi.so
  </code></pre>
  
  <p>Corresponding lines:</p>
  
  <pre><code>XlibInt.c: _XDefaultIOError()
  1292:   exit(1);
  
  XlibInt.c: _XIOError
  1498:   _XDefaultIOError(dpy);
  
  xcb_io.c: _XReply()
  708:    if(!reply) _XIOError(dpy);
  
  GetImage.c: XGetImage()
  74: if (_XReply (dpy, (xReply *) &amp;rep, 0, xFalse) == 0 || ...
  </code></pre>