Hải ly Bionic, 18.04.
Một điều buồn cười đã xảy ra ngày hôm nay. Tôi có một hệ thống, hoạt động tốt, đã khởi động lên máy tính để bàn - thời gian hoạt động khoảng 80 ngày, rất nhiều cửa sổ mở trên máy tính để bàn. Mọi thứ đều ổn, cho đến khi... GUI đang chạy trên tty1 (như mong đợi).
Khi cố gắng gỡ lỗi một vấn đề khác, tôi quyết định chuyển từ GUI máy tính để bàn sang bảng điều khiển ảo và đăng nhập. Vì vậy, tôi thực hiện "sudo chvt 2" và nhận được lời nhắc đăng nhập trên tty2. Càng xa càng tốt. Tôi đăng nhập với tư cách chính mình (trên tty2), thực hiện một vài thao tác, sau đó đăng xuất (thông qua ^D) - hy vọng sẽ quay lại lời nhắc đăng nhập, từ đó tôi có thể quay lại phiên máy tính để bàn GUI của mình.
Tuy nhiên, điều tiếp theo xảy ra là tôi thấy một màn hình màu tím thuần túy, sau đó khoảng 10 giây, một màn hình GUI yêu cầu mật khẩu của tôi. Tôi đăng nhập và được cung cấp một màn hình mới, sạch sẽ. Tất cả các cửa sổ trước đó đã biến mất (có nghĩa là tôi phải tìm ra những gì đã có trước đó và khởi động lại mọi thứ).
Có vẻ như bằng cách nào đó, khi đăng xuất khỏi tty2, đã gửi tín hiệu Hangup tới tất cả các quy trình đang chạy trên màn hình GUI, bao gồm cả chính màn hình đó, buộc bạn phải đăng nhập lại và khởi động lại bất cứ thứ gì đã chạy trước đó.
Lý do tại sao điều này xảy ra?
Một số thông tin bổ sung:
Sau khi màn hình khởi động lại - và sau khi tôi chạy tập lệnh để mở các cửa sổ (chương trình) thông thường của mình - tôi thấy rằng có một mê cung các quy trình đang chạy trên tty1, chạy với tư cách người dùng "gdm" và cũng có một mê cung của được xử lý trên tty3, chạy với tư cách người dùng "tôi". Tất cả các quy trình này (trên cả tty1 và tty3) đều hiển thị là đã bắt đầu tại thời điểm khởi động lại màn hình nền. Có một tiến trình duy nhất (a getty) đang chạy trên tty2.
Có một tệp duy nhất trong /var/crash, được đánh dấu thời gian tại thời điểm khởi động lại máy tính để bàn, tương ứng với một trong các quy trình của tôi (tức là thứ tôi đã chạy trong một trong các cửa sổ đầu cuối của mình tại thời điểm xảy ra sự cố). Tệp đó cho thấy nó đã bị giết bởi tín hiệu 6 (SIGABRT). SIGABRT thường do chương trình không xác nhận (3) gây ra.