43

I have installed tmux from source on my localspace in Fedora. It was working nicely so far. But suddenly can not run it anymore, when run tmux, it just halts. Tried different command options like ls-sessions, none works. Killed all the processes of my user, deleted all the files of tmux and libevnet, and reinstalled them again from scratch. Still same, and tmux command in terminal just freezes without any actual error.

the
  • 21,007
  • 11
  • 68
  • 101
memimo
  • 501
  • 1
  • 4
  • 8

9 Answers9

71

I had faced this problem for a long time and after a bit of searching I figured out that this was being caused because I accidently hit Ctrl+S (Ctrl+A+S is my shortcut for switching panes), and this turns off flow control in terminals and stops the terminal from accepting input. It can be reenabled by pressing Ctrl+Q.

Source: https://superuser.com/a/553349/137226

Community
  • 1
  • 1
Hashken
  • 4,396
  • 7
  • 35
  • 51
45

Had a similar issue, where I had a tmux session with two buffers. I didn't see anything I typed, but when I switched between buffers what I had typed previously would appear onscreen. stty sane didn't work.

I detached Ctrl-b+d, and noticed that there was still a client attached when I looked at tmux list-clients. tmux detach-client removed it, and then I could reattach and the everything worked again.

dsummersl
  • 6,588
  • 50
  • 65
18

If it is ok to lose your sessions, try deleting the tmux-NNNNNNN directory, where NNNNNNN is a number, under your /tmp directory. According to the tmux manual, if the TMPDIR environment variable is set, the tmux-NNNNNNN will be put in the TMPDIR.

tmux stores the server socket in a directory under /tmp (or TMPDIR if set);

This solved my problem of not being able to run tmux commands that are related to sessions. I also tried the following, but they did not work:

  • killall -9 tmux
  • reinstall tmux
  • restart shell session

I could not easily restart the operating system, because it's a shared server managed by others.

Logstar
  • 442
  • 6
  • 11
10

tmux was halting right after I started it. Ctrl-Q and Ctrl-C didn't do anything.

Fixed with

killall -9 tmux

(May be a different problem, but this question showed up in Google.)

the
  • 21,007
  • 11
  • 68
  • 101
  • 1
    `tmux` was running here since Nov 8 (5 weeks), only `kill -9` did help too. `ps waxl` showed it was in a deep sleep: `1 3605 16359 1 20 0 33004 4156 n_tty_ Ss ? 41:37 tmux`. Do you remember your flags? – ott-- Dec 16 '15 at 17:07
  • Nope. But I will check `ps waxl` next time this happens. – the Dec 16 '15 at 18:48
  • At least get a stack trace. Otherwise killing it is as much of a fix as shutting off the computer. If you expect it to happen again - which you probably should - you can also configure Tmux to log its buffer to a file so you can do a bit of a post-mortem. – John P Dec 19 '17 at 08:16
8

I had the same issue. The cause is that the tmux buffer is full, and it also may happens cause of multi clients to the tmux session.

To solve it you need to detach all the clients from the session, and reattach it.

The best way I found to solve it is to add to the ~/.bashrc file this functions:

check_params() {
       if [[ $1 < $2 ]]; then
               echo -e "Usage:\n${3}"
               ok=0
       else
               ok=1
       fi

}

# detach all the clients from this session, and attach to it.
reattach_client() {
       check_params $# 1 "reattach_client <tmux_session_name>"
       if [[ $ok == 1 ]]; then
               tmux list-client | grep $1 | awk '{split($1, s, ":"); print s[1]}' | xargs tmux detach-client -t | true
               tmux attach -t $1
       fi
}

then run source ~/.bashrc to make these changes in the terminal.

Now to attach the session type:

reattach_client <session_name>

solved my issue.

Thanks to Alex Zelichenko for help me with this!

Acorn
  • 24,970
  • 5
  • 40
  • 69
Rea Haas
  • 2,018
  • 1
  • 16
  • 18
  • I had two tmux sessions which where working fine, but any tmux command in a new shell hanged. Detaching from the running tmux sessions solved the problem. Thanks. – Daan Apr 17 '20 at 07:41
  • What if you don't know the session name? – Dan Tenenbaum Apr 05 '23 at 17:58
  • You can list the sessions with the command: "tmux list-sessions" or with the shortcut "tmux ls". Good luck. – Rea Haas Apr 12 '23 at 19:39
3

You should be able to narrow down your problem a bit with a few of these tests:

  1. Give it a shot from outside X11: Ctrl+Alt+F2 (or use ssh from another computer)

  2. Test if other terminal emulators work: script and screen

  3. Try another complicated terminal application: htop and mc

  4. Reset your TTY settings: stty sane

  5. Check that your terminal identified: echo $TERM (it should be something like "xterm" or "linux")

  6. Make that your terminal capabilities file exists: ls -lh /usr/share/terminfo/*/$TERM

Dan Cecile
  • 2,403
  • 19
  • 21
3

Thanks. I found the problem. The tmux process were in D state, and I had no choice but to reboot the system. The problem came from kerberos ticket expiring after a while. And find a scripts that solves this problem: https://iain.cx/src/ktmux/

memimo
  • 501
  • 1
  • 4
  • 8
2

A less drastic action (to try before killing the tmux process) is to ssh into the machine and run the following command.

kill -CONT `pidof tmux`

Source: https://github.com/tmux/tmux/issues/507#issuecomment-271502093

Garrett
  • 47,045
  • 6
  • 61
  • 50
0

This happened to me because I accidentally tried to create two parallel tmux sessions with the same name.

What worked for me was to enter htop, checking pid's of the two running commands that created the sessions, and killing both by using kill -9 pid1 and kill -9 pid2

Alaleh
  • 1,008
  • 15
  • 27