-
-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cryptic contract violation from with-current-saved-continuation-marks-and #69
Comments
While the code where I encountered this is not yet public (we're working on it), I could provide access if it would help to diagnose these issues. But I'm also happy to try to produce a more minimal example, though advice on what to look for would be helpful. |
In case it's useful, I'm attaching the output of Running the macro stepper on this module causes an internal error (at least in 7.4 CS), so I'm also linking to its debugging dump: macro-stepper-error.rktd.gz (Note that the file is 16.2 MiB compressed: I'm hosting it myself, and I'll probably delete it when this issue is closed.) |
Try changing the contract to |
Yes, changing the contract and running Running the problem file directly (i.e. Additionally, while in a
|
Did you test with |
After refactoring a big web-server program, attempting to run it now blames one of my modules for violating the contract of
with-current-saved-continuation-marks-and
("expected 1 value, returned 2 values in: the range of the 3rd argument of(-> any/c any/c (-> any/c) any/c)
"—full message below).I am not sure how to minimize this example. The blamed module doesn't use
with-current-saved-continuation-marks-and
directly (nor does any of my code), and it doesn't even seem to use or define any functions with multiple return values. It is written in a language based on#lang web-server
. (Changing to the plain#lang web-server
doesn't seem to help.)The bug seems to be the web server's fault: changing the blamed module to use
#lang racket/base
seems to fix the error. (It isn't clear why this module was in a web-server-based language in the first place: my guess is that I left it that way in an earlier refactoring.)The contract problem happens both in Racket 7.4 CS and in traditional Racket built from
master
, but Racket CS has an additional problem: if I try to run the blamed module directly (i.e.racket portal/private-servlet/feedback/notify.rkt
) when it's#lang
is eitherweb-server
or myweb-server
-based language, Racket 7.4 CS has an "invalid memory reference," whereas traditional Racket succeeds.Here's the full error message:
The text was updated successfully, but these errors were encountered: