From: Brian P. <bperry@MIT.EDU> - 2012-05-02 18:39:58
|
Greetings, I've been working on adapting existing Lisp code to communicate with a socket server with the end goal of allowing a couple of different web based clients (one using Flash, another in Processing) to communicate with the Lisp server. I've run into a couple of specific roadblocks and was wondering if anyone could help. The first issue is that the lisp server is crashing when a client disconnects. I'm seeing an error similar to the following: ------- debugger invoked on a END-OF-FILE in thread #<THREAD RUNNING {1003707001}>: end of file on #<SB-SYS:FD-STREAM for "a socket" {10037EFDE1}> ------- If we could get past this one, we'd be able to move forward quite a bit. The second issue is that the Lisp server currently blocks when one connection is made, preventing other clients from connecting simultaneously. I've assumed that sbcl's threading might help here, but I didn't have any luck with it myself (most likely due to lack of experience). I based the server on the following example: http://jsnell.iki.fi/tmp/echo-server.lisp I'd be happy to provide more info if it helps. Thanks, Brian |
From: Leslie P. P. <sk...@vi...> - 2012-05-03 10:39:54
|
Brian Perry wrote: > Greetings, > > I've been working on adapting existing Lisp code to communicate with a socket server > with the end goal of allowing a couple of different web based clients (one using Flash, > another in Processing) to communicate with the Lisp server. I've run into a couple of > specific roadblocks and was wondering if anyone could help. > > The first issue is that the lisp server is crashing when a client disconnects. I'm > seeing an error similar to the following: > > ------- > debugger invoked on a END-OF-FILE in thread #<THREAD RUNNING {1003707001}>: > end of file on #<SB-SYS:FD-STREAM for "a socket" {10037EFDE1}> You want to catch that exception, or check for end of file before you read, or disable the condition throw on EOF (if possible). > The second issue is that the Lisp server currently blocks when one connection is made, > preventing other clients from connecting simultaneously. I've assumed that sbcl's > threading might help here, but I didn't have any luck with it myself (most likely due to > lack of experience). I haven't looked at your code, but I suppose some kind of non-blocking or event-based I/O might be possible. On the other hand it might still be easier to get used to threads since it's not that hard... Leslie > > I based the server on the following example: > > http://jsnell.iki.fi/tmp/echo-server.lisp > > I'd be happy to provide more info if it helps. > > Thanks, > > Brian > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. > http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ > Sbcl-help mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-help > -- |
From: Brian P. <bperry@MIT.EDU> - 2012-05-03 20:21:33
|
Thanks for the reply Leslie. I dug a little deeper into what's possible regarding exception handling, and it does seem likely that would allow us to work around / more gracefully handle this error case. As for the second issue - I'm still relatively new to Lisp, but I'm always willing to learn. Is there any particular resource you (or others reading) would suggest as a crash course on threading for scbl? Brian On Thursday, May 3, 2012 at 6:07 AM, Leslie P. Polzer wrote: > > Brian Perry wrote: > > Greetings, > > > > I've been working on adapting existing Lisp code to communicate with a socket server > > with the end goal of allowing a couple of different web based clients (one using Flash, > > another in Processing) to communicate with the Lisp server. I've run into a couple of > > specific roadblocks and was wondering if anyone could help. > > > > The first issue is that the lisp server is crashing when a client disconnects. I'm > > seeing an error similar to the following: > > > > ------- > > debugger invoked on a END-OF-FILE in thread #<THREAD RUNNING {1003707001}>: > > end of file on #<SB-SYS:FD-STREAM for "a socket" {10037EFDE1}> > > > > > You want to catch that exception, or check for end of file before you read, > or disable the condition throw on EOF (if possible). > > > > The second issue is that the Lisp server currently blocks when one connection is made, > > preventing other clients from connecting simultaneously. I've assumed that sbcl's > > threading might help here, but I didn't have any luck with it myself (most likely due to > > lack of experience). > > > > > I haven't looked at your code, but I suppose some kind of non-blocking > or event-based I/O might be possible. On the other hand it might still > be easier to get used to threads since it's not that hard... > > Leslie > > > > > > I based the server on the following example: > > > > http://jsnell.iki.fi/tmp/echo-server.lisp > > > > I'd be happy to provide more info if it helps. > > > > Thanks, > > > > Brian > > > > ------------------------------------------------------------------------------ > > Live Security Virtual Conference > > Exclusive live event will cover all the ways today's security and > > threat landscape has changed and how IT managers can respond. Discussions > > will include endpoint security, mobile security and the latest in malware > > threats. > > http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ > > Sbcl-help mailing list > > Sbc...@li... (mailto:Sbc...@li...) > > https://lists.sourceforge.net/lists/listinfo/sbcl-help > > > > > > -- |
From: Brian P. <bperry@MIT.EDU> - 2012-06-05 03:09:57
|
As a follow up to my previous message, I'm looking for someone who would be interested in taking on some work to resolve these issues. Some additional info: ICE Lab at MIT - SBCL Programmer to Debug Existing Server Program The Imagination, Computation, and Expression Laboratory (ICE Lab) at MIT is looking for an SBCL programmer to help debug issues with an existing Lisp socket server program. The server will eventually handle connections from multiple web-based clients in support of a number of student projects - experience with threading and exception handling in SBCL are a plus. Project is likely to be smaller in scope since much of the system is already functional. Remote candidates are fine, but strong communication skills are required. Contact be...@mi... for more details. Thanks, Brian On Wednesday, May 2, 2012 at 2:39 PM, Brian Perry wrote: > Greetings, > > I've been working on adapting existing Lisp code to communicate with a socket server with the end goal of allowing a couple of different web based clients (one using Flash, another in Processing) to communicate with the Lisp server. I've run into a couple of specific roadblocks and was wondering if anyone could help. > > The first issue is that the lisp server is crashing when a client disconnects. I'm seeing an error similar to the following: > > ------- > debugger invoked on a END-OF-FILE in thread #<THREAD RUNNING {1003707001}>: > end of file on #<SB-SYS:FD-STREAM for "a socket" {10037EFDE1}> > > ------- > > If we could get past this one, we'd be able to move forward quite a bit. > > The second issue is that the Lisp server currently blocks when one connection is made, preventing other clients from connecting simultaneously. I've assumed that sbcl's threading might help here, but I didn't have any luck with it myself (most likely due to lack of experience). > > I based the server on the following example: > > http://jsnell.iki.fi/tmp/echo-server.lisp > > I'd be happy to provide more info if it helps. > > Thanks, > > Brian |