Đăng câu hỏi này cho một đồng nghiệp sau khi nghiên cứu khá nhiều. Anh ta muốn kết nối với một máy chủ Centos 4 cũ thông qua ssh -X
(hoặc -Y
) và chạy một số ứng dụng X ở đó. Nó đã từng chạy tốt trong nhiều năm, nhưng các bản cập nhật gần đây (trên cả Centos 7 và Ubuntu) cho các PC khách của anh giờ đã biến điều này thành không thể. Ứng dụng của anh ta bị treo và cố gắng chạy đơn giản glxgears
dẫn đến sự cố:
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 19
Current serial number in output stream: 21
Đó thực sự là một vấn đề của phiên bản của khách hàng. Việc hoàn nguyên về Centos 6 trước đó ở phía máy khách sẽ khiến nó hoạt động trở lại. Không có gì trong nhật ký X11 ở phía máy chủ. Tôi chạy strace glxgears
mà không nhận thấy bất cứ điều gì khác thường. Tôi có thể cố gắng gì để chẩn đoán điều này hơn nữa?
EDIT: Trên bất kỳ Linux hiện đại nào, nỗ lực sau đây để buộc bối cảnh kết xuất gián tiếp sẽ thất bại:
glxinfo -i
name of display: :0
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 24 (X_GLXCreateNewContext)
Value in failed request: 0x0
Serial number of failed request: 39
Current serial number in output stream: 40
Tôi đã thử cách sau để kích hoạt lại kết xuất gián tiếp. Trừ khi tôi nhầm, tất cả những điều đó phải được thực hiện trên máy khách:
trong phần Màn hình hoặc Thiết bị của /etc/X11/xorg.conf bạn thêm:
Tùy chọn "Cho phép DirectirectXXrotrot" "Đúng"
trong / usr / bin / startx (hoặc bất cứ nơi nào startx được đặt):
defaultserverargs = "+ iglx"
trong /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf bạn thay đổi dòng:
xserver-lệnh = X -core + iglx
trước khi khởi chạy KDE, ví dụ: .kde / env / igl.sh
xuất LIBGL_ALWAYS_INDIRECT = 1
Không ai trong số họ làm việc.