Starting with the amd64 snapshot of February 9th, there is a regression
in tmux which can lead to a bus error on startup or when sourcing a file
that sources another file.

The easiest way I found to reproduce the crash is as follows:

$ pwd
/home/user
$ ls
$ cat .tmux.conf
source-file .mytmuxconf
$ cat .mytmuxconf
set-option -g repeat-time 200
$ tmux
$ echo $?
1
$ ls
tmux.core
$

It seems that revision 1.21 of cmd-queue.c is responsible for this crash.
Reverting cmd-queue.c to revision 1.20 and adjusting the prototype of 
cmdq_guard() in tmux.h accordingly seems to fix this problem.


Here's a backtrace of `tmux -vvv' (without debugging symbols, sorry):

GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-unknown-openbsd5.7"...(no debugging symbols 
found)

Core was generated by `tmux'.
Program terminated with signal 10, Bus error.
(no debugging symbols found)
Loaded symbols for /usr/bin/tmux
Reading symbols from /usr/lib/libutil.so.12.1...done.
Loaded symbols for /usr/lib/libutil.so.12.1
Reading symbols from /usr/lib/libcurses.so.14.0...done.
Loaded symbols for /usr/lib/libcurses.so.14.0
Reading symbols from /usr/lib/libevent.so.4.1...done.
Loaded symbols for /usr/lib/libevent.so.4.1
Reading symbols from /usr/lib/libc.so.78.1...done.
Loaded symbols for /usr/lib/libc.so.78.1
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
#0  0x000016b84f7225f1 in cfg_default_done () from /usr/bin/tmux
(gdb) bt
#0  0x000016b84f7225f1 in cfg_default_done () from /usr/bin/tmux
#1  0x000016b84f722715 in cfg_default_done () from /usr/bin/tmux
#2  0x000016b84f73b046 in server_client_callback () from /usr/bin/tmux
#3  0x000016b84f7129b2 in cfg_default_done () from /usr/bin/tmux
#4  0x000016b84f712aa8 in cfg_default_done () from /usr/bin/tmux
#5  0x000016b84f7420c0 in server_client_callback () from /usr/bin/tmux
#6  0x000016b84f70fe91 in ?? () from /usr/bin/tmux
#7  0x0000000000000000 in ?? ()
(gdb) q

And the corresponding log files: 

$ cat tmux-client-22833.log
socket is /tmp/tmux-1005/default
trying connect
connect failed: Connection refused
lock file is /tmp/tmux-1005/default.lock
flock succeeded
got lock
trying connect
connect failed: Connection refused
starting server
$ cat tmux-server-25507.log
server started, pid 25507
cmdq 0x16bac52dca80: bind-key C-b send-prefix (client -1)
cmdq 0x16bac52dca80: bind-key C-o rotate-window (client -1)
cmdq 0x16bac52dca80: bind-key C-z suspend-client (client -1)
cmdq 0x16bac52dca80: bind-key Space next-layout (client -1)
cmdq 0x16bac52dca80: bind-key ! break-pane (client -1)
cmdq 0x16bac52dca80: bind-key " split-window (client -1)
cmdq 0x16bac52dca80: bind-key # list-buffers (client -1)
cmdq 0x16bac52dca80: bind-key $ command-prompt -I#S "rename-session '%%'" 
(client -1)
cmdq 0x16bac52dca80: bind-key % split-window -h (client -1)
cmdq 0x16bac52dca80: bind-key & confirm-before "-pkill-window #W? (y/n)" 
kill-window (client -1)
cmdq 0x16bac52dca80: bind-key ' command-prompt -pindex "select-window -t ':%%'" 
(client -1)
cmdq 0x16bac52dca80: bind-key ( switch-client -p (client -1)
cmdq 0x16bac52dca80: bind-key ) switch-client -n (client -1)
cmdq 0x16bac52dca80: bind-key , command-prompt -I#W "rename-window '%%'" 
(client -1)
cmdq 0x16bac52dca80: bind-key - delete-buffer (client -1)
cmdq 0x16bac52dca80: bind-key . command-prompt "move-window -t '%%'" (client -1)
cmdq 0x16bac52dca80: bind-key 0 select-window -t:0 (client -1)
cmdq 0x16bac52dca80: bind-key 1 select-window -t:1 (client -1)
cmdq 0x16bac52dca80: bind-key 2 select-window -t:2 (client -1)
cmdq 0x16bac52dca80: bind-key 3 select-window -t:3 (client -1)
cmdq 0x16bac52dca80: bind-key 4 select-window -t:4 (client -1)
cmdq 0x16bac52dca80: bind-key 5 select-window -t:5 (client -1)
cmdq 0x16bac52dca80: bind-key 6 select-window -t:6 (client -1)
cmdq 0x16bac52dca80: bind-key 7 select-window -t:7 (client -1)
cmdq 0x16bac52dca80: bind-key 8 select-window -t:8 (client -1)
cmdq 0x16bac52dca80: bind-key 9 select-window -t:9 (client -1)
cmdq 0x16bac52dca80: bind-key : command-prompt (client -1)
cmdq 0x16bac52dca80: bind-key ; last-pane (client -1)
cmdq 0x16bac52dca80: bind-key = choose-buffer (client -1)
cmdq 0x16bac52dca80: bind-key ? list-keys (client -1)
cmdq 0x16bac52dca80: bind-key D choose-client (client -1)
cmdq 0x16bac52dca80: bind-key L switch-client -l (client -1)
cmdq 0x16bac52dca80: bind-key [ copy-mode (client -1)
cmdq 0x16bac52dca80: bind-key ] paste-buffer (client -1)
cmdq 0x16bac52dca80: bind-key c new-window (client -1)
cmdq 0x16bac52dca80: bind-key d detach-client (client -1)
cmdq 0x16bac52dca80: bind-key f command-prompt "find-window '%%'" (client -1)
cmdq 0x16bac52dca80: bind-key i display-message (client -1)
cmdq 0x16bac52dca80: bind-key l last-window (client -1)
cmdq 0x16bac52dca80: bind-key n next-window (client -1)
cmdq 0x16bac52dca80: bind-key o select-pane -t:.+ (client -1)
cmdq 0x16bac52dca80: bind-key p previous-window (client -1)
cmdq 0x16bac52dca80: bind-key q display-panes (client -1)
cmdq 0x16bac52dca80: bind-key r refresh-client (client -1)
cmdq 0x16bac52dca80: bind-key s choose-tree (client -1)
cmdq 0x16bac52dca80: bind-key t clock-mode (client -1)
cmdq 0x16bac52dca80: bind-key w choose-window (client -1)
cmdq 0x16bac52dca80: bind-key x confirm-before "-pkill-pane #P? (y/n)" 
kill-pane (client -1)
cmdq 0x16bac52dca80: bind-key z resize-pane -Z (client -1)
cmdq 0x16bac52dca80: bind-key { swap-pane -U (client -1)
cmdq 0x16bac52dca80: bind-key } swap-pane -D (client -1)
cmdq 0x16bac52dca80: bind-key ~ show-messages (client -1)
cmdq 0x16bac52dca80: bind-key PPage copy-mode -u (client -1)
cmdq 0x16bac52dca80: bind-key -r Up select-pane -U (client -1)
cmdq 0x16bac52dca80: bind-key -r Down select-pane -D (client -1)
cmdq 0x16bac52dca80: bind-key -r Left select-pane -L (client -1)
cmdq 0x16bac52dca80: bind-key -r Right select-pane -R (client -1)
cmdq 0x16bac52dca80: bind-key M-1 select-layout even-horizontal (client -1)
cmdq 0x16bac52dca80: bind-key M-2 select-layout even-vertical (client -1)
cmdq 0x16bac52dca80: bind-key M-3 select-layout main-horizontal (client -1)
cmdq 0x16bac52dca80: bind-key M-4 select-layout main-vertical (client -1)
cmdq 0x16bac52dca80: bind-key M-5 select-layout tiled (client -1)
cmdq 0x16bac52dca80: bind-key M-n next-window -a (client -1)
cmdq 0x16bac52dca80: bind-key M-o rotate-window -D (client -1)
cmdq 0x16bac52dca80: bind-key M-p previous-window -a (client -1)
cmdq 0x16bac52dca80: bind-key -r M-Up resize-pane -U 5 (client -1)
cmdq 0x16bac52dca80: bind-key -r M-Down resize-pane -D 5 (client -1)
cmdq 0x16bac52dca80: bind-key -r M-Left resize-pane -L 5 (client -1)
cmdq 0x16bac52dca80: bind-key -r M-Right resize-pane -R 5 (client -1)
cmdq 0x16bac52dca80: bind-key -r C-Up resize-pane -U (client -1)
cmdq 0x16bac52dca80: bind-key -r C-Down resize-pane -D (client -1)
cmdq 0x16bac52dca80: bind-key -r C-Left resize-pane -L (client -1)
cmdq 0x16bac52dca80: bind-key -r C-Right resize-pane -R (client -1)
socket path /tmp/tmux-1005/default
new client 7
loading /home/user/.tmux.conf
/home/user/.tmux.conf: source-file .mytmuxconf
cmdq 0x16ba6c017e80: source-file .mytmuxconf (client -1)
loading .mytmuxconf
.mytmuxconf: set-option -g repeat-time 200
cmdq 0x16ba6c017580: set-option -g repeat-time 200 (client -1)

Reply via email to