Buggy code:
public class BeanShellAssertion extends BeanShellTestElement implements Assertion { private static final Logger log = LoggingManager . getLoggerForClass ( ) ; private static final long serialVersionUID = 3 ; public static final String FILENAME = "BeanShellAssertion.filename" ; public static final String SCRIPT = "BeanShellAssertion.query" ; public static final String PARAMETERS = "BeanShellAssertion.parameters" ; public static final String RESET_INTERPRETER = "BeanShellAssertion.resetInterpreter" ; public static final String INIT_FILE = "beanshell.assertion.init" ; protected String getInitFileProperty ( ) { } public String getScript ( ) { } public String getFilename ( ) { } public String getParameters ( ) { } public boolean isResetInterpreter ( ) { } public AssertionResult getResult ( SampleResult response ) { AssertionResult result = new AssertionResult ( getName ( ) ) ; final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter ( ) ; if ( bshInterpreter == null ) { result . setFailure ( true ) ; result . setError ( true ) ; result . setFailureMessage ( "BeanShell<seq2seq4repair_space>Interpreter<seq2seq4repair_space>not<seq2seq4repair_space>found" ) ; return result ; } try { String request = getScript ( ) ; String fileName = getFilename ( ) ; bshInterpreter . set ( "FileName" , getFilename ( ) ) ; bshInterpreter . set ( "Parameters" , getParameters ( ) ) ; bshInterpreter . set ( "bsh.args" , JOrphanUtils . split ( getParameters ( ) , "<seq2seq4repair_space>" ) ) ; bshInterpreter . set ( "SampleResult" , response ) ; bshInterpreter . set ( "Response" , response ) ; bshInterpreter . set ( "ResponseData" , response . getResponseData ( ) ) ; bshInterpreter . set ( "ResponseCode" , response . getResponseCode ( ) ) ; bshInterpreter . set ( "ResponseMessage" , response . getResponseMessage ( ) ) ; bshInterpreter . set ( "ResponseHeaders" , response . getResponseHeaders ( ) ) ; bshInterpreter . set ( "RequestHeaders" , response . getRequestHeaders ( ) ) ; bshInterpreter . set ( "SampleLabel" , response . getSampleLabel ( ) ) ; bshInterpreter . set ( "SamplerData" , response . getSamplerData ( ) ) ; bshInterpreter . set ( "Successful" , response . isSuccessful ( ) ) ; bshInterpreter . set ( "FailureMessage" , "" ) ; bshInterpreter . set ( "Failure" , false ) ; JMeterContext jmctx = JMeterContextService . getContext ( ) ; JMeterVariables vars = jmctx . getVariables ( ) ; bshInterpreter . set ( "ctx" , jmctx ) ; bshInterpreter . set ( "vars" , vars ) ; if ( ( fileName . length ( ) ) == 0 ) { bshInterpreter . eval ( request ) ; } else { bshInterpreter . source ( fileName ) ; } result . setFailureMessage ( bshInterpreter . get ( "FailureMessage" ) . toString ( ) ) ; result . setFailure ( Boolean . valueOf ( bshInterpreter . get ( "Failure" ) . toString ( ) ) . booleanValue ( ) ) ; result . setError ( false ) ; } catch ( NoClassDefFoundError ex ) { BeanShellAssertion . log . error ( ( "BeanShell<seq2seq4repair_space>Jar<seq2seq4repair_space>missing?<seq2seq4repair_space>" + ( ex . toString ( ) ) ) ) ; result . setError ( true ) ; result . setFailureMessage ( ( "BeanShell<seq2seq4repair_space>Jar<seq2seq4repair_space>missing?<seq2seq4repair_space>" + ( ex . toString ( ) ) ) ) ; <START_BUG> response . setStopThread ( true ) ; <END_BUG> } catch ( Exception ex ) { result . setError ( true ) ; result . setFailureMessage ( ex . toString ( ) ) ; BeanShellAssertion . log . warn ( ex . toString ( ) ) ; } return result ; } }

Fix:
JMeterContextService . getContext ( ) . getThread ( ) . setOnErrorStopThread ( true ) ;