It doesn't crash for me, but this does: tmux setb $(perl -e "print \"x\"x1042")
Please try this fix (also fixes some other similar things): diff --git a/arguments.c b/arguments.c index d4e5e53..fd656b1 100644 --- a/arguments.c +++ b/arguments.c @@ -125,7 +125,7 @@ args_free(struct args *args) size_t args_print(struct args *args, char *buf, size_t len) { - size_t off; + size_t off, used; int i; const char *quotes; struct args_entry *entry; @@ -165,9 +165,12 @@ args_print(struct args *args, char *buf, size_t len) quotes = "\""; else quotes = ""; - off += xsnprintf(buf + off, len - off, "%s-%c %s%s%s", + used = xsnprintf(buf + off, len - off, "%s-%c %s%s%s", off != 0 ? " " : "", entry->flag, quotes, entry->value, quotes); + if (used > len - off) + used = len - off; + off += used; } /* And finally the argument vector. */ @@ -181,8 +184,11 @@ args_print(struct args *args, char *buf, size_t len) quotes = "\""; else quotes = ""; - off += xsnprintf(buf + off, len - off, "%s%s%s%s", + used = xsnprintf(buf + off, len - off, "%s%s%s%s", off != 0 ? " " : "", quotes, args->argv[i], quotes); + if (used > len - off) + used = len - off; + off += used; } return (off); diff --git a/cmd-list.c b/cmd-list.c index 08e2067..7ef8d1c 100644 --- a/cmd-list.c +++ b/cmd-list.c @@ -103,7 +103,7 @@ size_t cmd_list_print(struct cmd_list *cmdlist, char *buf, size_t len) { struct cmd *cmd; - size_t off; + size_t off, used; off = 0; TAILQ_FOREACH(cmd, &cmdlist->list, qentry) { @@ -112,8 +112,12 @@ cmd_list_print(struct cmd_list *cmdlist, char *buf, size_t len) off += cmd_print(cmd, buf + off, len - off); if (off >= len) break; - if (TAILQ_NEXT(cmd, qentry) != NULL) - off += xsnprintf(buf + off, len - off, " ; "); + if (TAILQ_NEXT(cmd, qentry) != NULL) { + used = xsnprintf(buf + off, len - off, " ; "); + if (used > len - off) + used = len - off; + off += used; + } } return (off); } diff --git a/window-copy.c b/window-copy.c index 9aaf554..42b81d2 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1194,8 +1194,8 @@ window_copy_write_line( screen_write_puts(ctx, &gc, "%s", hdr); } else if (py == last && data->inputtype != WINDOW_COPY_OFF) { limit = sizeof hdr; - if (limit > screen_size_x(s)) - limit = screen_size_x(s); + if (limit > screen_size_x(s) + 1) + limit = screen_size_x(s) + 1; if (data->inputtype == WINDOW_COPY_NUMERICPREFIX) { xoff = size = xsnprintf(hdr, limit, "Repeat: %u", data->numprefix); @@ -1208,10 +1208,12 @@ window_copy_write_line( } else size = 0; - screen_write_cursormove(ctx, xoff, py); - screen_write_copy(ctx, data->backing, xoff, - (screen_hsize(data->backing) - data->oy) + py, - screen_size_x(s) - size, 1); + if (size < screen_size_x(s)) { + screen_write_cursormove(ctx, xoff, py); + screen_write_copy(ctx, data->backing, xoff, + (screen_hsize(data->backing) - data->oy) + py, + screen_size_x(s) - size, 1); + } if (py == data->cy && data->cx == screen_size_x(s)) { memcpy(&gc, &grid_default_cell, sizeof gc); On Fri, Apr 11, 2014 at 05:06:23PM +0200, Julien Rebetez wrote: > I can still reproduce on tmux from git. > > Here is the gdb backtrace (once with 'bt full') from the core dump. > > Best regards, > Julien > > > On Fri, Apr 11, 2014 at 4:40 PM, Nicholas Marriott > <nicholas.marri...@gmail.com> wrote: > > Hi > > > > tmux doesn't crash for me, please try to build tmux from git and see if > > you can still reproduce. > > > > If you can, please see if there is a core file and send me a backtrace > > from gdb. > > > > > > On Fri, Apr 11, 2014 at 04:30:54PM +0200, Julien Rebetez wrote: > >> Hello, > >> First, thanks for this wonderful software ! > >> > >> I am using tslime[1] with a custom vim plugin [2] to copy/paste code > >> from vim to an ipython session running in tmux. It's working great but > >> sometimes, tmux crashes with "[lost server]". > >> > >> In the background, tslime use 'tmux set-buffer' to send text to tmux. > >> It seems the crash is very dependent on the content of the buffer and > >> it mostly happens with somewhat large buffers. > >> > >> I wrote a small script [3] that contains an example buffer that > >> reproduces the crash. > >> > >> For example : > >> $ ./crash_tmux.sh > >> failed to connect to server: Connection refused > >> > >> If I remove (or add) one line from the buffer (for example the "if > >> True" near the end), tmux doesn't crash anymore : > >> # Modify crash_tmux.sh to remove the "if True" line > >> $ ./crash_tmux.sh > >> test: 1 windows (created Fri Apr 11 15:25:26 2014) [80x22] > >> > >> System informations : > >> - tmux version : 1.9a > >> - terminal emulator : gnome-terminal > >> - $TERM : xterm-256color > >> - OS : Ubuntu 13.10 > >> > >> I also tried removing my .tmux.conf, but it doesn't help. > >> > >> Then, I checked out the git master and started a bisect. (see > >> bisect.log on the gist [3] linked below). It seems the problem is > >> introduced in this revision : > >> http://sourceforge.net/p/tmux/tmux-code/ci/f8c86a9515ae863fcbc38769544be983ce494a3c > >> > >> So I tried commenting out the lines added by this commit and it > >> appears line 217 of cmd-queue.c is the problem : > >> > >> cmd_print(cmdq->cmd, s, sizeof s); > >> > >> If i comment this line, the crash goes away ! Since this seems like > >> those are debug statements, I'll try to run the patched tmux and I'll > >> see if I get any more crashes in the next days. > >> > >> Best regards > >> Julien > >> > >> [1] https://github.com/kikijump/tslime.vim > >> [2] https://github.com/julienr/vimux-pyutils > >> [3] https://gist.github.com/julienr/10470414 > >> > >> ------------------------------------------------------------------------------ > >> Put Bad Developers to Shame > >> Dominate Development with Jenkins Continuous Integration > >> Continuously Automate Build, Test & Deployment > >> Start a new project now. Try Jenkins in the cloud. > >> http://p.sf.net/sfu/13600_Cloudbees > >> _______________________________________________ > >> tmux-users mailing list > >> tmux-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/tmux-users > [New LWP 8918] > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > Core was generated by `/home/julien/programs/tmux-git/_install/bin/tmux > new-session -d -s test -n test'. > Program terminated with signal 6, Aborted. > #0 0x00007fc549950f77 in __GI_raise (sig=sig@entry=6) at > ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > #0 0x00007fc549950f77 in __GI_raise (sig=sig@entry=6) at > ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > #1 0x00007fc5499545e8 in __GI_abort () at abort.c:90 > #2 0x00007fc54998e4fb in __libc_message (do_abort=do_abort@entry=1, > fmt=fmt@entry=0x7fc549a9ff10 "*** %s ***: %s terminated\n") at > ../sysdeps/unix/sysv/linux/libc_fatal.c:199 > #3 0x00007fc549a2c08c in __GI___fortify_fail (msg=<optimized out>, > msg@entry=0x7fc549a9fef8 "stack smashing detected") at fortify_fail.c:37 > #4 0x00007fc549a2c030 in __stack_chk_fail () at stack_chk_fail.c:28 > #5 0x000000000041016e in cmdq_continue (cmdq=0x1218a10) at cmd-queue.c:267 > #6 0x000000000040fd05 in cmdq_run (cmdq=0x1218a10, cmdlist=0x1220d60) at > cmd-queue.c:176 > #7 0x00000000004362ea in server_client_msg_command (c=0x1222f40, > imsg=0x7fffba5bfe20) at server-client.c:943 > #8 0x0000000000435e11 in server_client_msg_dispatch (c=0x1222f40) at > server-client.c:836 > #9 0x000000000043476d in server_client_callback (fd=5, events=2, > data=0x1222f40) at server-client.c:231 > #10 0x00007fc549f09f94 in event_base_loop () from > /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 > #11 0x0000000000438fde in server_loop () at server.c:210 > #12 0x0000000000438fbd in server_start (lockfd=5, lockfile=0x121a650 "") at > server.c:201 > #13 0x0000000000405ded in client_connect (path=0x692a60 <socket_path> > "/tmp/tmux-1000/default", start_server=1) at client.c:130 > #14 0x00000000004060ff in client_main (argc=6, argv=0x7fffba5c3400, > flags=65536) at client.c:238 > #15 0x0000000000443c5e in main (argc=6, argv=0x7fffba5c3400) at tmux.c:389 > [New LWP 8918] > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > Core was generated by `/home/julien/programs/tmux-git/_install/bin/tmux > new-session -d -s test -n test'. > Program terminated with signal 6, Aborted. > #0 0x00007fc549950f77 in __GI_raise (sig=sig@entry=6) at > ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > #0 0x00007fc549950f77 in __GI_raise (sig=sig@entry=6) at > ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > resultvar = 0 > pid = 8918 > selftid = 8918 > #1 0x00007fc5499545e8 in __GI_abort () at abort.c:90 > save_stage = 2 > act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, > sa_mask = {__val = {4569798, 140736319977008, 140736319976992, 4590425, > 4590427, 140736319977464, 1234581650, 0, 0, 0, 0, 0, 0, 0, 0, 4294967295}}, > sa_flags = 0, sa_restorer = 0xffffffff00000000} > sigs = {__val = {32, 0 <repeats 15 times>}} > #2 0x00007fc54998e4fb in __libc_message (do_abort=do_abort@entry=1, > fmt=fmt@entry=0x7fc549a9ff10 "*** %s ***: %s terminated\n") at > ../sysdeps/unix/sysv/linux/libc_fatal.c:199 > ap = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = > 0x7fffba5bf8e0, reg_save_area = 0x7fffba5bf7f0}} > ap_copy = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = > 0x7fffba5bf8e0, reg_save_area = 0x7fffba5bf7f0}} > fd = 2 > on_2 = <optimized out> > list = <optimized out> > nlist = <optimized out> > cp = <optimized out> > written = <optimized out> > #3 0x00007fc549a2c08c in __GI___fortify_fail (msg=<optimized out>, > msg@entry=0x7fc549a9fef8 "stack smashing detected") at fortify_fail.c:37 > do_abort = 1 > #4 0x00007fc549a2c030 in __stack_chk_fail () at stack_chk_fail.c:28 > No locals. > #5 0x000000000041016e in cmdq_continue (cmdq=0x1218a10) at cmd-queue.c:267 > next = 0x0 > retval = CMD_RETURN_NORMAL > empty = 1 > guard = 0 > flags = 0 > s = "set-buffer \"\"##\ndef laplacian_smoothing(verts, faces):\n > \"\"\"\n Laplacian mesh smoothing\n > http://en.wikipedia.org/wiki/Laplacian_smoothing\n\n Basically, each > vertex is replaced by a weighted a"... > #6 0x000000000040fd05 in cmdq_run (cmdq=0x1218a10, cmdlist=0x1220d60) at > cmd-queue.c:176 > No locals. > #7 0x00000000004362ea in server_client_msg_command (c=0x1222f40, > imsg=0x7fffba5bfe20) at server-client.c:943 > data = {argc = 2} > buf = 0x1235c94 "set-buffer" > len = 1038 > cmdlist = 0x1220d60 > argc = 2 > argv = 0x1240440 > cause = 0x0 > __func__ = "server_client_msg_command" > #8 0x0000000000435e11 in server_client_msg_dispatch (c=0x1222f40) at > server-client.c:836 > imsg = {hdr = {type = 200, len = 1058, flags = 0, peerid = 8, pid = > 4294967295}, fd = -1, data = 0x1235c90} > stdindata = {size = 0, data = '\000' <repeats 7440 times>...} > data = 0x1235c90 "\002" > n = 1058 > datalen = 1042 > __func__ = "server_client_msg_dispatch" > #9 0x000000000043476d in server_client_callback (fd=5, events=2, > data=0x1222f40) at server-client.c:231 > c = 0x1222f40 > #10 0x00007fc549f09f94 in event_base_loop () from > /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 > No symbol table info available. > #11 0x0000000000438fde in server_loop () at server.c:210 > No locals. > #12 0x0000000000438fbd in server_start (lockfd=5, lockfile=0x121a650 "") at > server.c:201 > pair = {6, 7} > tv = {tv_sec = 1, tv_usec = 0} > cause = 0x6 <Address 0x6 out of bounds> > __func__ = "server_start" > #13 0x0000000000405ded in client_connect (path=0x692a60 <socket_path> > "/tmp/tmux-1000/default", start_server=1) at client.c:130 > sa = {sun_family = 1, sun_path = "/tmp/tmux-1000/default", '\000' > <repeats 85 times>} > size = 22 > fd = 5 > lockfd = 5 > lockfile = 0x121a650 "" > __func__ = "client_connect" > #14 0x00000000004060ff in client_main (argc=6, argv=0x7fffba5c3400, > flags=65536) at client.c:238 > cmd = 0x0 > cmdlist = 0x121a4d0 > data = 0x28282353 > cmdflags = 3 > fd = 1242818656 > i = 18981200 > ppid = 32709 > msg = MSG_COMMAND > cause = 0x0 > tio = {c_iflag = 1313166917, c_oflag = 1330536276, c_cflag = > 1280069456, c_lflag = 0, c_line = 1 '\001', c_cc = > "\000\000\000T_NO\000\000\000\000\000\000\000\000\200!\\\272\377\177\000\000\020\361\357I\305\177\000\000", > c_ispeed = 0, c_ospeed = 3126600080} > saved_tio = {c_iflag = 4208704, c_oflag = 0, c_cflag = 1998626048, > c_lflag = 4131902374, c_line = 0 '\000', c_cc = '\000' <repeats 15 times>, > "\220!\\\272\377\177\000\000@8@\000\000\000\000", <incomplete sequence \360>, > c_ispeed = 32767, c_ospeed = 0} > size = 140736319987952 > #15 0x0000000000443c5e in main (argc=6, argv=0x7fffba5c3400) at tmux.c:389 > pw = 0x0 > s = 0x0 > path = 0x1219e30 "EVENT_NOEPOLL=1" > label = 0x1219e10 "" > var = 0x7fffba5c36f0 > tmp = "/home/julien", '\000' <repeats 780 times>... > in = '\000' <repeats 255 times> > home = 0x7fffba5c5ccf "/home/julien" > pid = 0 > opt = -1 > flags = 65536 > quiet = 0 > keys = 1 > session = 0 ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users