I read the relevant Xorg-server code and the same bug is still there and not fixed. There may be various possible reasons why VT_ACTIVATE succeeds but VT_WAITACTIVE will wait forever because in between, some other process has grabbed it.
A clean solution would be to do lock somehow the VT switching. I have read that this is possible, though very complicated and very messy.
Another possible fix/workaround would be do do the VT_ACTIVE in a endless loop in a separate thread and halt when either the VT_WAITACTIVE returns or when one of them return an error.
In any case, fixing this at another place than in Xorg would be the wrong way!
@David:
Read my comment #49. And also the linked Freedesktop bug. http:// bugs.freedeskto p.org/show_ bug.cgi? id=29975
I read the relevant Xorg-server code and the same bug is still there and not fixed. There may be various possible reasons why VT_ACTIVATE succeeds but VT_WAITACTIVE will wait forever because in between, some other process has grabbed it.
A clean solution would be to do lock somehow the VT switching. I have read that this is possible, though very complicated and very messy.
Another possible fix/workaround would be do do the VT_ACTIVE in a endless loop in a separate thread and halt when either the VT_WAITACTIVE returns or when one of them return an error.
In any case, fixing this at another place than in Xorg would be the wrong way!