Re: Problems with expect and Fedora / Gentoo (URGENT)
fryxar_at_datafull.com
Date: 09/19/04
- Next message: lvirden_at_gmail.com: "Re: exit codes from piped executables"
- Previous message: Helmut Giese: "Re: Test cmdAH-24.10 failure: Please brainstorm with me"
- In reply to: Don Libes: "Re: Problems with expect and Fedora / Gentoo (URGENT)"
- Next in thread: Don Libes: "Re: Problems with expect and Fedora / Gentoo (URGENT)"
- Reply: Don Libes: "Re: Problems with expect and Fedora / Gentoo (URGENT)"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: 18 Sep 2004 19:29:21 -0700
Hi Don! This is my first time doing a debug with gdb. I compiled
expect with -g gcc flag, do you think it's necesary compile tcl with
-g flag too?
# gdb expect
GNU gdb 6.0
Copyright 2003 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 "i686-pc-linux-gnu"...Using host
libthread_db library "/lib/libthread_db.so.1".
(gdb) break exp_inter.c:1384
Breakpoint 1 at 0x805ecf2: file exp_inter.c, line 1384.
(gdb) run /tmp/test.exp
Starting program: /tmp/expect-5.42/expect /tmp/test.exp
Detaching after fork from child process 26573.
0
1
2
3
4
5
6
7
8
9
10
11
12
.
.
.
.
.
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
239
Breakpoint 1, Exp_InteractObjCmd (clientData=0x0, interp=0x806b618,
objc=0, objv=0xbffff63c)
at exp_inter.c:1384
1384 rc = EXP_EOF;
(gdb) n
1395 action = inp->action_eof;
(gdb) n
1396 attempt_match = FALSE;
(gdb) n
1397 skip = expSizeGet(u);
(gdb) n
1398 expDiagLog("interact: received eof from
spawn_id %s\r\n",u->name);
(gdb) n
1401 need_to_close_master = TRUE;
(gdb) n
1402 break;
(gdb) n
1413 km = 0;
(gdb) n
1415 if (attempt_match) {
(gdb)
1421 attempt_match = TRUE;
(gdb) n
1428 if (km && km->writethru) {
(gdb)
1430 } else print = skip;
(gdb)
1432 if (km && km->echo) {
(gdb)
1435 oldprinted = u->printed;
(gdb)
1446 if (print > u->printed) { /* usual case */
(gdb)
1447 for (outp = inp->output;outp;outp=outp->next) {
(gdb)
1449 for (fdp =
outp->i_list->state_list;fdp;fdp=fdp->next) {
(gdb)
1454 int wc =
expWriteBytesAndLogIfTtyU(fdp->esPtr,
(gdb)
1457 if (wc < 0) {
(gdb)
1449 for (fdp =
outp->i_list->state_list;fdp;fdp=fdp->next) {
(gdb)
1447 for (outp = inp->output;outp;outp=outp->next) {
(gdb)
1488 u->printed = print;
(gdb)
1499 size = expSizeGet(u);
(gdb)
1500 if (rc == EXP_MATCH) {
(gdb)
1510 string = Tcl_GetString(u->buffer);
(gdb)
1511 if (skip) {
(gdb)
1512 size -= skip;
(gdb)
1513 memcpy(string, string + skip, size);
(gdb)
1516 Tcl_SetObjLength(u->buffer,size);
(gdb)
1520 u->printed -= skip;
(gdb)
1523 if (u->printed < 0) u->printed = 0;
(gdb)
1527 u->force_read = (rc == EXP_CANMATCH);
(gdb)
1530 if (rc != EXP_CANMATCH) {
(gdb)
1531 if (skip >= oldprinted + u->echoed) u->echoed = 0;
(gdb)
1534 if (rc == EXP_EOF) {
(gdb)
1535 if (u->close_on_eof) {
(gdb)
1536 exp_close(interp,u);
(gdb)
1538 need_to_close_master = FALSE;
(gdb)
1541 if (action) {
(gdb)
1543 change = (action && action->tty_reset);
(gdb)
1544 if (change && tty_changed)
(gdb)
1547 te = inter_eval(interp,action,u);
(gdb)
1549 if (change && real_tty) tty_changed =
(gdb)
1551 switch (te) {
(gdb)
1558 finish(TCL_OK);
(gdb)
2081 if (need_to_close_master && u->close_on_eof)
exp_close(interp,u);
(gdb)
2083 if (tty_changed)
exp_tty_set(interp,&tty_old,was_raw,was_echo);
(gdb)
2084 if (esPtrs) ckfree((char *)esPtrs);
(gdb)
2085 if (esPtrToInput) Tcl_DeleteHashTable(esPtrToInput);
(gdb)
2086 free_input(interp,input_base);
(gdb)
2087 free_action(action_base);
(gdb)
2089 return(status);
(gdb)
2090 }
(gdb)
0x400809be in EvalObjv () from /usr/lib/libtcl8.3.so
(gdb)
Single stepping until exit from function EvalObjv,
which has no line number information.
0x40081578 in Tcl_EvalEx () from /usr/lib/libtcl8.3.so
(gdb)
Single stepping until exit from function Tcl_EvalEx,
which has no line number information.
0x400752d3 in Tcl_EvalFile () from /usr/lib/libtcl8.3.so
(gdb)
Single stepping until exit from function Tcl_EvalFile,
which has no line number information.
exp_interpret_cmdfilename (interp=0x806b618, filename=0xbffffc88
"/tmp/test.exp") at exp_main_sub.c:876
876 return rc;
(gdb)
877 }
(gdb)
main (argc=2, argv=0xbffffb54) at exp_main_exp.c:51
51 sprintf(buffer, "exit %d", rc);
(gdb)
52 Tcl_Eval(interp, buffer);
(gdb)
60
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
.
.
.
.
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
498
Program exited normally.
Don Libes <libes@nist.gov> wrote in message news:<s6a3c1jz6o9.fsf@peace.mel.nist.gov>...
> Thanks for the trace. It's helpful and I can now narrow it down to
> one small section of code. But since I can't reproduce the problem,
> I'm going to have to ask you to do a little debugging for me.
>
> I walked through the trace and added comments so the code will make
> more sense to you. I've extracted the part that seems relevant below.
> For readability, I deleted the many gettimeofday calls.
>
> Sorry for all the detail but some of this is just me thinking aloud to
> help myself work on the problem.
>
> Somewhere toward the end of the process, we see pid 11460 (cat)
> reading the data file and then spitting it right back out:
>
> > 11460 read(4, "4318\n4319\n4320\n4321\n4322\n4323\n43"..., 4096) = 3410
> > 11460 write(1, "4318\n4319\n4320\n4321\n4322\n4323\n43"..., 3410 <unfinished ...>
>
> That looks good. It says <unfinished> because it's not yet finished
> before Expect wakes up.
>
> Next we see pid 11459 (Expect) wakeup, read the output from cat, and
> echo the same bytes to the tty, then go wait in the event loop:
>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "4318\r\n4319\r\n4320\r\n4321\r\n4322\r\n43"..., 4096) = 4092
> > 11459 write(1, "4318\r\n4319\r\n4320\r\n4321\r\n4322\r\n43"..., 4001) = 4001
>
> Notice Expect read 4092 bytes but wrote 91 short of that. I figure
> that's from Tcl doing output buffering.
>
> How did the 3410 from cat become 4092? Well, the end of the data file
> contained the numbers from 4318 to 4999 each on a separate line.
> That's 682 lines. 5 characters to represent each is 682*5 = 3410. So
> that checks. During output, a \r is added to each which requires
> 682*6 = 4092 bytes. So it all checks. (That sanity check
> demonstrates cat is not at fault!)
>
> Next we see the event loop do a quick poll for activity or maybe to
> check that it's ok to write more bytes.
>
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource temporarily unavailable)
> > 11459 write(1, "\n4985\r\n4986\r\n4987\r\n4988\r\n4989\r\n4"..., 91) = 91
>
> The read failed with EAGAIN but I guess Tcl took the opportunity to
> write out the remaining 91 bytes.
>
> Another poll:
>
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
>
> No activity, so the event loop now waits:
>
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
>
> cat finally gets notification that its write has completed (long ago
> actually):
>
> > 11460 <... write resumed> ) = 3410
>
> cat reads the EOF and exits:
>
> > 11460 read(4, "", 4096) = 0
> > 11460 close(4) = 0
> > 11460 close(1) = 0
> > 11460 _exit(0) = ?
>
> Expect wakes up and sees the EOF (represented as EIO but that's ok):
>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, 0x8083ce8, 4096) = -1 EIO (Input/output error)
>
> And now, out of the blue, we see this. Expect writes four bytes.
> Huh????
>
> > 11459 write(1, "\000498", 4) = 4
>
> Now Expect shuts down the channel, first by restoring blocking mode
> and then closing the file descriptor.
>
> > 11459 fcntl64(4, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
> > 11459 fcntl64(4, F_SETFL, O_RDWR) = 0
> > 11459 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
> > 11459 close(4) = 0
>
> So where does that leave us? Expect is doing something very wrong
> during the EOF handling of the spawned process. Fortunately, that's a
> very small section of code you'll need to watch. Fire up the debugger
> and set a breakpoint in exp_inter.c at line 1384. This is where
> interact should detect the and begin doing something with it.
>
> Now just single step and wait for that \000498 to pop out. Pay
> specific attention to any calls where Expect calls Tcl routines to
> write out data. Is Expect really passing those 4 bytes to Tcl? Why?
> Or not?
>
> The calling sequence will be the Expect -> Tcl -> Expect's channel
> handler. So the problem could arise at any of those three levels.
>
> Don
>
>
>
>
> fryxar@datafull.com writes:
>
> > Hi, here is the strace:
> >
> > # strace -fo test.dump ./test.exp
> > .
> > .
> > .
> > 4997
> > 4998
> > 4999
> > 498
> > # cat /tmp/test.dump
> > 11459 execve("./test.exp", ["./test.exp"], [/* 30 vars */]) = 0
> > 11459 uname({sys="Linux", node="facceso1", ...}) = 0
> > 11459 brk(0) = 0x806b000
> > 11459 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file
> > or directory)
> > 11459 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> > 11459 open("/etc/ld.so.cache", O_RDONLY) = 3
> > 11459 fstat64(3, {st_mode=S_IFREG|0644, st_size=9583, ...}) = 0
> > 11459 mmap2(NULL, 9583, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40016000
> > 11459 close(3) = 0
> > 11459 open("/usr/lib/libtcl8.3.so", O_RDONLY) = 3
> > 11459 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\6\1\000"...,
> > 512) = 512
> > 11459 fstat64(3, {st_mode=S_IFREG|0555, st_size=711762, ...}) = 0
> > 11459 mmap2(NULL, 642376, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> > 0x40019000
> > 11459 mmap2(0x400ad000, 36864, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 3, 0x93) = 0x400ad000
> > 11459 close(3) = 0
> > 11459 mprotect(0xbffff000, 4096,
> > PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0
> > 11459 open("/lib/libdl.so.2", O_RDONLY) = 3
> > 11459 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\34\0"...,
> > 512) = 512
> > 11459 fstat64(3, {st_mode=S_IFREG|0755, st_size=14177, ...}) = 0
> > 11459 mmap2(NULL, 8628, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> > 0x400b6000
> > 11459 mmap2(0x400b8000, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 3, 0x2) = 0x400b8000
> > 11459 close(3) = 0
> > 11459 open("/lib/libm.so.6", O_RDONLY) = 3
> > 11459 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\3404\0"...,
> > 512) = 512
> > 11459 fstat64(3, {st_mode=S_IFREG|0755, st_size=189312, ...}) = 0
> > 11459 mmap2(NULL, 138768, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> > 0x400b9000
> > 11459 mmap2(0x400da000, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 3, 0x20) = 0x400da000
> > 11459 close(3) = 0
> > 11459 open("/lib/libutil.so.1", O_RDONLY) = 3
> > 11459 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\r\0"...,
> > 512) = 512
> > 11459 fstat64(3, {st_mode=S_IFREG|0755, st_size=11074, ...}) = 0
> > 11459 mmap2(NULL, 10616, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> > 0x400db000
> > 11459 mmap2(0x400dd000, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 3, 0x1) = 0x400dd000
> > 11459 close(3) = 0
> > 11459 open("/lib/libc.so.6", O_RDONLY) = 3
> > 11459 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0
> > ]\1\000"..., 512) = 512
> > 11459 fstat64(3, {st_mode=S_IFREG|0755, st_size=1482469, ...}) = 0
> > 11459 mmap2(NULL, 1241060, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> > 0x400de000
> > 11459 mmap2(0x40207000, 16384, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 3, 0x128) = 0x40207000
> > 11459 mmap2(0x4020b000, 8164, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4020b000
> > 11459 close(3) = 0
> > 11459 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4020d000
> > 11459 munmap(0x40016000, 9583) = 0
> > 11459 open("/dev/urandom", O_RDONLY) = 3
> > 11459 read(3, "}p\360\311\315?\322\206O}6rC\273k\27\355\325\325\202\24"...,
> > 32) = 32
> > 11459 close(3) = 0
> > 11459 rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
> > 11459 brk(0) = 0x806b000
> > 11459 brk(0x808c000) = 0x808c000
> > 11459 brk(0) = 0x808c000
> > 11459 uname({sys="Linux", node="facceso1", ...}) = 0
> > 11459 open("/usr/lib/tcl8.3/encoding/iso8859-1.enc", O_RDONLY) = 3
> > 11459 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
> > 11459 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfffef9c) = -1 ENOTTY
> > (Inappropriate ioctl for device)
> > 11459 read(3, "# Encoding file: iso8859-1, sing"..., 4096) = 1094
> > 11459 close(3) = 0
> > 11459 access("/usr/lib/tcl8.3/init.tcl", F_OK) = 0
> > 11459 stat64("/usr/lib/tcl8.3/init.tcl", {st_mode=S_IFREG|0644,
> > st_size=17568, ...}) = 0
> > 11459 open("/usr/lib/tcl8.3/init.tcl", O_RDONLY) = 3
> > 11459 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
> > 11459 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfffea2c) = -1 ENOTTY
> > (Inappropriate ioctl for device)
> > 11459 read(3, "# init.tcl --\n#\n# Default system"..., 4096) = 4096
> > 11459 read(3, "he command was invoked interacti"..., 4096) = 4096
> > 11459 read(3, "\"\"\n}\n\n# auto_load --\n# Checks a "..., 4096) =
> > 4096
> > 11459 read(3, "# count separators and clean the"..., 4096) = 4096
> > 11459 read(3, "\n\tappend path \"$windir/system;$w"..., 4096) = 1184
> > 11459 read(3, "", 4096) = 0
> > 11459 close(3) = 0
> > 11459 getpid() = 11459
> > 11459 open("/dev/tty", O_RDWR) = 3
> > 11459 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 ioctl(3, TIOCGWINSZ, {ws_row=42, ws_col=124, ws_xpixel=0,
> > ws_ypixel=0}) = 0
> > 11459 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 getpid() = 11459
> > 11459 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
> > 11459 lseek(1, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
> > 11459 lseek(2, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
> > 11459 fcntl64(0, F_GETFL) = 0x8002 (flags
> > O_RDWR|O_LARGEFILE)
> > 11459 fcntl64(0, F_SETFL, O_RDWR|O_NONBLOCK|O_LARGEFILE) = 0
> > 11459 fcntl64(0, F_GETFL) = 0x8802 (flags
> > O_RDWR|O_NONBLOCK|O_LARGEFILE)
> > 11459 ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 fcntl64(2, F_GETFL) = 0x8802 (flags
> > O_RDWR|O_NONBLOCK|O_LARGEFILE)
> > 11459 fcntl64(2, F_SETFL, O_RDWR|O_NONBLOCK|O_LARGEFILE) = 0
> > 11459 fcntl64(2, F_GETFL) = 0x8802 (flags
> > O_RDWR|O_NONBLOCK|O_LARGEFILE)
> > 11459 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
> > 11459 fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR)
> > 11459 fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
> > 11459 fcntl64(3, F_GETFL) = 0x802 (flags
> > O_RDWR|O_NONBLOCK)
> > 11459 rt_sigaction(SIGINT, {0x804fcae, [INT], SA_RESTORER|SA_RESTART,
> > 0x40107358}, {SIG_DFL}, 8) = 0
> > 11459 rt_sigaction(SIGTERM, {0x804fcae, [TERM],
> > SA_RESTORER|SA_RESTART, 0x40107358}, {SIG_DFL}, 8) = 0
> > 11459 open("/usr/lib/expect5.42/expect.rc", O_RDONLY) = -1 ENOENT (No
> > such file or directory)
> > 11459 open("/root/.expect.rc", O_RDONLY) = -1 ENOENT (No such file or
> > directory)
> > 11459 stat64("./test.exp", {st_mode=S_IFREG|0755, st_size=85, ...}) =
> > 0
> > 11459 open("./test.exp", O_RDONLY) = 4
> > 11459 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
> > 11459 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbffff49c) = -1 ENOTTY
> > (Inappropriate ioctl for device)
> > 11459 read(4, "#!/usr/bin/expect --\n\nspawn -noe"..., 4096) = 85
> > 11459 read(4, "", 4096) = 0
> > 11459 close(4) = 0
> > 11459 open("/dev/ptmx", O_RDWR) = 4
> > 11459 statfs("/dev/pts", {f_type="DEVPTS_SUPER_MAGIC", f_bsize=4096,
> > f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0,
> > 0}, f_namelen=255, f_frsize=4096}) = 0
> > 11459 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 ioctl(4, TIOCGPTN, [55]) = 0
> > 11459 stat64("/dev/pts/55", {st_mode=S_IFCHR|0620,
> > st_rdev=makedev(136, 55), ...}) = 0
> > 11459 statfs("/dev/pts/55", {f_type="DEVPTS_SUPER_MAGIC",
> > f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0,
> > f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
> > 11459 ioctl(4, TIOCSPTLCK, [0]) = 0
> > 11459 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 ioctl(4, TIOCGPTN, [55]) = 0
> > 11459 stat64("/dev/pts/55", {st_mode=S_IFCHR|0620,
> > st_rdev=makedev(136, 55), ...}) = 0
> > 11459 open("/dev/pts/55", O_RDWR|O_NOCTTY) = 5
> > 11459 ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 readlink("/proc/self/fd/5", "/dev/pts/55", 4095) = 11
> > 11459 close(5) = 0
> > 11459 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
> > 11459 pipe([5, 6]) = 0
> > 11459 pipe([7, 8]) = 0
> > 11459 pipe([9, 10]) = 0
> > 11459 fork() = 11460
> > 11459 close(6) = 0
> > 11459 close(7) = 0
> > 11459 close(10) = 0
> > 11459 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
> > 11459 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
> > 11459 fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
> > 11459 fcntl64(4, F_GETFL) = 0x802 (flags
> > O_RDWR|O_NONBLOCK)
> > 11459 read(5, <unfinished ...>
> > 11460 close(5) = 0
> > 11460 close(8) = 0
> > 11460 close(9) = 0
> > 11460 fcntl64(10, F_SETFD, FD_CLOEXEC) = 0
> > 11460 close(3) = 0
> > 11460 setsid() = 11460
> > 11460 fcntl64(2, F_DUPFD, 3) = 3
> > 11460 close(0) = 0
> > 11460 close(1) = 0
> > 11460 close(2) = 0
> > 11460 open("/dev/pts/55", O_RDWR) = 0
> > 11460 fcntl64(0, F_DUPFD, 1) = 1
> > 11460 fcntl64(0, F_DUPFD, 2) = 2
> > 11460 ioctl(0, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon
> > echo ...}) = 0
> > 11460 ioctl(0, TIOCSWINSZ, {ws_row=42, ws_col=124, ws_xpixel=0,
> > ws_ypixel=0}) = 0
> > 11460 --- SIGWINCH (Window changed) @ 0 (0) ---
> > 11460 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGINT, {SIG_IGN}, {0x804fcae, [INT],
> > SA_RESTORER|SA_RESTART, 0x40107358}, 8) = 0
> > 11460 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
> > 11460 fork() = 11461
> > 11460 waitpid(11461, <unfinished ...>
> > 11461 rt_sigaction(SIGINT, {0x804fcae, [INT], SA_RESTORER|SA_RESTART,
> > 0x40107358}, NULL, 8) = 0
> > 11461 rt_sigaction(SIGQUIT, {SIG_DFL}, NULL, 8) = 0
> > 11461 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
> > 11461 execve("/bin/sh", ["sh", "-c", "/bin/stty sane < /dev/pts/55"],
> > [/* 30 vars */]) = 0
> > 11461 uname({sys="Linux", node="facceso1", ...}) = 0
> > 11461 brk(0) = 0x80fe000
> > 11461 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file
> > or directory)
> > 11461 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> > 11461 open("/etc/ld.so.cache", O_RDONLY) = 4
> > 11461 fstat64(4, {st_mode=S_IFREG|0644, st_size=9583, ...}) = 0
> > 11461 mmap2(NULL, 9583, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40016000
> > 11461 close(4) = 0
> > 11461 open("/lib/libdl.so.2", O_RDONLY) = 4
> > 11461 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\34\0"...,
> > 512) = 512
> > 11461 fstat64(4, {st_mode=S_IFREG|0755, st_size=14177, ...}) = 0
> > 11461 mmap2(NULL, 8628, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) =
> > 0x40019000
> > 11461 mmap2(0x4001b000, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 4, 0x2) = 0x4001b000
> > 11461 close(4) = 0
> > 11461 open("/lib/libc.so.6", O_RDONLY) = 4
> > 11461 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0
> > ]\1\000"..., 512) = 512
> > 11461 fstat64(4, {st_mode=S_IFREG|0755, st_size=1482469, ...}) = 0
> > 11461 mmap2(NULL, 1241060, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) =
> > 0x4001c000
> > 11461 mmap2(0x40145000, 16384, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 4, 0x128) = 0x40145000
> > 11461 mmap2(0x40149000, 8164, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40149000
> > 11461 close(4) = 0
> > 11461 munmap(0x40016000, 9583) = 0
> > 11461 open("/dev/urandom", O_RDONLY) = 4
> > 11461 read(4, "\345m\226\20~\271\306\247k\221\216\233\240\0\3630^\306"...,
> > 32) = 32
> > 11461 close(4) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> > 11461 open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 4
> > 11461 close(4) = 0
> > 11461 brk(0) = 0x80fe000
> > 11461 brk(0x811f000) = 0x811f000
> > 11461 brk(0) = 0x811f000
> > 11461 getuid32() = 0
> > 11461 getgid32() = 0
> > 11461 geteuid32() = 0
> > 11461 getegid32() = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> > 11461 time(NULL) = 1095251725
> > 11461 open("/etc/mtab", O_RDONLY) = 4
> > 11461 fstat64(4, {st_mode=S_IFREG|0644, st_size=133, ...}) = 0
> > 11461 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000
> > 11461 read(4, "/dev/hda2 / ext3 rw,noatime 0 0\n"..., 4096) = 133
> > 11461 close(4) = 0
> > 11461 munmap(0x40016000, 4096) = 0
> > 11461 open("/proc/meminfo", O_RDONLY) = 4
> > 11461 fstat64(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
> > 11461 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000
> > 11461 read(4, "MemTotal: 126524 kB\nMemFre"..., 1024) = 572
> > 11461 close(4) = 0
> > 11461 munmap(0x40016000, 4096) = 0
> > 11461 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11461 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11461 rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11461 rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11461 rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11461 rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> > 11461 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}, 8) = 0
> > 11461 uname({sys="Linux", node="facceso1", ...}) = 0
> > 11461 stat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096,
> > ...}) = 0
> > 11461 stat64(".", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) =
> > 0
> > 11461 getpid() = 11461
> > 11461 getppid() = 11460
> > 11461 stat64(".", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) =
> > 0
> > 11461 stat64("/bin/sh", {st_mode=S_IFREG|0755, st_size=735364, ...}) =
> > 0
> > 11461 stat64("/bin/sh", {st_mode=S_IFREG|0755, st_size=735364, ...}) =
> > 0
> > 11461 getpgrp() = 11460
> > 11461 rt_sigaction(SIGCHLD, {0x807cb70, [], SA_RESTORER, 0x40045358},
> > {SIG_DFL}, 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
> > 11461 fork() = 11462
> > 11461 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
> > 11461 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
> > 11461 rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
> > 11461 rt_sigaction(SIGINT, {0x807ca90, [], SA_RESTORER, 0x40045358},
> > {SIG_DFL}, 8) = 0
> > 11461 waitpid(-1, <unfinished ...>
> > 11462 getpid() = 11462
> > 11462 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
> > 11462 rt_sigaction(SIGTSTP, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11462 rt_sigaction(SIGTTIN, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11462 rt_sigaction(SIGTTOU, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11462 rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11462 rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_IGN}, 8) = 0
> > 11462 rt_sigaction(SIGCHLD, {SIG_DFL}, {0x807cb70, [], SA_RESTORER,
> > 0x40045358}, 8) = 0
> > 11462 open("/dev/pts/55", O_RDONLY|O_LARGEFILE) = 4
> > 11462 dup2(4, 0) = 0
> > 11462 close(4) = 0
> > 11462 execve("/bin/stty", ["/bin/stty", "sane"], [/* 28 vars */]) = 0
> > 11462 uname({sys="Linux", node="facceso1", ...}) = 0
> > 11462 brk(0) = 0x8052000
> > 11462 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file
> > or directory)
> > 11462 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> > 11462 open("/etc/ld.so.cache", O_RDONLY) = 4
> > 11462 fstat64(4, {st_mode=S_IFREG|0644, st_size=9583, ...}) = 0
> > 11462 mmap2(NULL, 9583, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40016000
> > 11462 close(4) = 0
> > 11462 open("/lib/libc.so.6", O_RDONLY) = 4
> > 11462 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0
> > ]\1\000"..., 512) = 512
> > 11462 fstat64(4, {st_mode=S_IFREG|0755, st_size=1482469, ...}) = 0
> > 11462 mmap2(NULL, 1241060, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) =
> > 0x40019000
> > 11462 mmap2(0x40142000, 16384, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 4, 0x128) = 0x40142000
> > 11462 mmap2(0x40146000, 8164, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40146000
> > 11462 close(4) = 0
> > 11462 munmap(0x40016000, 9583) = 0
> > 11462 open("/dev/urandom", O_RDONLY) = 4
> > 11462 read(4, "\222Y-\342\262@\6\215\344\257\236vC)`h\33C\310g.\317XO"...,
> > 32) = 32
> > 11462 close(4) = 0
> > 11462 brk(0) = 0x8052000
> > 11462 brk(0x8073000) = 0x8073000
> > 11462 brk(0) = 0x8073000
> > 11462 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11462 ioctl(0, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon
> > echo ...}) = 0
> > 11462 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11462 _exit(0) = ?
> > 11461 <... waitpid resumed> [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0)
> > = 11462
> > 11461 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
> > 11461 --- SIGCHLD (Child exited) @ 0 (0) ---
> > 11461 waitpid(-1, 0xbffff57c, WNOHANG) = -1 ECHILD (No child
> > processes)
> > 11461 sigreturn() = ? (mask now [RTMIN])
> > 11461 rt_sigaction(SIGINT, {SIG_DFL}, {0x807ca90, [], SA_RESTORER,
> > 0x40045358}, 8) = 0
> > 11461 _exit(0) = ?
> > 11460 <... waitpid resumed> [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0)
> > = 11461
> > 11460 rt_sigaction(SIGINT, {0x804fcae, [INT], SA_RESTORER|SA_RESTART,
> > 0x40107358}, NULL, 8) = 0
> > 11460 rt_sigaction(SIGQUIT, {SIG_DFL}, NULL, 8) = 0
> > 11460 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
> > 11460 --- SIGCHLD (Child exited) @ 0 (0) ---
> > 11460 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 ioctl(0, TIOCSCTTY) = 0
> > 11460 rt_sigaction(SIGHUP, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGINT, {SIG_DFL}, {0x804fcae, [INT],
> > SA_RESTORER|SA_RESTART, 0x40107358}, 8) = 0
> > 11460 rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGILL, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGTRAP, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGABRT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGBUS, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGFPE, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGKILL, {SIG_DFL}, {SIG_DFL}, 8) = -1 EINVAL
> > (Invalid argument)
> > 11460 rt_sigaction(SIGUSR1, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGUSR2, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGPIPE, {SIG_DFL}, {SIG_IGN}, 8) = 0
> > 11460 rt_sigaction(SIGALRM, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGTERM, {SIG_DFL}, {0x804fcae, [TERM],
> > SA_RESTORER|SA_RESTART, 0x40107358}, 8) = 0
> > 11460 rt_sigaction(SIGSTKFLT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGCONT, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGSTOP, {SIG_DFL}, {SIG_DFL}, 8) = -1 EINVAL
> > (Invalid argument)
> > 11460 rt_sigaction(SIGTSTP, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGTTIN, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGTTOU, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGURG, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGXCPU, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGXFSZ, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGVTALRM, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGPROF, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGWINCH, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGIO, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGPWR, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGSYS, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRTMIN, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_1, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_2, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_3, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_4, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_5, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_6, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_7, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_8, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_9, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_10, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_11, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_12, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_13, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_14, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_15, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_16, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_17, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_18, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_19, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_20, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_21, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_22, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_23, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_24, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_25, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_26, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_27, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_28, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_29, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_30, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_31, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 rt_sigaction(SIGRT_32, {SIG_DFL}, {SIG_DFL}, 8) = 0
> > 11460 write(6, " ", 1 <unfinished ...>
> > 11459 <... read resumed> " ", 1) = 1
> > 11459 write(8, " ", 1) = 1
> > 11459 close(5) = 0
> > 11459 close(8) = 0
> > 11459 read(9, <unfinished ...>
> > 11460 <... write resumed> ) = 1
> > 11460 close(6) = 0
> > 11460 read(7, " ", 1) = 1
> > 11460 close(7) = 0
> > 11460 execve("/bin/cat", ["cat", "/tmp/test.txt"], [/* 30 vars */]
> > <unfinished ...>
> > 11459 <... read resumed> "", 4) = 0
> > 11459 close(9) = 0
> > 11459 ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B38400 -opost -isig
> > -icanon -echo ...}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... execve resumed> ) = 0
> > 11460 uname({sys="Linux", node="facceso1", ...}) = 0
> > 11460 brk(0) = 0x804d000
> > 11460 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file
> > or directory)
> > 11460 mmap2(NULL, 4096, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> > 11460 open("/etc/ld.so.cache", O_RDONLY) = 4
> > 11460 fstat64(4, {st_mode=S_IFREG|0644, st_size=9583, ...}) = 0
> > 11460 mmap2(NULL, 9583, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40016000
> > 11460 close(4) = 0
> > 11460 open("/lib/libc.so.6", O_RDONLY) = 4
> > 11460 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0
> > ]\1\000"..., 512) = 512
> > 11460 fstat64(4, {st_mode=S_IFREG|0755, st_size=1482469, ...}) = 0
> > 11460 mmap2(NULL, 1241060, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) =
> > 0x40019000
> > 11460 mmap2(0x40142000, 16384, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED, 4, 0x128) = 0x40142000
> > 11460 mmap2(0x40146000, 8164, PROT_READ|PROT_WRITE,
> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40146000
> > 11460 close(4) = 0
> > 11460 munmap(0x40016000, 9583) = 0
> > 11460 open("/dev/urandom", O_RDONLY) = 4
> > 11460 read(4, "k\304+(\323\374\16W\373\2754pp\332(\177\377\'\370\32\250"...,
> > 32) = 32
> > 11460 close(4) = 0
> > 11460 brk(0) = 0x804d000
> > 11460 brk(0x806e000) = 0x806e000
> > 11460 brk(0) = 0x806e000
> > 11460 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 55),
> > ...}) = 0
> > 11460 open("/tmp/test.txt", O_RDONLY|O_LARGEFILE) = 4
> > 11460 fstat64(4, {st_mode=S_IFREG|0644, st_size=23890, ...}) = 0
> > 11460 read(4, "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n"...,
> > 4096) = 4096
> > 11460 write(1, "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n"...,
> > 4096 <unfinished ...>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "0\r\n1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10"...,
> > 4096) = 4095
> > 11459 write(1, "0\r\n1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10"...,
> > 4001) = 4001
> > 11459 gettimeofday({1095251725, 107469}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 107554}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 107643}, {180, 0}) = 0
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 108014}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 108090}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 108169}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 108240}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 108330}, {180, 0}) = 0
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource
> > temporarily unavailable)
> > 11459 write(1, "22\r\n823\r\n824\r\n825\r\n826\r\n827\r\n828"..., 94)
> > = 94
> > 11459 gettimeofday({1095251725, 108807}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 109176}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 109251}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL) = 1 (in [4])
> > 11459 read(4, "841\r\n842\r\n843\r\n844\r\n845\r\n846\r\n84"..., 4096)
> > = 1042
> > 11459 write(1, "841\r\n842\r\n843\r\n844\r\n845\r\n846\r\n84"...,
> > 1042) = 1042
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... write resumed> ) = 4096
> > 11460 read(4, "041\n1042\n1043\n1044\n1045\n1046\n104"..., 4096) =
> > 4096
> > 11460 write(1, "041\n1042\n1043\n1044\n1045\n1046\n104"..., 4096
> > <unfinished ...>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "041\r\n1042\r\n1043\r\n1044\r\n1045\r\n104"..., 4096) =
> > 4095
> > 11459 write(1, "041\r\n1042\r\n1043\r\n1044\r\n1045\r\n104"..., 4001)
> > = 4001
> > 11459 gettimeofday({1095251725, 114807}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 114903}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 114982}, {180, 0}) = 0
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 115330}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 115406}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 115480}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 115551}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 115634}, {180, 0}) = 0
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource
> > temporarily unavailable)
> > 11459 write(1, "1708\r\n1709\r\n1710\r\n1711\r\n1712\r\n17"..., 94) =
> > 94
> > 11459 gettimeofday({1095251725, 116042}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 116388}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 116462}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL) = 1 (in [4])
> > 11459 read(4, "\r\n1724\r\n1725\r\n1726\r\n1727\r\n1728\r\n"..., 4096)
> > = 820
> > 11459 write(1, "\r\n1724\r\n1725\r\n1726\r\n1727\r\n1728\r\n"..., 820)
> > = 820
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... write resumed> ) = 4096
> > 11460 read(4, "60\n1861\n1862\n1863\n1864\n1865\n1866"..., 4096) =
> > 4096
> > 11460 write(1, "60\n1861\n1862\n1863\n1864\n1865\n1866"..., 4096
> > <unfinished ...>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "60\r\n1861\r\n1862\r\n1863\r\n1864\r\n1865"..., 4096) =
> > 4094
> > 11459 write(1, "60\r\n1861\r\n1862\r\n1863\r\n1864\r\n1865"..., 4001)
> > = 4001
> > 11459 gettimeofday({1095251725, 121746}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 121823}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 121920}, {180, 0}) = 0
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 122268}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 122343}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 122418}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 122489}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 122572}, {180, 0}) = 0
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource
> > temporarily unavailable)
> > 11459 write(1, "527\r\n2528\r\n2529\r\n2530\r\n2531\r\n253"..., 93) =
> > 93
> > 11459 gettimeofday({1095251725, 122973}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 123322}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 123396}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL) = 1 (in [4])
> > 11459 read(4, "\r\n2543\r\n2544\r\n2545\r\n2546\r\n2547\r\n"..., 4096)
> > = 821
> > 11459 write(1, "\r\n2543\r\n2544\r\n2545\r\n2546\r\n2547\r\n"..., 821)
> > = 821
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... write resumed> ) = 4096
> > 11460 read(4, "9\n2680\n2681\n2682\n2683\n2684\n2685\n"..., 4096) =
> > 4096
> > 11460 write(1, "9\n2680\n2681\n2682\n2683\n2684\n2685\n"..., 4096
> > <unfinished ...>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "9\r\n2680\r\n2681\r\n2682\r\n2683\r\n2684\r"..., 4096)
> > = 4095
> > 11459 write(1, "9\r\n2680\r\n2681\r\n2682\r\n2683\r\n2684\r"..., 4001)
> > = 4001
> > 11459 gettimeofday({1095251725, 128550}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 128626}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 128703}, {180, 0}) = 0
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 129064}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 129143}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 129216}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 129287}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 129369}, {180, 0}) = 0
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource
> > temporarily unavailable)
> > 11459 write(1, "46\r\n3347\r\n3348\r\n3349\r\n3350\r\n3351"..., 94) =
> > 94
> > 11459 gettimeofday({1095251725, 130075}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 130425}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 130499}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL) = 1 (in [4])
> > 11459 read(4, "3362\r\n3363\r\n3364\r\n3365\r\n3366\r\n33"..., 4096) =
> > 820
> > 11459 write(1, "3362\r\n3363\r\n3364\r\n3365\r\n3366\r\n33"..., 820) =
> > 820
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... write resumed> ) = 4096
> > 11460 read(4, "\n3499\n3500\n3501\n3502\n3503\n3504\n3"..., 4096) =
> > 4096
> > 11460 write(1, "\n3499\n3500\n3501\n3502\n3503\n3504\n3"..., 4096
> > <unfinished ...>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "\r\n3499\r\n3500\r\n3501\r\n3502\r\n3503\r\n"..., 4096)
> > = 4095
> > 11459 write(1, "\r\n3499\r\n3500\r\n3501\r\n3502\r\n3503\r\n"...,
> > 4001) = 4001
> > 11459 gettimeofday({1095251725, 135536}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 135610}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 135688}, {180, 0}) = 0
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 136047}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 136125}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 136199}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 136270}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 136351}, {180, 0}) = 0
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource
> > temporarily unavailable)
> > 11459 write(1, "5\r\n4166\r\n4167\r\n4168\r\n4169\r\n4170\r"..., 94) =
> > 94
> > 11459 gettimeofday({1095251725, 136700}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 137308}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 137383}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL) = 1 (in [4])
> > 11459 read(4, "181\r\n4182\r\n4183\r\n4184\r\n4185\r\n418"..., 4096) =
> > 821
> > 11459 write(1, "181\r\n4182\r\n4183\r\n4184\r\n4185\r\n418"..., 821) =
> > 821
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... write resumed> ) = 4096
> > 11460 read(4, "4318\n4319\n4320\n4321\n4322\n4323\n43"..., 4096) =
> > 3410
> > 11460 write(1, "4318\n4319\n4320\n4321\n4322\n4323\n43"..., 3410
> > <unfinished ...>
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, "4318\r\n4319\r\n4320\r\n4321\r\n4322\r\n43"..., 4096) =
> > 4092
> > 11459 write(1, "4318\r\n4319\r\n4320\r\n4321\r\n4322\r\n43"..., 4001)
> > = 4001
> > 11459 gettimeofday({1095251725, 142785}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 142881}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 142959}, {180, 0}) = 0
> > 11459 select(5, [0], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 143306}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 143380}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 143454}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 143525}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 143609}, {180, 0}) = 0
> > 11459 read(4, 0x8083ce8, 4096) = -1 EAGAIN (Resource
> > temporarily unavailable)
> > 11459 write(1, "\n4985\r\n4986\r\n4987\r\n4988\r\n4989\r\n4"..., 91) =
> > 91
> > 11459 gettimeofday({1095251725, 144185}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], {0, 0}) = 0 (Timeout)
> > 11459 gettimeofday({1095251725, 144528}, {180, 0}) = 0
> > 11459 gettimeofday({1095251725, 144602}, {180, 0}) = 0
> > 11459 select(5, [0 4], [], [0 4], NULL <unfinished ...>
> > 11460 <... write resumed> ) = 3410
> > 11460 read(4, "", 4096) = 0
> > 11460 close(4) = 0
> > 11460 close(1) = 0
> > 11460 _exit(0) = ?
> > 11459 <... select resumed> ) = 1 (in [4])
> > 11459 read(4, 0x8083ce8, 4096) = -1 EIO (Input/output error)
> > 11459 write(1, "\000498", 4) = 4
> > 11459 fcntl64(4, F_GETFL) = 0x802 (flags
> > O_RDWR|O_NONBLOCK)
> > 11459 fcntl64(4, F_SETFL, O_RDWR) = 0
> > 11459 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
> > 11459 close(4) = 0
> > 11459 open("/dev/null", O_RDONLY) = 4
> > 11459 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
> > 11459 ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon
> > echo ...}) = 0
> > 11459 waitpid(11460, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0) = 11460
> > 11459 --- SIGCHLD (Child exited) @ 0 (0) ---
> > 11459 close(4) = 0
> > 11459 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig
> > icanon echo ...}) = 0
> > 11459 ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon
> > echo ...}) = 0
> > 11459 fcntl64(3, F_GETFL) = 0x802 (flags
> > O_RDWR|O_NONBLOCK)
> > 11459 fcntl64(3, F_SETFL, O_RDWR) = 0
> > 11459 fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR)
> > 11459 close(3) = 0
> > 11459 open("/dev/null", O_RDONLY) = 3
> > 11459 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
> > 11459 fcntl64(2, F_GETFL) = 0x8802 (flags
> > O_RDWR|O_NONBLOCK|O_LARGEFILE)
> > 11459 fcntl64(2, F_SETFL, O_RDWR|O_LARGEFILE) = 0
> > 11459 fcntl64(2, F_GETFL) = 0x8002 (flags
> > O_RDWR|O_LARGEFILE)
> > 11459 close(2) = 0
> > 11459 open("/dev/null", O_RDONLY) = 2
> > 11459 fcntl64(2, F_SETFD, FD_CLOEXEC) = 0
> > 11459 fcntl64(0, F_GETFL) = 0x8002 (flags
> > O_RDWR|O_LARGEFILE)
> > 11459 fcntl64(0, F_SETFL, O_RDWR|O_LARGEFILE) = 0
> > 11459 fcntl64(0, F_GETFL) = 0x8002 (flags
> > O_RDWR|O_LARGEFILE)
> > 11459 close(0) = 0
> > 11459 close(1) = 0
> > 11459 open("/dev/null", O_RDONLY) = 0
> > 11459 fcntl64(0, F_SETFD, FD_CLOEXEC) = 0
> > 11459 fcntl64(3, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 fcntl64(3, F_SETFL, O_RDONLY) = 0
> > 11459 fcntl64(3, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 close(3) = 0
> > 11459 fcntl64(2, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 fcntl64(2, F_SETFL, O_RDONLY) = 0
> > 11459 fcntl64(2, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 close(2) = 0
> > 11459 fcntl64(2, F_GETFL) = -1 EBADF (Bad file
> > descriptor)
> > 11459 fcntl64(2, F_SETFL,
> > O_NONBLOCK|O_SYNC|O_ASYNC|O_DIRECT|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW|0xfffc0000)
> > = -1 EBADF (Bad file descriptor)
> > 11459 fcntl64(1, F_GETFL) = -1 EBADF (Bad file
> > descriptor)
> > 11459 fcntl64(1, F_SETFL,
> > O_NONBLOCK|O_SYNC|O_ASYNC|O_DIRECT|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW|0xfffc0000)
> > = -1 EBADF (Bad file descriptor)
> > 11459 fcntl64(0, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 fcntl64(0, F_SETFL, O_RDONLY) = 0
> > 11459 fcntl64(0, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 fcntl64(0, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 fcntl64(0, F_SETFL, O_RDONLY) = 0
> > 11459 fcntl64(0, F_GETFL) = 0 (flags O_RDONLY)
> > 11459 close(0) = 0
> > 11459 _exit(0) = ?
> >
> >
> >
> >
> > Don Libes <libes@nist.gov> wrote in message news:<s6afz64loj8.fsf@peace.mel.nist.gov>...
> > > Next step: Please provide a system call trace.
> > >
> > > Don
> > >
> > > fryxar@datafull.com writes:
> > >
> > > > Hi! I test it in a Gentoo Server, and in a Fedora Core 1 Server, and
> > > > both have the same problem. Here I send you the programs versions:
> > > >
> > > > tcl 8.3.4
> > > > glibc 2.3.3
> > > > expect 5.42.1 (patch with "Tcl_Flush(esPtr->channel);" in
> > > > exp_command.c file)
> > > >
> > > > Ths!
> > > >
> > > > Don Libes <libes@nist.gov> wrote in message news:<s6an00mx8nk.fsf@peace.mel.nist.gov>...
> > > > > Hmm. I can't reproduce this. It always works fine for me. Are you
> > > > > sure you backed out that previous patch? Let's just make sure we're
> > > > > on the same page. Here's the script I'm using:
> > > > >
> > > > > spawn -noecho cat test.txt
> > > > > interact -o -nobuffer
> > > > >
> > > > > Don
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > fryxar@datafull.com writes:
> > > > >
> > > > > > I'm sorry, but still it does not work. With the same scripts:
> > > > > >
> > > > > > ./test.exp
> > > > > > 1
> > > > > > 2
> > > > > > 3
> > > > > > 4
> > > > > > .
> > > > > > .
> > > > > > .
> > > > > > .
> > > > > > 4984
> > > > > > 4985
> > > > > > 4986
> > > > > > 4987
> > > > > > 4988
> > > > > > 4989
> > > > > > 4990
> > > > > > 4991
> > > > > > 4992
> > > > > > 4993
> > > > > > 4994
> > > > > > 4995
> > > > > > 4996
> > > > > > 4997
> > > > > > 4998
> > > > > > 4999
> > > > > > 498 <- Nooo
> > > > > >
> > > > > > It show always the last line. Thanks!
> > > > > >
> > > > > > FP
> > > > > >
> > > > > > Don Libes <libes@nist.gov> wrote in message news:<s6awtztybed.fsf@peace.mel.nist.gov>...
> > > > > > > Weird. But I have a different solution for you to try. First, back
> > > > > > > out the patch you just did. Then do this patch:
> > > > > > >
> > > > > > > *** exp_command.c~ Mon Aug 16 19:48:45 2004
> > > > > > > --- exp_command.c Fri Aug 20 13:18:01 2004
> > > > > > > ***************
> > > > > > > *** 326,331 ****
> > > > > > > --- 326,337 ----
> > > > > > > /* surprised finding stdio or /dev/tty nonblocking */
> > > > > > > (void) Tcl_SetChannelOption(interp,esPtr->channel,"-blocking","on");
> > > > > > >
> > > > > > > + /* Since we're closing the channel, not Tcl, we need to get Tcl's
> > > > > > > + buffers flushed. Because the channel was nonblocking, EAGAINs
> > > > > > > + could leave things buffered. They need to be synchronously
> > > > > > > + written now! */
> > > > > > > + Tcl_Flush(esPtr->channel);
> > > > > > > +
> > > > > > > /*
> > > > > > > * Ignore close errors from ptys. Ptys on some systems return errors for
> > > > > > > * no evident reason. Anyway, receiving an error upon pty-close doesn't
> > > > > > >
> > > > > > >
> > > > > > > fryxar@datafull.com writes:
> > > > > > >
> > > > > > > > Hi! Now it works better :-)
> > > > > > > >
> > > > > > > > I have seen only one problem, using the same script, there are some
> > > > > > > > lines that are shown twice
> > > > > > > >
> > > > > > > > >/tmp/test.txt; i=0; while [ $i -lt 5000 ] ; do echo $i; let i=$i+1;
> > > > > > > > done >>/tmp/test.txt
> > > > > > > >
> > > > > > > > cat <<EOF >test.exp
> > > > > > > > #!/usr/bin/expect --
> > > > > > > >
> > > > > > > > spawn -noecho cat /tmp/test.txt
> > > > > > > >
> > > > > > > > interact -o -nobuffer;
> > > > > > > >
> > > > > > > > wait
> > > > > > > > EOF
> > > > > > > >
> > > > > > > > cd /tmp; chmod 755 test.exp; ./test.exp
> > > > > > > > 1
> > > > > > > > 2
> > > > > > > > 3
> > > > > > > > 4
> > > > > > > > 5
> > > > > > > > 6
> > > > > > > > .
> > > > > > > > .
> > > > > > > > .
> > > > > > > > 4962
> > > > > > > > 4963
> > > > > > > > 4964
> > > > > > > > 4965
> > > > > > > > 4966
> > > > > > > > 4967
> > > > > > > > 4968
> > > > > > > > 4969
> > > > > > > > 4970
> > > > > > > > 4971
> > > > > > > > 4972
> > > > > > > > 4973
> > > > > > > > 4974
> > > > > > > > 4975
> > > > > > > > 4976
> > > > > > > > 4977
> > > > > > > > 4978
> > > > > > > > 4979
> > > > > > > > 4980
> > > > > > > > 4981
> > > > > > > > 4982
> > > > > > > > 4983
> > > > > > > > 4984
> > > > > > > > 4985
> > > > > > > > 4986
> > > > > > > > 4987
> > > > > > > > 4988
> > > > > > > > 4989
> > > > > > > > 4990
> > > > > > > > 4991
> > > > > > > > 4992
> > > > > > > > 4993
> > > > > > > > 4994
> > > > > > > > 4995
> > > > > > > > 4996
> > > > > > > > 4997
> > > > > > > > 4998
> > > > > > > > 4999
> > > > > > > > 84 <- Here it's the problem
> > > > > > > > 4985
> > > > > > > > 4986
> > > > > > > > 4987
> > > > > > > > 4988
> > > > > > > > 4989
> > > > > > > > 4990
> > > > > > > > 4991
> > > > > > > > 4992
> > > > > > > > 4993
> > > > > > > > 4994
> > > > > > > > 4995
> > > > > > > > 4996
> > > > > > > > 4997
> > > > > > > > 4998
> > > > > > > > 4999
> > > > > > > >
> > > > > > > >
> > > > > > > > Don Libes <libes@nist.gov> wrote in message news:<s6azn4sxioz.fsf@peace.mel.nist.gov>...
> > > > > > > > > I think I figured out the problem. Do this patch and recompile:
> > > > > > > > >
> > > > > > > > > *** /tmp/expect-5.42/exp_chan.c Tue Jul 6 17:24:53 2004
> > > > > > > > > --- exp_chan.c Wed Aug 18 16:46:27 2004
> > > > > > > > > ***************
> > > > > > > > > *** 260,265 ****
> > > > > > > > > --- 260,266 ----
> > > > > > > > > sleep(1);
> > > > > > > > > expDiagLogU("write() failed to write anything - will sleep(1) and retry...\n");
> > > > > > > > > } else if (written < 0) {
> > > > > > > > > + if (errno == EAGAIN) continue;
> > > > > > > > > *errorCodePtr = errno;
> > > > > > > > > return -1;
> > > > > > > > > }
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Don
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > fryxar@datafull.com writes:
> > > > > > > > >
> > > > > > > > > > It works worse with expect 5.42.1!! I make this test:
> > > > > > > > > >
> > > > > > > > > > >/tmp/test.txt; i=0; while [ $i -lt 5000 ] ; do echo $i; let i=$i+1;
> > > > > > > > > > done >>/tmp/test.txt
> > > > > > > > > >
> > > > > > > > > > and then:
> > > > > > > > > >
> > > > > > > > > > cat <<EOF >/tmp/test.sh
> > > > > > > > > > #!/bin/bash
> > > > > > > > > >
> > > > > > > > > > echo "Press ENTER"
> > > > > > > > > > while read i
> > > > > > > > > > do
> > > > > > > > > > cat /tmp/test.txt
> > > > > > > > > > echo "Press ENTER"
> > > > > > > > > > done
> > > > > > > > > > EOF
> > > > > > > > > >
> > > > > > > > > > cat <<EOF >/tmp/test.exp
> > > > > > > > > > #!/usr/bin/expect
> > > > > > > > > >
> > > > > > > > > > spawn -noecho /tmp/test.sh;
> > > > > > > > > >
> > > > > > > > > > interact -o -nobuffer;
> > > > > > > > > > EOF
> > > > > > > > > >
> > > > > > > > > > and then:
> > > > > > > > > > cd /tmp
> > > > > > > > > > chmod 755 test.sh test.exp
> > > > > > > > > > ./test.exp
> > > > > > > > > >
> > > > > > > > > > also this simple script does not work!
> > > > > > > > > >
> > > > > > > > > > #!/usr/bin/expect --
> > > > > > > > > >
> > > > > > > > > > spawn -noecho cat /tmp/test.txt
> > > > > > > > > >
> > > > > > > > > > interact -o -nobuffer;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Don Libes <libes@nist.gov> wrote in message news:<s6ad61xpleo.fsf@peace.mel.nist.gov>...
> > > > > > > > > > > If it outright hangs, it sounds like the problem fixed in the latest
> > > > > > > > > > > release (5.42) of Expect.
> > > > > > > > > > >
> > > > > > > > > > > Don
> > > > > > > > > > >
> > > > > > > > > > > fryxar@datafull.com writes:
> > > > > > > > > > >
> > > > > > > > > > > > I've problems with expect, running a simple script in a Fedora server.
> > > > > > > > > > > > The same script, running in a Redhat 8 with the same version of
> > > > > > > > > > > > expect, works fine. Also I run it in a Gentoo servers, and it doesn't
> > > > > > > > > > > > work.
> > > > > > > > > > > >
> > > > > > > > > > > > This is the script:
> > > > > > > > > > > >
> > > > > > > > > > > > cat <<EOF >/tmp/test.sh
> > > > > > > > > > > > #!/bin/bash
> > > > > > > > > > > >
> > > > > > > > > > > > echo "Press ENTER"
> > > > > > > > > > > > while read i
> > > > > > > > > > > > do
> > > > > > > > > > > > cat /etc/termcap # A long long file
> > > > > > > > > > > > echo "Press ENTER"
> > > > > > > > > > > > done
> > > > > > > > > > > > EOF
> > > > > > > > > > > >
> > > > > > > > > > > > cat <<EOF >/tmp/test.exp
> > > > > > > > > > > > #!/usr/bin/expect
> > > > > > > > > > > >
> > > > > > > > > > > > spawn -noecho /tmp/test.sh;
> > > > > > > > > > > >
> > > > > > > > > > > > interact -o -nobuffer;
> > > > > > > > > > > > EOF
> > > > > > > > > > > >
> > > > > > > > > > > > and then:
> > > > > > > > > > > > cd /tmp
> > > > > > > > > > > > chmod 755 test.sh test.exp
> > > > > > > > > > > > ./test.exp
> > > > > > > > > > > > # Press enter and wait
> > > > > > > > > > > >
> > > > > > > > > > > > The script print the file /etc/termcap, but truncate the end of the
> > > > > > > > > > > > file. Is this a bug?
> > > > > > > > > > > >
> > > > > > > > > > > > Tested versions with problems:
> > > > > > > > > > > >
> > > > > > > > > > > > kernel: 2.6.7, 2.4.22
> > > > > > > > > > > > expect: 5.37.1, 5.39, 5.41
> > > > > > > > > > > > glibc: 2.3.2-101, 2.3.3.20040420
- Next message: lvirden_at_gmail.com: "Re: exit codes from piped executables"
- Previous message: Helmut Giese: "Re: Test cmdAH-24.10 failure: Please brainstorm with me"
- In reply to: Don Libes: "Re: Problems with expect and Fedora / Gentoo (URGENT)"
- Next in thread: Don Libes: "Re: Problems with expect and Fedora / Gentoo (URGENT)"
- Reply: Don Libes: "Re: Problems with expect and Fedora / Gentoo (URGENT)"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|