Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-9109

Use Java 9+ StackWalker to implement TestSecurityManager's detection of JVM exit

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: master (9.0)
    • Component/s: modules/test-framework
    • Labels:
      None
    • Lucene Fields:
      New

      Description

      This is just a small improvement in Lucene/Solr master (Java 11) to detect exit of JVM in our test framework. There are other places in Lucene that use ineffective ways to inspect the stack trace.

      This one optimizes the implementation of TestSecurityManager#checkExit(status) to disallow all JVM exits outside of the official test runner by using StackWalker. In addition this needs no additional permissions, because we do not instruct StackWalker to fetch all crazy stuff like Class instances of stack elements.

      The way how this works is: Walk through stack trace:

      • skip all internal frames (those which come before the actual exit call)
      • skip all frmes with the actual exit call
      • limit to one more frame (the method calling System.exit())
      • check if that remaining frame is on our whitelist

      This can only be commited to master (9.0), as it requires Java 9.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                uschindler Uwe Schindler
                Reporter:
                uschindler Uwe Schindler
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h
                  1h