[Bug 191285] lang/expect segfault in exp_spawnv

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Jun 25 08:30:55 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191285

Pietro Cerutti <gahr at FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |gahr at FreeBSD.org

--- Comment #2 from Pietro Cerutti <gahr at FreeBSD.org> ---
I don't think it's related to ckalloc / ckfree. The problem is the definition
of Tcl_ErrnoMsg:

#define Tcl_ErrnoMsg (tclStubsPtr->tcl_ErrnoMsg)

I fear you don't have a properly setup interp.

Please try this sample program:

#include <sys/types.h>
#include <unistd.h>
#include <tcl.h>
#include <expect.h>
#include <expect_tcl.h>

int main(void)
{
    Tcl_Interp * interp = Tcl_CreateInterp();
    Expect_Init(interp);

    char * date = "/bin/date";
    char * args[] = {date, NULL};

    int fd = exp_spawnv(date, args);

    char buf[64];
    read(fd, buf, sizeof(buf));
    puts(buf);
    close(fd);

    return (0);
}

Compile with something like this:

cc -o test-spawn test-spawn.c -I/usr/local/include/tcl8.6 -I/usr/local/include
-L/usr/local/lib -lexpect -ltcl86

It works as expected here. However, if you remove the assignment to interp and
just leave the variable uninitialized or NULL-initialized, it will segfault
exactly as you described.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-tcltk mailing list