[Xcb] [PATCH xcb/libxcb] Fatal error message when we close libX11 window application
Alan Coopersmith
alan.coopersmith at oracle.com
Tue May 26 13:10:35 PDT 2015
That's libX11, not libxcb, and is simply an application error - since you
provided no handler for the window manager to send the request to close your
window gracefully, it killed your connection. The program needs to handle
WM_DELETE_WINDOW messages if you want to avoid that - for an example, see
http://www.lemoda.net/c/xlib-wmclose/
-Alan Coopersmith- alan.coopersmith at oracle.com
Oracle Solaris Engineering - http://blogs.oracle.com/alanc
On 05/26/15 01:00 PM, robert somerville wrote:
> Hi Uri:
>
> here is the message when we hit the close button: ( I can send screen captures,
> if you wish ( how ?) ) :
>
> XIO: fatal IO error 11 (Resource temporarily unavailable) on X server
> "cgy530ws:0.0"
> after 1304786 requests (1300490 known processed) with 0 events remaining.
>
> > more tttt.cxx
>
> #include <X11/Xlib.h> // Every Xlib program must include this
> #include <assert.h> // I include this to test return values the lazy way
> #include <unistd.h> // So we got the profile for 10 seconds
> #include <stdio.h>
> #include <stdlib.h>
> #include <execinfo.h>
>
> #define NIL (0) // A name for the void pointer
>
> void printBacktrace() {
> int j, nptrs;
> #define SIZE 100
> void *buffer[100];
> char **strings;
>
> nptrs = backtrace(buffer, SIZE);
> printf("backtrace() returned %d addresses\n", nptrs);
>
> /* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)
> would produce similar output to the following: */
>
> strings = backtrace_symbols(buffer, nptrs);
> if (strings == NULL) {
> perror("backtrace_symbols");
> exit(EXIT_FAILURE);
> }
>
> for (j = 0; j < nptrs; j++)
> printf("%s\n", strings[j]);
>
> free(strings);
> }
>
> int myIOXError(Display *disp)
> {
> printf("ERROR Received a X IO error on display=%x.\n", disp);
> printBacktrace();
> return True;
> }
>
> main() {
> Display *dpy = XOpenDisplay(NIL);
> assert(dpy);
>
> int blackColor = BlackPixel(dpy, DefaultScreen(dpy));
> int whiteColor = WhitePixel(dpy, DefaultScreen(dpy));
>
> // Create the window
> Window w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0,
> 200, 100, 0, blackColor, blackColor);
>
> // We want to get MapNotify events
> XSelectInput(dpy, w, StructureNotifyMask);
>
> // "Map" the window (that is, make it appear on the screen)
> XMapWindow(dpy, w);
>
> // Create a "Graphics Context"
> GC gc = XCreateGC(dpy, w, 0, NIL);
>
> // Tell the GC we draw using the white color
> XSetForeground(dpy, gc, whiteColor);
>
> // register io error handler
> // XSetIOErrorHandler(myIOXError);
>
> // Wait for the MapNotify event
> for(;;) {
> XEvent e;
> XNextEvent(dpy, &e);
> if (e.type == MapNotify)
> break;
> }
>
> // Draw the line
> for(;;) {
> XDrawLine(dpy, w, gc, 10, 60, 180, 20);
> // Send the "DrawLine" request to the server
> XFlush(dpy);
> }
>
> // Wait for 10 seconds
> sleep(10);
> }
>
>
>
> ldd tttt
> linux-vdso.so.1 => (0x00007f7786ae2000)
> libX11.so.6 => /usr/lib64/libX11.so.6 (0x0000003ede200000)
> libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003ee1e00000)
> libm.so.6 => /lib64/libm.so.6 (0x0000003edb600000)
> libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003ee1600000)
> libc.so.6 => /lib64/libc.so.6 (0x0000003edae00000)
> libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x0000003edda00000)
> libdl.so.2 => /lib64/libdl.so.2 (0x0000003edba00000)
> /lib64/ld-linux-x86-64.so.2 (0x0000003edaa00000)
> libXau.so.6 => /usr/lib64/libXau.so.6 (0x0000003edde00000)
>
> On Tue, May 26, 2015 at 1:54 PM, Uli Schlachter <psychon at znc.in
> <mailto:psychon at znc.in>> wrote:
>
> Hi,
>
> Am 26.05.2015 um 12:02 schrieb robert somerville:
> > Hello All:
> > This is my first post to this group, please forgive any newbie mistakes ..
> >
> > We seem to be having this error on our Redhat 6.6 x86-64 system ! Is there
> > a version of XCB out there that will fix this problem ? This error occurs
> > also in a third party API and is apparently killing us. It also occurs on a
> > test drawing program when we close the window ( I believe we found it here,
> > or nearby)
> >
> > Any suggestions how we should go about fixing this ???
> > I believe (off the top of my head) that we are running Redhat libxcb-1.9.?
>
> which error message? Which test drawing program? Any more information than
> "there is an error message when we close our application"?
>
> Cheers,
> Uli
> --
> <alanc> I think someone had a Xprint version of glxgears at one point,
> but benchmarking how many GL pages you can print per second
> was deemed too silly to merge
>
>
>
>
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb
>
More information about the Xcb
mailing list