/usr/bin/java -Xmx8000000000 -Xss4m -jar ./plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata ./data -tc ../../../trunk/examples/toolchains/AutomizerCInline.xml -s ../../../trunk/examples/settings/automizer/concurrent/svcomp-Reach-32bit-Automizer_Default-noMmResRef-FA-NoLbe.epf -i ../../../trunk/examples/svcomp/pthread-wmm/rfi001_rmo.oepc.i


--------------------------------------------------------------------------------


This is Ultimate 0.1.25-b981219
[2020-04-18 05:53:54,042 INFO  L177        SettingsManager]: Resetting all preferences to default values...
[2020-04-18 05:53:54,045 INFO  L181        SettingsManager]: Resetting UltimateCore preferences to default values
[2020-04-18 05:53:54,060 INFO  L184        SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring...
[2020-04-18 05:53:54,060 INFO  L181        SettingsManager]: Resetting Boogie Preprocessor preferences to default values
[2020-04-18 05:53:54,061 INFO  L181        SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values
[2020-04-18 05:53:54,063 INFO  L181        SettingsManager]: Resetting Abstract Interpretation preferences to default values
[2020-04-18 05:53:54,064 INFO  L181        SettingsManager]: Resetting LassoRanker preferences to default values
[2020-04-18 05:53:54,066 INFO  L181        SettingsManager]: Resetting Reaching Definitions preferences to default values
[2020-04-18 05:53:54,067 INFO  L181        SettingsManager]: Resetting SyntaxChecker preferences to default values
[2020-04-18 05:53:54,068 INFO  L181        SettingsManager]: Resetting Sifa preferences to default values
[2020-04-18 05:53:54,069 INFO  L184        SettingsManager]: Büchi Program Product provides no preferences, ignoring...
[2020-04-18 05:53:54,069 INFO  L181        SettingsManager]: Resetting LTL2Aut preferences to default values
[2020-04-18 05:53:54,070 INFO  L181        SettingsManager]: Resetting PEA to Boogie preferences to default values
[2020-04-18 05:53:54,071 INFO  L181        SettingsManager]: Resetting BlockEncodingV2 preferences to default values
[2020-04-18 05:53:54,072 INFO  L181        SettingsManager]: Resetting ChcToBoogie preferences to default values
[2020-04-18 05:53:54,076 INFO  L181        SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values
[2020-04-18 05:53:54,078 INFO  L181        SettingsManager]: Resetting BuchiAutomizer preferences to default values
[2020-04-18 05:53:54,082 INFO  L181        SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values
[2020-04-18 05:53:54,084 INFO  L181        SettingsManager]: Resetting CodeCheck preferences to default values
[2020-04-18 05:53:54,088 INFO  L181        SettingsManager]: Resetting InvariantSynthesis preferences to default values
[2020-04-18 05:53:54,091 INFO  L181        SettingsManager]: Resetting RCFGBuilder preferences to default values
[2020-04-18 05:53:54,092 INFO  L181        SettingsManager]: Resetting Referee preferences to default values
[2020-04-18 05:53:54,092 INFO  L181        SettingsManager]: Resetting TraceAbstraction preferences to default values
[2020-04-18 05:53:54,097 INFO  L184        SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring...
[2020-04-18 05:53:54,097 INFO  L184        SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring...
[2020-04-18 05:53:54,097 INFO  L181        SettingsManager]: Resetting TreeAutomizer preferences to default values
[2020-04-18 05:53:54,099 INFO  L181        SettingsManager]: Resetting IcfgToChc preferences to default values
[2020-04-18 05:53:54,100 INFO  L181        SettingsManager]: Resetting IcfgTransformer preferences to default values
[2020-04-18 05:53:54,101 INFO  L184        SettingsManager]: ReqToTest provides no preferences, ignoring...
[2020-04-18 05:53:54,102 INFO  L181        SettingsManager]: Resetting Boogie Printer preferences to default values
[2020-04-18 05:53:54,103 INFO  L181        SettingsManager]: Resetting ChcSmtPrinter preferences to default values
[2020-04-18 05:53:54,103 INFO  L181        SettingsManager]: Resetting ReqPrinter preferences to default values
[2020-04-18 05:53:54,105 INFO  L181        SettingsManager]: Resetting Witness Printer preferences to default values
[2020-04-18 05:53:54,108 INFO  L184        SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring...
[2020-04-18 05:53:54,108 INFO  L181        SettingsManager]: Resetting CDTParser preferences to default values
[2020-04-18 05:53:54,109 INFO  L184        SettingsManager]: AutomataScriptParser provides no preferences, ignoring...
[2020-04-18 05:53:54,109 INFO  L184        SettingsManager]: ReqParser provides no preferences, ignoring...
[2020-04-18 05:53:54,109 INFO  L181        SettingsManager]: Resetting SmtParser preferences to default values
[2020-04-18 05:53:54,112 INFO  L181        SettingsManager]: Resetting Witness Parser preferences to default values
[2020-04-18 05:53:54,114 INFO  L188        SettingsManager]: Finished resetting all preferences to default values...
[2020-04-18 05:53:54,115 INFO  L101        SettingsManager]: Beginning loading settings from /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/../../../trunk/examples/settings/automizer/concurrent/svcomp-Reach-32bit-Automizer_Default-noMmResRef-FA-NoLbe.epf
[2020-04-18 05:53:54,134 INFO  L113        SettingsManager]: Loading preferences was successful
[2020-04-18 05:53:54,134 INFO  L115        SettingsManager]: Preferences different from defaults after loading the file:
[2020-04-18 05:53:54,136 INFO  L136        SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults:
[2020-04-18 05:53:54,136 INFO  L138        SettingsManager]:  * Create parallel compositions if possible=false
[2020-04-18 05:53:54,136 INFO  L138        SettingsManager]:  * Use SBE=true
[2020-04-18 05:53:54,137 INFO  L136        SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults:
[2020-04-18 05:53:54,137 INFO  L138        SettingsManager]:  * sizeof long=4
[2020-04-18 05:53:54,137 INFO  L138        SettingsManager]:  * Overapproximate operations on floating types=true
[2020-04-18 05:53:54,137 INFO  L138        SettingsManager]:  * sizeof POINTER=4
[2020-04-18 05:53:54,137 INFO  L138        SettingsManager]:  * Check division by zero=IGNORE
[2020-04-18 05:53:54,139 INFO  L138        SettingsManager]:  * Pointer to allocated memory at dereference=IGNORE
[2020-04-18 05:53:54,139 INFO  L138        SettingsManager]:  * If two pointers are subtracted or compared they have the same base address=IGNORE
[2020-04-18 05:53:54,139 INFO  L138        SettingsManager]:  * Check array bounds for arrays that are off heap=IGNORE
[2020-04-18 05:53:54,139 INFO  L138        SettingsManager]:  * sizeof long double=12
[2020-04-18 05:53:54,140 INFO  L138        SettingsManager]:  * Check if freed pointer was valid=false
[2020-04-18 05:53:54,140 INFO  L138        SettingsManager]:  * Use constant arrays=true
[2020-04-18 05:53:54,140 INFO  L138        SettingsManager]:  * Pointer base address is valid at dereference=IGNORE
[2020-04-18 05:53:54,140 INFO  L136        SettingsManager]: Preferences of RCFGBuilder differ from their defaults:
[2020-04-18 05:53:54,140 INFO  L138        SettingsManager]:  * Size of a code block=SequenceOfStatements
[2020-04-18 05:53:54,141 INFO  L138        SettingsManager]:  * To the following directory=./dump/
[2020-04-18 05:53:54,141 INFO  L138        SettingsManager]:  * SMT solver=External_DefaultMode
[2020-04-18 05:53:54,141 INFO  L138        SettingsManager]:  * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000
[2020-04-18 05:53:54,141 INFO  L136        SettingsManager]: Preferences of TraceAbstraction differ from their defaults:
[2020-04-18 05:53:54,141 INFO  L138        SettingsManager]:  * Compute Interpolants along a Counterexample=FPandBP
[2020-04-18 05:53:54,142 INFO  L138        SettingsManager]:  * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles
[2020-04-18 05:53:54,142 INFO  L138        SettingsManager]:  * Trace refinement strategy=CAMEL
[2020-04-18 05:53:54,142 INFO  L138        SettingsManager]:  * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in
[2020-04-18 05:53:54,142 INFO  L138        SettingsManager]:  * Large block encoding in concurrent analysis=OFF
[2020-04-18 05:53:54,143 INFO  L138        SettingsManager]:  * Compute Hoare Annotation of negated interpolant automaton, abstraction and CFG=true
[2020-04-18 05:53:54,143 INFO  L138        SettingsManager]:  * SMT solver=External_ModelsAndUnsatCoreMode
[2020-04-18 05:53:54,424 INFO  L81    nceAwareModelManager]: Repository-Root is: /tmp
[2020-04-18 05:53:54,437 INFO  L258   ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized
[2020-04-18 05:53:54,440 INFO  L214   ainManager$Toolchain]: [Toolchain 1]: Toolchain selected.
[2020-04-18 05:53:54,441 INFO  L271        PluginConnector]: Initializing CDTParser...
[2020-04-18 05:53:54,442 INFO  L275        PluginConnector]: CDTParser initialized
[2020-04-18 05:53:54,442 INFO  L429   ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/../../../trunk/examples/svcomp/pthread-wmm/rfi001_rmo.oepc.i
[2020-04-18 05:53:54,512 INFO  L220              CDTParser]: Created temporary CDT project at /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/6c6e48a95/77a840ce62ef4938bfd3f82a02a96e60/FLAG09002726f
[2020-04-18 05:53:55,106 INFO  L306              CDTParser]: Found 1 translation units.
[2020-04-18 05:53:55,107 INFO  L160              CDTParser]: Scanning /storage/repos/ultimate/trunk/examples/svcomp/pthread-wmm/rfi001_rmo.oepc.i
[2020-04-18 05:53:55,132 INFO  L349              CDTParser]: About to delete temporary CDT project at /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/6c6e48a95/77a840ce62ef4938bfd3f82a02a96e60/FLAG09002726f
[2020-04-18 05:53:55,351 INFO  L357              CDTParser]: Successfully deleted /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/6c6e48a95/77a840ce62ef4938bfd3f82a02a96e60
[2020-04-18 05:53:55,359 INFO  L296   ainManager$Toolchain]: ####################### [Toolchain 1] #######################
[2020-04-18 05:53:55,375 INFO  L131        ToolchainWalker]: Walking toolchain with 5 elements.
[2020-04-18 05:53:55,377 INFO  L113        PluginConnector]: ------------------------CACSL2BoogieTranslator----------------------------
[2020-04-18 05:53:55,377 INFO  L271        PluginConnector]: Initializing CACSL2BoogieTranslator...
[2020-04-18 05:53:55,380 INFO  L275        PluginConnector]: CACSL2BoogieTranslator initialized
[2020-04-18 05:53:55,381 INFO  L185        PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 18.04 05:53:55" (1/1) ...
[2020-04-18 05:53:55,384 INFO  L205        PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@33a13256 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:55, skipping insertion in model container
[2020-04-18 05:53:55,385 INFO  L185        PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 18.04 05:53:55" (1/1) ...
[2020-04-18 05:53:55,392 INFO  L145         MainTranslator]: Starting translation in SV-COMP mode 
[2020-04-18 05:53:55,445 INFO  L178         MainTranslator]: Built tables and reachable declarations
[2020-04-18 05:53:56,016 INFO  L206          PostProcessor]: Analyzing one entry point: main
[2020-04-18 05:53:56,032 INFO  L203         MainTranslator]: Completed pre-run
[2020-04-18 05:53:56,124 INFO  L206          PostProcessor]: Analyzing one entry point: main
[2020-04-18 05:53:56,211 INFO  L208         MainTranslator]: Completed translation
[2020-04-18 05:53:56,212 INFO  L202        PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56 WrapperNode
[2020-04-18 05:53:56,212 INFO  L132        PluginConnector]: ------------------------ END CACSL2BoogieTranslator----------------------------
[2020-04-18 05:53:56,213 INFO  L113        PluginConnector]: ------------------------Boogie Procedure Inliner----------------------------
[2020-04-18 05:53:56,213 INFO  L271        PluginConnector]: Initializing Boogie Procedure Inliner...
[2020-04-18 05:53:56,213 INFO  L275        PluginConnector]: Boogie Procedure Inliner initialized
[2020-04-18 05:53:56,221 INFO  L185        PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,242 INFO  L185        PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,273 INFO  L132        PluginConnector]: ------------------------ END Boogie Procedure Inliner----------------------------
[2020-04-18 05:53:56,273 INFO  L113        PluginConnector]: ------------------------Boogie Preprocessor----------------------------
[2020-04-18 05:53:56,274 INFO  L271        PluginConnector]: Initializing Boogie Preprocessor...
[2020-04-18 05:53:56,274 INFO  L275        PluginConnector]: Boogie Preprocessor initialized
[2020-04-18 05:53:56,282 INFO  L185        PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,282 INFO  L185        PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,287 INFO  L185        PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,288 INFO  L185        PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,299 INFO  L185        PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,303 INFO  L185        PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,307 INFO  L185        PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
[2020-04-18 05:53:56,312 INFO  L132        PluginConnector]: ------------------------ END Boogie Preprocessor----------------------------
[2020-04-18 05:53:56,313 INFO  L113        PluginConnector]: ------------------------RCFGBuilder----------------------------
[2020-04-18 05:53:56,313 INFO  L271        PluginConnector]: Initializing RCFGBuilder...
[2020-04-18 05:53:56,313 INFO  L275        PluginConnector]: RCFGBuilder initialized
[2020-04-18 05:53:56,314 INFO  L185        PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 18.04 05:53:56" (1/1) ...
No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/z3
Starting monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 (exit command is (exit), workingDir is null)
Waiting until toolchain timeout for monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000
[2020-04-18 05:53:56,375 INFO  L130     BoogieDeclarations]: Found specification of procedure write~int
[2020-04-18 05:53:56,375 INFO  L130     BoogieDeclarations]: Found specification of procedure __VERIFIER_atomic_begin
[2020-04-18 05:53:56,375 INFO  L130     BoogieDeclarations]: Found specification of procedure #Ultimate.allocOnStack
[2020-04-18 05:53:56,375 INFO  L130     BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc
[2020-04-18 05:53:56,375 INFO  L130     BoogieDeclarations]: Found specification of procedure P0
[2020-04-18 05:53:56,376 INFO  L138     BoogieDeclarations]: Found implementation of procedure P0
[2020-04-18 05:53:56,376 INFO  L130     BoogieDeclarations]: Found specification of procedure P1
[2020-04-18 05:53:56,377 INFO  L138     BoogieDeclarations]: Found implementation of procedure P1
[2020-04-18 05:53:56,377 INFO  L130     BoogieDeclarations]: Found specification of procedure __VERIFIER_atomic_end
[2020-04-18 05:53:56,377 INFO  L130     BoogieDeclarations]: Found specification of procedure ULTIMATE.start
[2020-04-18 05:53:56,377 INFO  L138     BoogieDeclarations]: Found implementation of procedure ULTIMATE.start
[2020-04-18 05:53:56,379 WARN  L205             CfgBuilder]: User set CodeBlockSize to SequenceOfStatements but program contains fork statements. Overwriting the user preferences and setting CodeBlockSize to SingleStatement
Received shutdown request...
[2020-04-18 05:57:52,373 INFO  L256        ToolchainWalker]: Toolchain cancelled while executing plugin de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder. Reason: Timeout or Toolchain cancelled by user
[2020-04-18 05:57:52,377 INFO  L168              Benchmark]: Toolchain (without parser) took 237016.18 ms. Allocated memory was 142.6 MB in the beginning and 4.1 GB in the end (delta: 4.0 GB). Free memory was 102.2 MB in the beginning and 1.6 GB in the end (delta: -1.5 GB). Peak memory consumption was 4.4 GB. Max. memory is 7.1 GB.
[2020-04-18 05:57:52,378 INFO  L168              Benchmark]: CDTParser took 0.20 ms. Allocated memory is still 142.6 MB. Free memory was 123.0 MB in the beginning and 122.8 MB in the end (delta: 210.1 kB). Peak memory consumption was 210.1 kB. Max. memory is 7.1 GB.
[2020-04-18 05:57:52,380 INFO  L168              Benchmark]: CACSL2BoogieTranslator took 835.90 ms. Allocated memory was 142.6 MB in the beginning and 205.0 MB in the end (delta: 62.4 MB). Free memory was 100.2 MB in the beginning and 158.8 MB in the end (delta: -58.6 MB). Peak memory consumption was 22.9 MB. Max. memory is 7.1 GB.
[2020-04-18 05:57:52,381 INFO  L168              Benchmark]: Boogie Procedure Inliner took 60.38 ms. Allocated memory is still 205.0 MB. Free memory was 158.8 MB in the beginning and 156.3 MB in the end (delta: 2.6 MB). Peak memory consumption was 2.6 MB. Max. memory is 7.1 GB.
[2020-04-18 05:57:52,382 INFO  L168              Benchmark]: Boogie Preprocessor took 38.94 ms. Allocated memory is still 205.0 MB. Free memory was 156.3 MB in the beginning and 154.3 MB in the end (delta: 2.0 MB). Peak memory consumption was 2.0 MB. Max. memory is 7.1 GB.
[2020-04-18 05:57:52,383 INFO  L168              Benchmark]: RCFGBuilder took 236062.14 ms. Allocated memory was 205.0 MB in the beginning and 4.1 GB in the end (delta: 3.9 GB). Free memory was 154.3 MB in the beginning and 1.6 GB in the end (delta: -1.4 GB). Peak memory consumption was 4.4 GB. Max. memory is 7.1 GB.
[2020-04-18 05:57:52,388 INFO  L336   ainManager$Toolchain]: #######################  End [Toolchain 1] #######################
 --- Results ---
 * Results from de.uni_freiburg.informatik.ultimate.core:
  - StatisticsResult: Toolchain Benchmarks
    Benchmark results are:
 * CDTParser took 0.20 ms. Allocated memory is still 142.6 MB. Free memory was 123.0 MB in the beginning and 122.8 MB in the end (delta: 210.1 kB). Peak memory consumption was 210.1 kB. Max. memory is 7.1 GB.
 * CACSL2BoogieTranslator took 835.90 ms. Allocated memory was 142.6 MB in the beginning and 205.0 MB in the end (delta: 62.4 MB). Free memory was 100.2 MB in the beginning and 158.8 MB in the end (delta: -58.6 MB). Peak memory consumption was 22.9 MB. Max. memory is 7.1 GB.
 * Boogie Procedure Inliner took 60.38 ms. Allocated memory is still 205.0 MB. Free memory was 158.8 MB in the beginning and 156.3 MB in the end (delta: 2.6 MB). Peak memory consumption was 2.6 MB. Max. memory is 7.1 GB.
 * Boogie Preprocessor took 38.94 ms. Allocated memory is still 205.0 MB. Free memory was 156.3 MB in the beginning and 154.3 MB in the end (delta: 2.0 MB). Peak memory consumption was 2.0 MB. Max. memory is 7.1 GB.
 * RCFGBuilder took 236062.14 ms. Allocated memory was 205.0 MB in the beginning and 4.1 GB in the end (delta: 3.9 GB). Free memory was 154.3 MB in the beginning and 1.6 GB in the end (delta: -1.4 GB). Peak memory consumption was 4.4 GB. Max. memory is 7.1 GB.
 * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder:
  - TimeoutResult: Timeout (de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder)
    Toolchain cancelled while XnfDer was eliminating 1 quantified variables from 14 xjuncts.
RESULT: Ultimate could not prove your program: Timeout
Completed graceful shutdown