* Problem with netcat @ 2011-04-03 21:23 John Proctor 2011-04-04 21:16 ` Andy Wingo 0 siblings, 1 reply; 10+ messages in thread From: John Proctor @ 2011-04-03 21:23 UTC (permalink / raw) To: bug-guile [-- Attachment #1: Type: text/plain, Size: 831 bytes --] I posted this on IRC and it seems to not likely be a bug with guile but maybe someone can help. Other than this one issue, guile seems to run fine. I am using version 2.0.0 compiled from sources with: $ export BDW_GC_CFLAGS=-L/usr/lib $ export BDW_GC_LIBS=-lgc $ ./configure --prefix=/custom/dir $ make $ make install If I run: $ guile --listen 9000 the guile interpreter starts normal. I can then go to another shell and run $ nc localhost 9000 and access the running instance. Everything seems to work normal. However, if I take a scheme source file such as foo.ss with nothing more than a single express e.g. (+ 1 1) and try : $ nc localhost 9000 < foo.ss the guile instance dies immediately with no errors or anything. Any ideas on how I can debug what is going on would be appreciated. Thanks, John Proctor [-- Attachment #2: Type: text/html, Size: 1349 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-03 21:23 Problem with netcat John Proctor @ 2011-04-04 21:16 ` Andy Wingo 2011-04-06 10:52 ` Detlev Zundel [not found] ` <BANLkTimDrGF+3TQdXzwjQ-mWbUj1VMYA6g@mail.gmail.com> 0 siblings, 2 replies; 10+ messages in thread From: Andy Wingo @ 2011-04-04 21:16 UTC (permalink / raw) To: John Proctor; +Cc: bug-guile On Sun 03 Apr 2011 23:23, John Proctor <john.proctor@gmail.com> writes: > However, if I take a scheme source file such as foo.ss with nothing more than a single express e.g. (+ 1 1) and try : > > $ nc localhost 9000 < foo.ss > > the guile instance dies immediately with no errors or anything. Can anyone reproduce this error? Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-04 21:16 ` Andy Wingo @ 2011-04-06 10:52 ` Detlev Zundel [not found] ` <BANLkTimDrGF+3TQdXzwjQ-mWbUj1VMYA6g@mail.gmail.com> 1 sibling, 0 replies; 10+ messages in thread From: Detlev Zundel @ 2011-04-06 10:52 UTC (permalink / raw) To: bug-guile Hi, > On Sun 03 Apr 2011 23:23, John Proctor <john.proctor@gmail.com> writes: > >> However, if I take a scheme source file such as foo.ss with nothing >> more than a single express e.g. (+ 1 1) and try : >> >> $ nc localhost 9000 < foo.ss >> >> the guile instance dies immediately with no errors or anything. > > Can anyone reproduce this error? I cannot reproduce the error, no. John, what you might try is to start guile under control of "strace -f" and see what happens when you connect with netcat. This could give us a hint on the reason for the termination. Cheers Detlev -- Computer scientists do it depth-first. ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <BANLkTimDrGF+3TQdXzwjQ-mWbUj1VMYA6g@mail.gmail.com>]
* Re: Problem with netcat [not found] ` <BANLkTimDrGF+3TQdXzwjQ-mWbUj1VMYA6g@mail.gmail.com> @ 2011-04-07 16:04 ` Detlev Zundel 2011-04-11 8:14 ` Andy Wingo 0 siblings, 1 reply; 10+ messages in thread From: Detlev Zundel @ 2011-04-07 16:04 UTC (permalink / raw) To: John Proctor; +Cc: bug-guile mailing list Hi John, > Attached is the output of two strace runs. > strace.netcat is of 'strace -r guile --listen=9000' with 'netcat localhost > 9000 < a.ss' run against it. > strace.interactive is of 'strace -r guile --listen=9000' with 'netcat > localhost 9000' used to access it and me manually typing (+ 5 3) then > hitting <ctrl>-d in both windows to terminate. > > Thanks Andy and Detlev. Thanks for the input - I think the problem is clear to see here: > 0.000033 rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 > 0.000039 write(90, "scheme@(guile-user)> ", 21scheme@(guile-user)> ) = 21 > 0.000028 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > 0.000022 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 > 0.000032 read(0, <unfinished ...> > 30.150227 +++ killed by SIGPIPE +++ This is from the problematic log. It turns out that an "strace -f" would have be better advice for you so we would have seen the actual socket process but funnily enough I now sometimes can regenerate the error (usually by pressing C-c in netcat). This is the last I see for such a case: [pid 706] times({tms_utime=26, tms_stime=3, tms_cutime=0, tms_cstime=0}) = -1349846525 [pid 706] select(1024, [81], [], [], {0, 0}) = 0 (Timeout) [pid 706] brk(0x9353000) = 0x9353000 [pid 706] brk(0x934b000) = 0x934b000 [pid 706] write(81, "scheme@(guile-user) [1]> ", 25) = 25 [pid 706] read(81, "", 1) = 0 [pid 706] write(81, "\n", 1) = 1 [pid 706] select(1024, [81], [], [], {0, 0}) = 1 (in [81], left {0, 0}) [pid 706] read(81, "", 1) = 0 [pid 706] select(1024, [81], [], [], {0, 0}) = 1 (in [81], left {0, 0}) [pid 706] read(81, "", 1) = 0 [pid 706] write(81, "\n", 1) = -1 EPIPE (Broken pipe) [pid 706] --- SIGPIPE (Broken pipe) @ 0 (0) --- Process 706 detached [pid 32521] +++ killed by SIGPIPE +++ [pid 32520] +++ killed by SIGPIPE +++ +++ killed by SIGPIPE +++ So it seems like guile wants simply to output a newline but the socket is closed already and the process then gets the SIGPIPE signal which guile is not prepared for. I will need to dig deeper into the innards of guile to find an answer on how to prevent that. If someone beats me to it I'll still be happy ;) Cheers Detlev -- Number theorists do it perfectly and rationally. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-07 16:04 ` Detlev Zundel @ 2011-04-11 8:14 ` Andy Wingo 2011-04-11 14:32 ` Detlev Zundel 2011-04-11 17:36 ` Mark H Weaver 0 siblings, 2 replies; 10+ messages in thread From: Andy Wingo @ 2011-04-11 8:14 UTC (permalink / raw) To: Detlev Zundel; +Cc: bug-guile mailing list On Thu 07 Apr 2011 18:04, Detlev Zundel <dzu@denx.de> writes: > So it seems like guile wants simply to output a newline but the socket > is closed already and the process then gets the SIGPIPE signal which > guile is not prepared for. Excellent debugging, Detlev! I pushed a (sigaction SIGPIPE SIG_IGN) to (system repl repl), which should fix the issue. Thanks for the debugging, and thanks for the report, John! Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-11 8:14 ` Andy Wingo @ 2011-04-11 14:32 ` Detlev Zundel 2011-04-11 17:35 ` John Proctor 2011-04-11 17:36 ` Mark H Weaver 1 sibling, 1 reply; 10+ messages in thread From: Detlev Zundel @ 2011-04-11 14:32 UTC (permalink / raw) To: Andy Wingo; +Cc: bug-guile mailing list Hi Andy, > On Thu 07 Apr 2011 18:04, Detlev Zundel <dzu@denx.de> writes: > >> So it seems like guile wants simply to output a newline but the socket >> is closed already and the process then gets the SIGPIPE signal which >> guile is not prepared for. > > Excellent debugging, Detlev! I pushed a (sigaction SIGPIPE SIG_IGN) to > (system repl repl), which should fix the issue. Thanks for the > debugging, and thanks for the report, John! Thanks for the fix - I can confirm that this works (guile survives) for the cases where I saw the sigpipe before. Cheers Detlev -- I had nothing to do with implementing Gosmacs. It was inspired by the original Emacs, but that's all. I would never have agreed to use a language like Mocklisp. -- Richard Stallman in <E1CUySS-00048D-RN@fencepost.gnu.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-11 14:32 ` Detlev Zundel @ 2011-04-11 17:35 ` John Proctor 0 siblings, 0 replies; 10+ messages in thread From: John Proctor @ 2011-04-11 17:35 UTC (permalink / raw) To: Detlev Zundel, Andy Wingo; +Cc: bug-guile mailing list [-- Attachment #1: Type: text/plain, Size: 957 bytes --] Thanks for the great response. On Mon, Apr 11, 2011 at 10:32 AM, Detlev Zundel <dzu@denx.de> wrote: > Hi Andy, > > > On Thu 07 Apr 2011 18:04, Detlev Zundel <dzu@denx.de> writes: > > > >> So it seems like guile wants simply to output a newline but the socket > >> is closed already and the process then gets the SIGPIPE signal which > >> guile is not prepared for. > > > > Excellent debugging, Detlev! I pushed a (sigaction SIGPIPE SIG_IGN) to > > (system repl repl), which should fix the issue. Thanks for the > > debugging, and thanks for the report, John! > > Thanks for the fix - I can confirm that this works (guile survives) for > the cases where I saw the sigpipe before. > > Cheers > Detlev > > -- > I had nothing to do with implementing Gosmacs. It was inspired > by the original Emacs, but that's all. I would never have agreed > to use a language like Mocklisp. > -- Richard Stallman in <E1CUySS-00048D-RN@fencepost.gnu.org> > [-- Attachment #2: Type: text/html, Size: 1485 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-11 8:14 ` Andy Wingo 2011-04-11 14:32 ` Detlev Zundel @ 2011-04-11 17:36 ` Mark H Weaver 2011-04-11 18:03 ` Andy Wingo 2011-04-13 9:08 ` Detlev Zundel 1 sibling, 2 replies; 10+ messages in thread From: Mark H Weaver @ 2011-04-11 17:36 UTC (permalink / raw) To: Andy Wingo; +Cc: bug-guile mailing list, Detlev Zundel Andy Wingo <wingo@pobox.com> wrote: > I pushed a (sigaction SIGPIPE SIG_IGN) to (system repl repl), which > should fix the issue. Isn't this a bad idea? SIGPIPE generally indicates that something went wrong. If we ignore it, important problems may go unnoticed. To me, this seems kind of like ignoring SIGSEGV to get around a memory access to an unmapped area that would be inconvenient to prevent. Furthermore, what happens if a REPL is started within a Guile process that wants to install its own handler for SIGPIPE? Why is a pipe being created here, anyway? Why not just a socket? Best, Mark ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-11 17:36 ` Mark H Weaver @ 2011-04-11 18:03 ` Andy Wingo 2011-04-13 9:08 ` Detlev Zundel 1 sibling, 0 replies; 10+ messages in thread From: Andy Wingo @ 2011-04-11 18:03 UTC (permalink / raw) To: Mark H Weaver; +Cc: bug-guile mailing list, Detlev Zundel On Mon 11 Apr 2011 19:36, Mark H Weaver <mhw@netris.org> writes: > Andy Wingo <wingo@pobox.com> wrote: >> I pushed a (sigaction SIGPIPE SIG_IGN) to (system repl repl), which >> should fix the issue. > > Isn't this a bad idea? SIGPIPE generally indicates that something went > wrong. If we ignore it, important problems may go unnoticed. To me, > this seems kind of like ignoring SIGSEGV to get around a memory access > to an unmapped area that would be inconvenient to prevent. > > Furthermore, what happens if a REPL is started within a Guile process > that wants to install its own handler for SIGPIPE? > > Why is a pipe being created here, anyway? Why not just a socket? Sorry, this isn't in (system repl repl), it's in (system repl server) -- so it's a socket. If the socket is closed without cleanup, you might get a SIGPIPE. It's necessary in net-facing servers. You don't get this behavior if you don't --listen. Regards, Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Problem with netcat 2011-04-11 17:36 ` Mark H Weaver 2011-04-11 18:03 ` Andy Wingo @ 2011-04-13 9:08 ` Detlev Zundel 1 sibling, 0 replies; 10+ messages in thread From: Detlev Zundel @ 2011-04-13 9:08 UTC (permalink / raw) To: bug-guile Hi Mark, > Andy Wingo <wingo@pobox.com> wrote: >> I pushed a (sigaction SIGPIPE SIG_IGN) to (system repl repl), which >> should fix the issue. > > Isn't this a bad idea? SIGPIPE generally indicates that something went > wrong. If we ignore it, important problems may go unnoticed. To me, > this seems kind of like ignoring SIGSEGV to get around a memory access > to an unmapped area that would be inconvenient to prevent. We do not ignore the problem, we simply allow guile to recat to the problem ;) Where previously guile simply died, I now see this in the father guile-process when the problematic situation arises: ,----[ Guile Output ] | scheme@(guile-user)> Backtrace: | In ice-9/boot-9.scm: | 170: 17 [catch #t #<catch-closure a283a10> ...] | In unknown file: | ?: 16 [catch-closure] | In ice-9/boot-9.scm: | 170: 15 [catch #t #<procedure a270a20 at system/repl/server.scm:115:10 ()> ...] | In system/repl/server.scm: | 122: 14 [serve-client #<input-output: socket 81> #(2 2130706433 49515)] | In unknown file: | ?: 13 [with-continuation-barrier #<procedure a2837c0 at system/repl/server.scm:123:3 ()>] | In ice-9/boot-9.scm: | 170: 12 [catch #t #<catch-closure a2837b0> ...] | In unknown file: | ?: 11 [catch-closure] | In module/ice-9/r4rs.scm: | 170: 10 [with-input-from-port #<variable a2ccf88 value: #<input: soft 967d8e8>> ...] | 174: 9 [with-output-to-port #<variable a2cce30 value: #<output: file /dev/pts/1>> ...] | 178: 8 [with-error-to-port #<variable a2cccd8 value: #<output: file /dev/pts/1>> ...] | In system/repl/server.scm: | 131: 7 [#<procedure 9a57f10 at system/repl/server.scm:129:15 ()>] | In module/system/repl/repl.scm: | 160: 6 [run-repl #] | 123: 5 [#<procedure 9a4d280 at module/system/repl/repl.scm:118:4 (key . args)> read-error ...] | In module/ice-9/format.scm: | 1574: 4 [format #<input-output: socket 81> "While reading expression: | "] | 747: 3 [format:format-work "While reading expression: | " ()] | 234: 2 [anychar-dispatch] | 80: 1 [format:out-char #\h] | In unknown file: | ?: 0 [write-char #\h #<input-output: socket 81>] | | ERROR: In procedure write-char: | ERROR: In procedure fport_write: Broken pipe | Backtrace: | In ice-9/boot-9.scm: | 170: 3 [catch #t #<catch-closure a283a10> ...] | In unknown file: | ?: 2 [catch-closure] | In ice-9/boot-9.scm: | 170: 1 [catch #t #<procedure a270a20 at system/repl/server.scm:115:10 ()> ...] | In system/repl/server.scm: | 122: 0 [serve-client #<input-output: socket 81> #(2 2130706433 49515)] | | system/repl/server.scm:121:2: In procedure serve-client: | system/repl/server.scm:121:2: In procedure fport_write: Broken pipe `---- Cheers Detlev -- Don't trust everything you read, and don't assume every poster in a thread is actually relevant to the problem. -- Stefan Monnier <jwvlj1gk44h.fsf-monnier+emacs@gnu.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-04-13 9:08 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-04-03 21:23 Problem with netcat John Proctor 2011-04-04 21:16 ` Andy Wingo 2011-04-06 10:52 ` Detlev Zundel [not found] ` <BANLkTimDrGF+3TQdXzwjQ-mWbUj1VMYA6g@mail.gmail.com> 2011-04-07 16:04 ` Detlev Zundel 2011-04-11 8:14 ` Andy Wingo 2011-04-11 14:32 ` Detlev Zundel 2011-04-11 17:35 ` John Proctor 2011-04-11 17:36 ` Mark H Weaver 2011-04-11 18:03 ` Andy Wingo 2011-04-13 9:08 ` Detlev Zundel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).