I tried compiling version 1.2 (pkgsrc is at 1.1) with and without
the changes you suggested. It always gives "fatal: main_callback:
msgbuf_write failed"; with suggested changes it spins:

 6419      1 tmux     RET   recvmsg 0
 6419      1 tmux     CALL  kevent(4,0x12008e000,1,0x12008f000,0x40,0x1ffffcf70)
 6419      1 tmux     RET   kevent 1
 6419      1 tmux     CALL  clock_gettime(3,0x1ffffcf70)
 6419      1 tmux     RET   clock_gettime 0
 6419      1 tmux     CALL  recvmsg(5,0x1ffffbe40,0)
 6419      1 tmux     GIO   fd 5 read 0 bytes
       ""

Here's the kdump of `ktrace -di ./tmux` (truncated before line
1000; it refers to the compiled 1.2 version with client.c,
server-client.c and tmux.c modified):
http://chr.tx0.org/arch/ml/tmux/ktrace-20100424_3.txt

Well, I'll keep trying and report something if I manage to make it
work.

Thanks again.

Christian


Nicholas Marriott (Saturday 24 April 2010, 09:55):
> 
> Looks like your poll may be returning an fd that isn't actually ready
> for reading, please tr this, although if it does it many times tmux may
> just spin:
> 
> Index: client.c
> ===================================================================
> RCS file: /cvsroot/tmux/tmux/client.c,v
> retrieving revision 1.90
> diff -u -p -r1.90 client.c
> --- client.c  4 Dec 2009 22:14:47 -0000       1.90
> +++ client.c  24 Apr 2010 09:53:32 -0000
> @@ -262,7 +262,7 @@ client_callback(unused int fd, short eve
>       ssize_t n;
>  
>       if (events & EV_READ) {
> -             if ((n = imsg_read(&client_ibuf)) == -1 || n == 0)
> +             if ((n = imsg_read(&client_ibuf)) == -1)
>                       goto lost_server;
>               if (client_dispatch() != 0) {
>                       event_loopexit(NULL);
> Index: server-client.c
> ===================================================================
> RCS file: /cvsroot/tmux/tmux/server-client.c,v
> retrieving revision 1.31
> diff -u -p -r1.31 server-client.c
> --- server-client.c   8 Feb 2010 18:27:34 -0000       1.31
> +++ server-client.c   24 Apr 2010 09:53:32 -0000
> @@ -521,7 +521,7 @@ server_client_msg_dispatch(struct client
>       struct msg_environ_data  environdata;
>       ssize_t                  n, datalen;
>  
> -     if ((n = imsg_read(&c->ibuf)) == -1 || n == 0)
> +     if ((n = imsg_read(&c->ibuf)) == -1)
>               return (-1);
>  
>       for (;;) {
> Index: tmux.c
> ===================================================================
> RCS file: /cvsroot/tmux/tmux/tmux.c,v
> retrieving revision 1.205
> diff -u -p -r1.205 tmux.c
> --- tmux.c    22 Apr 2010 21:48:49 -0000      1.205
> +++ tmux.c    24 Apr 2010 09:53:32 -0000
> @@ -671,7 +671,7 @@ main_dispatch(const char *shellcmd)
>       struct msg_print_data   printdata;
>       struct msg_shell_data   shelldata;
>  
> -     if ((n = imsg_read(main_ibuf)) == -1 || n == 0)
> +     if ((n = imsg_read(main_ibuf)) == -1)
>               fatalx("imsg_read failed");
>  
>       for (;;) {
> 

-- 
SDF Public Access UNIX System - http://sdf.lonestar.org

------------------------------------------------------------------------------
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to