[plt-scheme] PLT 371 Web-Server Generating Error "call-with-composable-continuation: cannot capture past continuation barrier"

From: Eric Domeshek (domeshek at stottlerhenke.com)
Date: Mon Oct 22 20:27:15 EDT 2007

Noel,

Thanks for the advice.  By dint of about 12 hours of hacking, I got my 
stuff mostly ported to 371.  I got explicit about managing session state 
in the move from unit-based to module-based servlets.  I also ran into a 
problem with all my old "define-macro" macros no longer working so I 
finally had to learn about "define-syntax" macros and then rewrite all 
my macros.

The good news is that the symptom that motivated this upgrade seems to 
have been fixed by moving to 371.  The server no longer hangs if I click 
a second time before getting the result of the first click.

The bad news is I've just spent another hour diagnosing a new problem 
that's turned up: it seems that now I can't use call/cc in my code.  I 
have an implementation of the Porter stemming algorithm that uses 
call/cc to emulate CommonLisp's ability to do non-local returns from a 
block or function.  When I invoke it from inside my servlet I get the 
error message:  "call-with-composable-continuation: cannot capture past 
continuation barrier"

Any clue what this is about?  Or do you happen to have an implementation 
of the Porter stemming algorithm hanging about that doesn't use call/cc, 
or have a better way to do non-local exits?

Thanks again,

--Eric


Noel Welsh wrote:
> Hi Eric,
>
> I'm afraid the best advice I can give is to upgrade to 371, as it
> incorporates many important improvements and fixes (and I've even
> encourage you to try one of the nightly builds).  It shouldn't be that
> onerous.  The conversion from unit to module based servlets should be
> straightforward, and you get better error checking with modules, so it
> is a bit of a win.  To load the web server configuration you can take
> example code from instaweb.  Search for
>
> configuration-table->web-config@
>
> in
>
> http://planet.plt-scheme.org/package-source/schematics/instaweb.plt/1/8/instaweb.ss
>
> HTH,
> Noel
>
> On 10/19/07, Eric Domeshek <domeshek at stottlerhenke.com> wrote:
>   
>> Gang,
>>
>> I have used PLT 360 to build an elaborate web application.  I have
>> noticed that if, from a particular page, I click a link that invokes an
>> extended computation/display, and before the new page comes up, I click
>> another link on the original page, then the server seems to hang and
>> never respond to either click.  All these links are generated using
>> embed/url inside a send/suspend/dispatch.  I've been using Firefox 2 as
>> my browser.
>>
>> Before I get all hung about about possible threading issues and the
>> possibility of unsafe data modifications, I thought I'd ask if there is
>> a simpler explanation (and fix) or if anyone else has seen and can
>> account for this behavior.
>>
>> Also, as an aside, I've downloaded PLT 371 and considered upgrading, but
>> it doesn't appear to be a smooth path, since many things have changed
>> (but I'm not sure the docs have kept up).  The way I set my
>> configuration no longer works (I think the 'load-configuration' function
>> is gone and I can't figure out what has replaced it).  I also think I
>> read in a post to this list that unit-based servlets are no longer
>> supported (which is how I've built my two major servlets).
>>
>> Anyway, thanks for any help or pointers you folks can offer...
>>
>> --Eric
>>
>> ====================================================================
>> Eric Domeshek                      Phone: 617-616-1291
>> AI Project Manager                   Fax: 617-616-1290
>> Stottler Henke Associates, Inc.    EMail: domeshek at stottlerhenke.com
>> 48 Grove St., Somerville, MA 02144   Web: www.stottlerhenke.com
>> ====================================================================
>>     



Posted on the users mailing list.