Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.
# include<stdio.h>
# include<graphics.h>
# include<math.h>
using namespace std;
int main(void)
{
    int gd=DETECT,gm;
    int r,x,y,p,xc=320,yc=240;

    initgraph(&gd,&gm,NULL);
    cleardevice();


    printf("Enter the radius ");
    scanf("%d",&r);


    x=0;
    y=r;
    putpixel(xc+x,yc-y,1);

    p=3-(2*r);

    for(x=0;x<=y;x++)
    {
        if (p<0)
        {
             y=y;
            p=(p+(4*x)+6);
        }
        else
        {
            y=y-1;

            p=p+((4*(x-y)+10));
        }

    putpixel(xc+x,yc-y,1);
    putpixel(xc-x,yc-y,2);
    putpixel(xc+x,yc+y,3);
    putpixel(xc-x,yc+y,4);
    putpixel(xc+y,yc-x,5);
    putpixel(xc-y,yc-x,6);
    putpixel(xc+y,yc+x,7);
    putpixel(xc-y,yc+x,8);

    }
    getch();
    closegraph();
}
  • installed graphics.h
  • compiled using gcc filename.cpp -0 filename -lgraph
  • then used ./filename
  • the window apperared for 10 seconds and the error below appears:
[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
heart: ../../src/xcb_io.c:273: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.
Aborted

Any solutions?

share|improve this question
    
Would you mind posting the source code somewhere, so that one can try compiling that and diagnose the problem? –  Rafał Cieślak Mar 5 '12 at 18:06

1 Answer 1

There is a bug filed in Launchpad very similar to the above problem.

One message contains a quote from the source detailing when this error condition occurs:

The error message "Unknown sequence number while processing queue" occurs in a chunk of text that has this big fat warning in front of it, about threading safety in client code:

/* Thread-safety rules:
 *
 * At most one thread can be reading from XCB's event queue at a time.
 * If you are not the current event-reading thread and you need to find
 * out if an event is available, you must wait.
 *
 * The same rule applies for reading replies.
 *
 * A single thread cannot be both the the event-reading and the
 * reply-reading thread at the same time.
 *
 * We always look at both the current event and the first pending reply
 * to decide which to process next.
 *
 * We always process all responses in sequence-number order, which may
 * mean waiting for another thread (either the event_waiter or the
 * reply_waiter) to handle an earlier response before we can process or
 * return a later one. If so, we wait on the corresponding condition
 * variable for that thread to process the response and wake us up.
 */

This seems to suggest perhaps this client application could have some faulty logic in its thread handling as relating to the xcb calls?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.