Hmm well we should be including util.h via compat.h. Although I notice
we only do so if the platform has forkpty... maybe that is a problem,
try this:

diff --git a/compat.h b/compat.h
index e06f104d..b83e6189 100644
--- a/compat.h
+++ b/compat.h
@@ -101,17 +101,17 @@ void      warnx(const char *, ...);
 #include <paths.h>
 #endif
 
-#ifdef HAVE_FORKPTY
 #ifdef HAVE_LIBUTIL_H
 #include <libutil.h>
 #endif
+
 #ifdef HAVE_PTY_H
 #include <pty.h>
 #endif
+
 #ifdef HAVE_UTIL_H
 #include <util.h>
 #endif
-#endif
 
 #ifdef HAVE_VIS
 #include <vis.h>

Or you could have a look at util.h and see if fparseln is under some
stupid #ifdef?



On Sat, Oct 07, 2017 at 10:10:09AM -0500, Jason White wrote:
>    Some additional information, and another mystery:
>    While compiling tmux-2.6/cfg.c I get these warnings:
>    cfg.c:126:16: warning: implicit declaration of function 'fparseln' is
>    invalid in
>          C99 [-Wimplicit-function-declaration]
>            while ((buf = fparseln(f, NULL, &line, delim, 0)) != NULL) {
>                          ^
>    cfg.c:126:14: warning: incompatible integer to pointer conversion
>    assigning to
>          'char *' from 'int' [-Wint-conversion]
>            while ((buf = fparseln(f, NULL, &line, delim, 0)) != NULL) {
>                        ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    Regarding the implicit declaration warning, I noticed that the macOS man
>    page for fparseln() indicates that one needs to include util.h, which is
>    absent from cfg.c, so I added it.  Odd thing is that the warning did not
>    go away.
>    However, if I take out including util.h and add the function prototype
>    from util.h then that eliminates both warnings and tmux does not segfault
>    when starting a server.
>    char   *fparseln(FILE *, size_t *, size_t *, const char[3], int);
>    -Jason
> 
>      On Oct 5, 2017, at 3:03 PM, Jason White <[email protected]> wrote:
>      That does resolve the issue for me on 2.6. I'm not sure what, precisely,
>      changed or when, but:
>      On macOS 10.11.6/Xcode 7.3.1 I do not have this issue with 2.5.
>      On macOS 10.12.6/Xcode 9 it doesn't work out of the box with at least
>      2.5 or 2.6.
>      Both environments have fparseln as part of libc.
>      FPARSELN(3)              BSD Library Functions Manual            
>       FPARSELN(3)
>      NAME
>           fparseln -- return the next logical line from a stream
>      LIBRARY
>           Standard C Library (libc, -lc)
>      SYNOPSIS
>           #include <stdio.h>
>           #include <util.h>
>           char *
>           fparseln(FILE *stream, size_t *len, size_t *lineno, const char
>      delim[3], int flags);
>      -Jason
> 
>        On Oct 5, 2017, at 11:45 AM, Nicholas Marriott
>        <[email protected]> wrote:
> 
>        This seems most likely to be a bug in fparseln on your platform, does
>        it
>        work if you do this (you will need to run sh autogen.sh again before
>        configure):
> 
>        diff --git a/configure.ac b/configure.ac
>        index 83c104c3..15820a14 100644
>        --- a/configure.ac
>        +++ b/configure.ac
>        @@ -457,6 +457,7 @@ fi
> 
>        # Look for fparseln in libutil.
>        AC_SEARCH_LIBS(fparseln, util, found_fparseln=yes, found_fparseln=no)
>        +found_fparseln=no
>        if test "x$found_fparseln" = xyes; then
>        AC_DEFINE(HAVE_FPARSELN)
>        else
> 
>        On Thu, Oct 05, 2017 at 10:48:54AM -0500, Jason White wrote:
> 
>            I've had this issue on Darwin for a while now, but only recently
>          started
>            digging in to it.
>            My environment: macOS 10.12.6, Xcode 9, libevent-2.1.8, tmux-2.6
>          (same
>            issue with 2.5).
>            Issue: if I start tmux (as root or otherwise), I get a "lost
>          server"
>            message.
>            If I start with "tmux -f /dev/null" it stars fine. When I "source
>            ~/.tmux.conf", then "lost server".
>            If I create a file with a single hash "#" character in it and use
>          that for
>            my config file it also crashes with "lost server", so server falls
>          over
>            reading any config file.
>            Client/server debug logs:
>            # cat tmux-server-36281.log
>            1507217486.996408 server started (36281): version 2.6, socket
>            /private/tmp/tmux-0/default, protocol 8
>            1507217486.996427 on Darwin 16.7.0 Darwin Kernel Version 16.7.0:
>          Thu Jun
>            15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64;
>          libevent
>            2.1.8-stable (select)
>            1507217486.997625 add peer 0x7fee9781e200: 8 (0x7fee9781d800)
>            1507217486.997642 new client 0x7fee9781d800
>            1507217486.997683 loading /etc/tmux.conf
>            1507217486.997697 loading /Users/jdwhite/.tmux.conf
>            # cat tmux-client-36279.log
>            1507217486.994835 client started (36279): version 2.6, socket
>            /private/tmp/tmux-0/default, protocol 8
>            1507217486.994860 on Darwin 16.7.0 Darwin Kernel Version 16.7.0:
>          Thu Jun
>            15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64;
>          libevent
>            2.1.8-stable (select)
>            1507217486.994887 socket is /private/tmp/tmux-0/default
>            1507217486.994899 trying connect
>            1507217486.994915 connect failed: Connection refused
>            1507217486.995191 lock file is /private/tmp/tmux-0/default.lock
>            1507217486.995310 flock succeeded
>            1507217486.995314 got lock (6)
>            1507217486.995318 trying connect
>            1507217486.995323 connect failed: Connection refused
>            1507217486.995606 add peer 0x7fee98001800: 7 (0x0)
>            1507217486.996815 sending message 100 to peer 0x7fee98001800 (4
>          bytes)
>            1507217486.996827 sending message 101 to peer 0x7fee98001800 (12
>          bytes)
>            1507217486.996830 sending message 102 to peer 0x7fee98001800 (13
>          bytes)
>            1507217486.996833 sending message 108 to peer 0x7fee98001800 (18
>          bytes)
>            1507217486.996841 sending message 104 to peer 0x7fee98001800 (0
>          bytes)
>            1507217486.996843 sending message 107 to peer 0x7fee98001800 (4
>          bytes)
>            1507217486.996846 sending message 105 to peer 0x7fee98001800 (24
>          bytes)
>            1507217486.996849 sending message 105 to peer 0x7fee98001800 (16
>          bytes)
>            1507217486.996851 sending message 105 to peer 0x7fee98001800 (17
>          bytes)
>            1507217486.996854 sending message 105 to peer 0x7fee98001800 (16
>          bytes)
>            1507217486.996856 sending message 105 to peer 0x7fee98001800 (41
>          bytes)
>            1507217486.996859 sending message 105 to peer 0x7fee98001800 (38
>          bytes)
>            1507217486.996861 sending message 105 to peer 0x7fee98001800 (16
>          bytes)
>            1507217486.996864 sending message 105 to peer 0x7fee98001800 (19
>          bytes)
>            1507217486.996867 sending message 105 to peer 0x7fee98001800 (14
>          bytes)
>            1507217486.996869 sending message 105 to peer 0x7fee98001800 (10
>          bytes)
>            1507217486.996872 sending message 105 to peer 0x7fee98001800 (18
>          bytes)
>            1507217486.996874 sending message 105 to peer 0x7fee98001800 (13
>          bytes)
>            1507217486.996877 sending message 105 to peer 0x7fee98001800 (66
>          bytes)
>            1507217486.996879 sending message 105 to peer 0x7fee98001800 (38
>          bytes)
>            1507217486.996882 sending message 105 to peer 0x7fee98001800 (14
>          bytes)
>            1507217486.996885 sending message 105 to peer 0x7fee98001800 (11
>          bytes)
>            1507217486.996887 sending message 105 to peer 0x7fee98001800 (13
>          bytes)
>            1507217486.996890 sending message 105 to peer 0x7fee98001800 (8
>          bytes)
>            1507217486.996892 sending message 105 to peer 0x7fee98001800 (20
>          bytes)
>            1507217486.996895 sending message 105 to peer 0x7fee98001800 (259
>          bytes)
>            1507217486.996898 sending message 105 to peer 0x7fee98001800 (13
>          bytes)
>            1507217486.996900 sending message 105 to peer 0x7fee98001800 (22
>          bytes)
>            1507217486.996903 sending message 105 to peer 0x7fee98001800 (12
>          bytes)
>            1507217486.996905 sending message 105 to peer 0x7fee98001800 (17
>          bytes)
>            1507217486.996908 sending message 105 to peer 0x7fee98001800 (30
>          bytes)
>            1507217486.996911 sending message 105 to peer 0x7fee98001800 (193
>          bytes)
>            1507217486.996913 sending message 105 to peer 0x7fee98001800 (23
>          bytes)
>            1507217486.996916 sending message 105 to peer 0x7fee98001800 (8
>          bytes)
>            1507217486.996918 sending message 105 to peer 0x7fee98001800 (23
>          bytes)
>            1507217486.996921 sending message 105 to peer 0x7fee98001800 (15
>          bytes)
>            1507217486.996923 sending message 105 to peer 0x7fee98001800 (20
>          bytes)
>            1507217486.996926 sending message 105 to peer 0x7fee98001800 (26
>          bytes)
>            1507217486.996929 sending message 105 to peer 0x7fee98001800 (41
>          bytes)
>            1507217486.996931 sending message 105 to peer 0x7fee98001800 (122
>          bytes)
>            1507217486.996934 sending message 105 to peer 0x7fee98001800 (13
>          bytes)
>            1507217486.996936 sending message 105 to peer 0x7fee98001800 (12
>          bytes)
>            1507217486.996939 sending message 105 to peer 0x7fee98001800 (30
>          bytes)
>            1507217486.996941 sending message 105 to peer 0x7fee98001800 (13
>          bytes)
>            1507217486.996944 sending message 105 to peer 0x7fee98001800 (12
>          bytes)
>            1507217486.996946 sending message 105 to peer 0x7fee98001800 (20
>          bytes)
>            1507217486.996949 sending message 105 to peer 0x7fee98001800 (9
>          bytes)
>            1507217486.996952 sending message 105 to peer 0x7fee98001800 (17
>          bytes)
>            1507217486.996961 sending message 105 to peer 0x7fee98001800 (15
>          bytes)
>            1507217486.996964 sending message 106 to peer 0x7fee98001800 (0
>          bytes)
>            1507217486.996968 sending message 200 to peer 0x7fee98001800 (4
>          bytes)
>            1507217486.996971 client loop enter
>            1507217489.162538 client loop exit
>            Debugger backtrace:
>            # lldb -c /cores/core.36281 ./tmux
>            (lldb) target create "./tmux" --core "/cores/core.36281"
>            warning: (x86_64) /cores/core.36281 load command 346 LC_SEGMENT_64
>          has a
>            fileoff + filesize (0x2cf6a000) that extends beyond the end of the
>          file
>            (0x2cf69000), the segment will be truncated to match
>            warning: (x86_64) /cores/core.36281 load command 347 LC_SEGMENT_64
>          has a
>            fileoff (0x2cf6a000) that extends beyond the end of the file
>          (0x2cf69000),
>            ignoring this section
>            Core file '/cores/core.36281' (x86_64) was loaded.
>            (lldb) bt
>            * thread #1, stop reason = signal SIGSTOP
>              * frame #0: 0x00007fffcc638b52 libsystem_c.dylib`strlen + 18
>                frame #1: 0x00007fffcc67e9fc libsystem_c.dylib`__vfprintf +
>          5701
>                frame #2: 0x00007fffcc6a7423 libsystem_c.dylib`__v2printf +
>          699
>                frame #3: 0x00007fffcc67cf46 libsystem_c.dylib`_vasprintf +
>          554
>                frame #4: 0x0000000100bac587 tmux`log_vwrite + 39
>                frame #5: 0x0000000100bac540 tmux`log_debug + 144
>                frame #6: 0x0000000100b89097 tmux`load_cfg + 439
>                frame #7: 0x0000000100b88e94 tmux`start_cfg + 164
>                frame #8: 0x0000000100bbce62 tmux`server_start + 450
>                frame #9: 0x0000000100b89998 tmux`client_main + 1080
>                frame #10: 0x0000000100bc52d2 tmux`main + 1874
>                frame #11: 0x00007fffcc602235 libdyld.dylib`start + 1
>                frame #12: 0x00007fffcc602235 libdyld.dylib`start + 1
>            --
>            Jason White
>            [email protected]
>            "The single biggest problem in communication is the illusion that
>          it has
>            taken place." - George Bernard Shaw
> 
>            --
>            You received this message because you are subscribed to the Google
>          Groups
>            "tmux-users" group.
>            To unsubscribe from this group and stop receiving emails from it,
>          send an
>            email to [email protected].
>            To post to this group, send email to [email protected].
>            For more options, visit https://groups.google.com/d/optout.
> 
>      -- 
>      Jason White
>      [email protected]
>      "The single biggest problem in communication is the illusion that it has
>      taken place." - George Bernard Shaw
> 
>    -- 
>    Jason White
>    [email protected]
>    "The single biggest problem in communication is the illusion that it has
>    taken place." - George Bernard Shaw

-- 
You received this message because you are subscribed to the Google Groups 
"tmux-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to