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

fix: invoke user recover with implicit panics #3067

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

petar-dambovaliev
Copy link
Contributor

@petar-dambovaliev petar-dambovaliev commented Nov 4, 2024

Currently only explicit panic invocations are recovered in the user code.
This PR covers the implicit panics that happen because of invalid operations.
Associated issue

This maintains the distinction between VM panics and user panics.

Here is a list of possible runtime panics that we will cover.

  • Out-of-Bounds Slice or Array Access
  • Invalid Slice Indexing
  • Division by Zero
  • Type Assertion Failure
  • Invalid Memory Allocation (bad call to make())
  • Out-of-Bounds String Indexing
  • nil pointer dereference
  • Write to a nil map

Copy link

codecov bot commented Nov 4, 2024

Codecov Report

Attention: Patch coverage is 41.37931% with 68 lines in your changes missing coverage. Please review.

Project coverage is 63.74%. Comparing base (4f27a57) to head (6b6ab58).

Files with missing lines Patch % Lines
gnovm/pkg/gnolang/op_binary.go 22.22% 29 Missing and 13 partials ⚠️
gnovm/pkg/gnolang/values.go 35.29% 21 Missing and 1 partial ⚠️
gnovm/pkg/gnolang/alloc.go 50.00% 1 Missing and 1 partial ⚠️
gnovm/pkg/gnolang/op_assign.go 33.33% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3067      +/-   ##
==========================================
- Coverage   63.77%   63.74%   -0.04%     
==========================================
  Files         548      548              
  Lines       78681    78773      +92     
==========================================
+ Hits        50180    50215      +35     
- Misses      25117    25164      +47     
- Partials     3384     3394      +10     
Flag Coverage Δ
contribs/gnodev 61.16% <ø> (+0.62%) ⬆️
contribs/gnofaucet 15.77% <ø> (+0.94%) ⬆️
gno.land 73.62% <ø> (ø)
gnovm 67.86% <41.37%> (-0.07%) ⬇️
misc/genstd 79.72% <ø> (ø)
tm2 62.39% <ø> (-0.08%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@ltzmaxwell
Copy link
Contributor

can you please add some tests for this?

@omarsy
Copy link
Member

omarsy commented Nov 5, 2024

I tried a fix similar to this one: #2484, but my approach wasn't preferred. They favor an indiscriminate runtime panic, which complicates things for me (it is possible, but need a refactoring). I see two options:

  1. Do not indiscriminate runtime panics (like your fix and my fix)
  2. Accept that runtime errors are not recoverable

@petar-dambovaliev
Copy link
Contributor Author

can you please add some tests for this?

its still WIP

gnovm/pkg/gnolang/machine.go Dismissed Show dismissed Hide dismissed
@petar-dambovaliev
Copy link
Contributor Author

can you please add some tests for this?

tests added

@Kouteki Kouteki added the in focus Core team is prioritizing this work label Nov 10, 2024
@Kouteki Kouteki added this to the 🚀 Mainnet launch milestone Nov 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in focus Core team is prioritizing this work 📦 🤖 gnovm Issues or PRs gnovm related
Projects
Status: No status
Status: In Review
Development

Successfully merging this pull request may close these issues.

4 participants