You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I sometimes crash and get a call stack that gives a call to turn and the line numbers go from the turn call all the way to the end of the gate. If I comment out the turn jet in hot.rs then I get the line number of the exact crash. So sometimes the turn jet isn't passing the call stack of the crashing gate up.
I looked at the code and if the gate is jetted it calls jet()? with ? passing the error up. If the gate isn't jetted, then it calls interpret()? passing the error up. But then I looked in interpret() where it calls jets and it basically does the same thing (it matches on the error but if its not JetPunt then it passes it up). So I'm not sure exactly how the call stack gets passed or where the bug is.
The text was updated successfully, but these errors were encountered:
I should add that I have seen call stacks go through turn, and I'm guessing it depends on whether the gate itself is jetted, but I haven't looked into it to make sure.
I was looking at this issue. It seem like the call stack containing the crash line does get returned, but it's at the bottom of the trace. Since 'turn' is a jet which calls interpret the failure stack trace of the gate gets propagated back to the initial nock 9 call as an error. Inside of exit, the call stack containing the gate crash then gets appended to the end of the existing call stack. See: https://github.com/zorp-corp/sword/blob/status/rust/sword/src/interpreter.rs#L1232.
Naively prepending the gate crash call stack doesn't work because errors must return a list of tangs.
I sometimes crash and get a call stack that gives a call to turn and the line numbers go from the turn call all the way to the end of the gate. If I comment out the turn jet in hot.rs then I get the line number of the exact crash. So sometimes the turn jet isn't passing the call stack of the crashing gate up.
I looked at the code and if the gate is jetted it calls jet()? with ? passing the error up. If the gate isn't jetted, then it calls interpret()? passing the error up. But then I looked in interpret() where it calls jets and it basically does the same thing (it matches on the error but if its not JetPunt then it passes it up). So I'm not sure exactly how the call stack gets passed or where the bug is.
The text was updated successfully, but these errors were encountered: