Wie kann ich Mutt debuggen, wenn es einfriert?

2

Meine Installation von Mutt scheint in jeder Hinsicht gut zu funktionieren, außer dass sie hängt, wenn ich sie zu lange offen lasse. Solange ich mit der Benutzeroberfläche interagiere, scheint sie am Leben zu bleiben. Aber wenn ich anfange, eine E-Mail zu schreiben oder sie einfach zu lange im Leerlauf stehen lasse, friert sie ein. Ctrl+ctötet es nicht, also muss ich es nur aussetzen Ctrl+zund töten kill <pid>.

Anstatt zu fragen, was möglicherweise an meiner Installation falsch ist, möchte ich wissen, wie ein solches Problem behoben werden kann. (Obwohl alle Hinweise super hilfreich wären!) Da der Mutt-Bildschirm eingefroren ist, habe ich keine Ahnung, was los ist. Was ist der beste Weg, um so etwas zu debuggen?

Soße McBoss
quelle

Antworten:

0

muttkann im Debug-Modus gestartet werden. Dadurch wird eine Debug-Datei erstellt .muttdebug0, die beim Debuggen hilfreich sein kann.

Von der muttManpage:

-d level
      If mutt was complied with +DEBUG log debugging output to ~/.muttdebug0.  
      Level can range from 1-5 and effects verbosity. 
      A value of 2 is recommended.

Ein anderer Ansatz besteht darin, zwei Terminalsitzungen nebeneinander zu eröffnen. Laufen topoder htopin einem. In der anderen laufen mutt. Wenn das Problem auftritt, schauen Sie sich an, was topangezeigt wird. (Wenn topauch einfriert, ist das Problem möglicherweise größer als mutt.)

Sie können Ihren Beitrag auch so bearbeiten, dass er weitere Informationen zu Ihrem System und dessen Funktionsweise enthält.

  1. Wenn es muttjeden Tag zur gleichen Zeit hängt, macht dann ein anderer Job etwas mit I / O?
  2. Wenn muttimmer nach N Minuten nach der Anmeldung ein Fehler auftritt, haben Sie eine andere Aufgabe, die beim Anmelden beginnt und dann viele Ressourcen verbraucht? (Durch muttmehrmaliges Ausführen im Debug-Modus können Muster in den Protokolldateien identifiziert werden.)
  3. Haben Sie Zugriff auf /var/log/messagesoder andere Protokolle oder sar?

Es kann sein mutt, oder muttEinfrieren kann ein Symptom für etwas anderes sein.

StandardEyre
quelle
0

Ich habe mich mit gdb an einen Frozen Mutt-Prozess gebunden. Folgendes habe ich gefunden:

(gdb) bt

#0  0x00007f8327de76b0 in __read_nocancel () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f832899014b in ?? () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#2  0x00007f832898e16b in BIO_read () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
#3  0x00007f8328cadb54 in ?? () from /lib/x86_64-linux-gnu/libssl.so.1.0.0
#4  0x00007f8328caed55 in ?? () from /lib/x86_64-linux-gnu/libssl.so.1.0.0
#5  0x00007f8328cac174 in ?? () from /lib/x86_64-linux-gnu/libssl.so.1.0.0
#6  0x0000000000484365 in ssl_socket_read (conn=<optimized out>, buf=<optimized out>, len=<optimized out>) at mutt_ssl.c:304
#7  0x0000000000485bb7 in mutt_sasl_conn_read (conn=0xa1d660, 
    buf=0xa1d7f0 "+ idling\r\nDLE terminated (Success)\r\n38441 INTERNALDATE \"15-Oct-2017 12:27:13 +0000\" FLAGS () BODY[HEADER.FIELDS (DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY"..., len=1024) at mutt_sasl.c:555
#8  0x00000000004836b9 in mutt_socket_readchar (conn=conn@entry=0xa1d660, c=c@entry=0x7ffc9ee890cf "") at mutt_socket.c:172
#9  0x00000000004837d2 in mutt_socket_readln_d (buf=0xa266a0 "+ idling", buflen=512, conn=0xa1d660, dbg=dbg@entry=2) at mutt_socket.c:202
#10 0x0000000000490328 in imap_cmd_step (idata=idata@entry=0x9fe990) at command.c:112
#11 0x0000000000491188 in imap_exec (idata=0x9fe990, cmdstr=cmdstr@entry=0x0, flags=flags@entry=1) at command.c:244
#12 0x00000000004912fc in cmd_queue (cmdstr=0x4b3de5 "IDLE", idata=0x9fe990) at command.c:377
#13 cmd_start (idata=0x9fe990, cmdstr=0x4b3de5 "IDLE", flags=0) at command.c:402
#14 0x0000000000491370 in imap_cmd_start (cmdstr=0x4b3de5 "IDLE", idata=idata@entry=0x9fe990) at command.c:76
#15 imap_cmd_idle (idata=idata@entry=0x9fe990) at command.c:313
#16 0x0000000000493328 in imap_check_mailbox (ctx=ctx@entry=0xa37ba0, index_hint=index_hint@entry=0x7ffc9ee89214, force=force@entry=0) at imap.c:1401
#17 0x0000000000442d2a in mx_check_mailbox (ctx=0xa37ba0, index_hint=index_hint@entry=0x7ffc9ee89214, lock=<optimized out>, lock@entry=0) at mx.c:1336
#18 0x000000000041e1b8 in mutt_index_menu () at curs_main.c:555
#19 0x000000000040833c in main (argc=1, argv=<optimized out>) at main.c:1061

Es wartete unendlich lange auf einen blockierenden Lesevorgang. Um dies zu beheben, sollte entweder mit einer Zeitüberschreitung gelesen oder der Anruf abgebrochen werden, damit er bei Empfang eines Signals wie SIGINT unterbrochen wird.

Kirill Gorelov
quelle