Castor bionic, 18.04.
Un lucru amuzant s-a întâmplat astăzi. Am un sistem, care funcționează bine, pornit până la desktop - timp de funcționare aproximativ 80 de zile, multe ferestre deschise pe desktop. Totul în regulă, până când... GUI rulează pe tty1 (cum era de așteptat).
În încercarea de a depana o altă problemă, decid să trec de la GUI desktop la o consolă virtuală și să mă autent. Deci, fac „sudo chvt 2” și ajung la promptul de conectare pe tty2. Până acum, bine. Mă conectez ca mine (pe tty2), fac câteva lucruri, apoi mă deconectez (prin ^D) - așteptând să revin la o solicitare de conectare, de la care pot reveni la sesiunea mea de desktop GUI.
Cu toate acestea, următorul lucru care se întâmplă este că mi se prezintă un ecran pur purpuriu, apoi aproximativ 10 secunde mai târziu, un ecran GUI care îmi cere parola. Mă conectez și mi se prezintă un desktop curat și proaspăt. Toate ferestrele care au fost anterior acolo au dispărut (adică trebuie să îmi dau seama ce a fost acolo înainte și să repornesc totul).
Se pare că cumva, deconectarea de la tty2, a trimis un semnal de suspendare către toate procesele care rulează pe desktop-ul GUI, inclusiv desktopul în sine, forțându-vă să vă conectați din nou și să reporniți orice rula înainte.
De ce se întâmplă asta?
Câteva informații suplimentare:
După repornirea desktopului - și după ce mi-am rulat scripturile pentru a-mi deschide ferestrele (programele) obișnuite - constat că există un labirint de procese care rulează pe tty1, rulează ca utilizator „gdm” și, de asemenea, un labirint de procesat pe tty3, rulând ca utilizator „eu”. Toate aceste procese (atât pe tty1, cât și pe tty3) arată ca fiind pornite în momentul repornirii desktopului. Există un singur proces (un getty) care rulează pe tty2.
Există un singur fișier în /var/crash, marcat de timp în momentul repornirii desktopului, care corespunde unuia dintre procesele mele (adică, ceva ce rulam într-una dintre ferestrele terminalului meu în momentul prăbușirii). Fișierul respectiv arată că a fost ucis de semnalul 6 (SIGABRT). SIGABRT este de obicei cauzat de un program care nu reușește un assert(3).