Ok... I did a bit of gdb. It's a bloody mess, many things are optimized out and breakpoints are not working consistently. I got the DRI2CanFlip function to return FALSE for those lines: dri2.c:934 and dri2.c:945 That said, I was unlucky about can_flip debugging, since I hit only the TRUE returning code paths of DRI2CanFlip.