correct/revisit exception backtrace (and stack-trace)#6014
Merged
kares merged 10 commits intojruby:masterfrom Jan 8, 2020
Merged
correct/revisit exception backtrace (and stack-trace)#6014kares merged 10 commits intojruby:masterfrom
kares merged 10 commits intojruby:masterfrom
Conversation
previously the constructor would hit preRaise twice forcefully generating an unnecessary backtrace ...
- from the Ruby side we did not check set exception.backtrace handle case when its set (backtrace disabled) properly - the legacy Java side always had its own stack-trace (regardless of the requested java trace parameter) also added some preliminary filtering to skip internal parts ... there's certainly room to skip more in certain cases
since we always setStackTrace manually (from ctor)
Member
Author
|
numbers confirm that a forced back-trace now is much faster ( |
Member
Author
|
Java 11 is half the speed for 'normal' raises (no change and I re-call this is a known thing) : ... maybe something to tackle with later 🤞 |
headius
reviewed
Jan 7, 2020
Member
headius
left a comment
There was a problem hiding this comment.
Looks good to me, with a couple comments on filtering that we should maybe discuss outside this PR. I assume this broke when we (probably me) reworked raise workflow to match CRuby more exactly? I know I ran benchmarks that showed force backtrace was much faster not too long ago. Very nice to have some tests that ensure we're not generating multiple traces.
Member
|
That's a 👍 from me even though I submitted the review as a general comment. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
original motivation for these changes was that the internal "lightweight" forced backtrace didn't have any reduced impact over a normal
raisebut also the fast that the legacy Java parts got neglected (not having the proper forced stack-trace as before).last part is probably due having two
TestRaiseExceptioncases - one of which wasn't run since the recent changes (adding the Java exception hierarchy for Ruby ones) ...than I realized
RaiseExceptionusually replaces a custom Java trace so not need to initiallyfillInStackTrace(which turned out to be potentially incorrectly on with-Xjump.backtrace)p.s. also added some minor pre-filtering (e.g.
getStackTracefrom top - has been bothering me for a while 🙈) - we could take it further to skip the Java stack trace head to not include all of the exception<init>(all the way tojava.lang.Throwable.<init>) ... maybe later.