Skip to content
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

exception unsealer to go with SES console #731

Open
dckc opened this issue May 12, 2021 · 6 comments
Open

exception unsealer to go with SES console #731

dckc opened this issue May 12, 2021 · 6 comments
Assignees
Labels
devex developer experience kriskowal-review-2024-01 Issues that kriskowal wants to bring to the attention of the team for review as of January, 2024

Comments

@dckc
Copy link
Contributor

dckc commented May 12, 2021

The censoring in the SES assert and console are an approximation of exception sealing. But we lack a reified exception unsealer that we can use for example, in our REPL.

Exception sealing is motivated by the observation that throw-catch is dynamically scoped, contrary to encapsulation as needed for Cap discipline.

Section 4.3 Exceptions and Errors of the 2010 Joe-E paper is a good write-up including this example:

To see how this can cause unpleasant surprises, suppose Alice calls Bob. Bob has some special capability that she
lacks, and Bob wants to avoid leaking this to her. At some point, Bob might need to invoke Chuck to perform some operation, passing this capability to Chuck. If (unbeknownst to Bob) Chuck can throw an exception that Bob doesn’t catch, this exception might propagate to Alice. If this exception contains Bob’s precious capability, this might cause the capability to leak to Alice, against Bob’s wishes and despite Chuck’s good intentions.

See also Reid to cap-talk 13 April 2010.

ava-xs has a work-around that logs errors before sending them over the wire because that's where the SES console that knows the uncensored details are:

https://github.com/Agoric/agoric-sdk/blob/23ed67c070a6ea04fb305d469283107b1d3d65f3/packages/xsnap/src/avaAssertXS.js#L344

This came up in discussion of Agoric/agoric-sdk#3079 .

If we could grant the test() function an exception unsealer, it could serialize the uncensored error details and send them along with other test result info.

Another place that should be able to unseal errors is the REPL. (cc @michaelfig )

@erights
Copy link
Contributor

erights commented May 12, 2021

Thanks!

@dckc
Copy link
Contributor Author

dckc commented May 17, 2021

yes, move to endo
use case: t.log

@dckc dckc transferred this issue from Agoric/agoric-sdk May 17, 2021
@dckc dckc transferred this issue from another repository May 17, 2021
@endojs endojs deleted a comment from erights May 17, 2021
@erights
Copy link
Contributor

erights commented May 17, 2021

@dckc
Copy link
Contributor Author

dckc commented May 15, 2023

related: passing DEBUG and related env vars into xsnap-worker

@kriskowal kriskowal added the kriskowal-review-2024-01 Issues that kriskowal wants to bring to the attention of the team for review as of January, 2024 label Jan 10, 2024
@dckc
Copy link
Contributor Author

dckc commented Mar 1, 2024

@erights seems to be working on something that looks like it will address this.

@erights
Copy link
Contributor

erights commented Mar 1, 2024

Just noting that #2109 is related, but would not close this bug.

@dckc dckc added the devex developer experience label Mar 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devex developer experience kriskowal-review-2024-01 Issues that kriskowal wants to bring to the attention of the team for review as of January, 2024
Projects
None yet
Development

No branches or pull requests

4 participants