Page MenuHomePhabricator

Prevent callback overruns in InvalidateBlock and RewindBlockIndex
ClosedPublic

Authored by fpelliccioni on Dec 26 2019, 19:16.

Details

Summary

This PR makes a number of improvements to the InvalidateBlock (invalidateblock RPC) and RewindBlockIndex functions, primarily around breaking up their long-term cs_main holding. In addition:

  • They're made safely interruptible (bitcoind can be shutdown, and no progress in either will be lost, though if incomplete, invalidateblock won't continue after restart and will need to be called again)
  • The validation queue is prevented from overflowing (meaning invalidateblock on a very old block will not drive bitcoind OOM) (see #14289).
  • invalidateblock won't bother to move transactions back into the mempool after 10 blocks (optimization).

Partial Backport of Bitcoin Core PR15402 (commit 9ce9c37):
https://github.com/bitcoin/bitcoin/pull/15402/commits/9ce9c37004440d6a329874dbf66b51666d497dcb

Prevent callback overruns in InvalidateBlock and RewindBlockIndex

Depends on D4942

Test Plan
  1. Build with Clang in Debug mode:
CXX=clang++ CC=clang cmake .. -D CMAKE_CXX_FLAGS="-Werror=thread-safety-analysis" -GNinja -DCMAKE_BUILD_TYPE=Debug
ninja check-all
  1. Verify that the compiler has not emitted a thread-safety warning.
  2. Run the node: ./src/bitcoind -regtest
  3. Verify that text similar to "Assertion failed: lock ... not held ..." is not printed on stderr.

Diff Detail

Repository
rABC Bitcoin ABC
Branch
feature-backport-3db0cc394-9ce9c37
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 8935
Build 15843: Default Diff Build & Tests
Build 15842: arc lint + arc unit

Event Timeline

fpelliccioni retitled this revision from Granular invalidateblock and RewindBlockIndex to Prevent callback overruns in InvalidateBlock and RewindBlockIndex.Dec 26 2019, 19:18
fpelliccioni edited the summary of this revision. (Show Details)
fpelliccioni edited the test plan for this revision. (Show Details)
fpelliccioni edited reviewers, added: markblundeberg; removed: Fabien.

Snippet of first build failure:
lines=16,COUNTEREXAMPLE```[19:23:16] : [Step 1/1] [0m [0;34mrpc_createmultisig.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_decodescript.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_deprecated.py | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_estimatefee.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_fundrawtransaction.py | ✓ Passed | 24 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_getblockstats.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_getchaintips.py | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_help.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_invalidateblock.py | ✓ Passed | 5 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_named_arguments.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_net.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_preciousblock.py | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_psbt.py | ✓ Passed | 8 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_rawtransaction.py | ✓ Passed | 20 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_scantxoutset.py | ✓ Passed | 3 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_signmessage.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_signrawtransaction.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_txoutproof.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_uptime.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_users.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;34mrpc_zmq.py | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_abandonconflict.py | ✓ Passed | 6 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_basic.py | ✓ Passed | 19 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_disable.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_disableprivatekeys.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_disableprivatekeys.py --usecli | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_dump.py | ✓ Passed | 3 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_encryption.py | ✓ Passed | 5 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_groups.py | ✓ Passed | 6 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_hd.py | ✓ Passed | 4 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_import_rescan.py | ✓ Passed | 4 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_importmulti.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_importprunedfunds.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_keypool.py | ✓ Passed | 3 s
[19:23:16]W: [Step 1/1] ++ print_sanitizers_log
[19:23:16]W: [Step 1/1] ++ for log in "${SAN_LOG_DIR}"/*.log.*
[19:23:16]W: [Step 1/1] ++ echo '* Output of /tmp/sanitizer_logs/*.log.* *'
[19:23:16]W: [Step 1/1] ++ cat '/tmp/sanitizer_logs/*.log.*'
[19:23:16]W: [Step 1/1] cat: '/tmp/sanitizer_logs/*.log.*': No such file or directory
[19:23:16] : [Step 1/1] [0m [0;34mwallet_keypool_topup.py | ✓ Passed | 3 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_labels.py | ✓ Passed | 4 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_listreceivedby.py | ✓ Passed | 10 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_listsinceblock.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_listtransactions.py | ✓ Passed | 8 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_multiwallet.py | ✓ Passed | 6 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_multiwallet.py --usecli | ✓ Passed | 7 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_resendwallettransactions.py | ✓ Passed | 0 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_txn_clone.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_txn_clone.py --mineblock | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_txn_doublespend.py | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_txn_doublespend.py --mineblock | ✓ Passed | 1 s
[19:23:16] : [Step 1/1] [0m [0;34mwallet_zapwallettxes.py | ✓ Passed | 2 s
[19:23:16] : [Step 1/1] [0m [0;31mfeature_notifications.py | ✖ Failed | 11 s
[19:23:16] : [Step 1/1] [0m [0;31m [1m
[19:23:16] : [Step 1/1] ALL | ✖ Failed | 411 s (accumulated)
[19:23:16] : [Step 1/1] [0m [0mRuntime: 234 s
[19:23:16] : [Step 1/1]
[19:23:16] : [Step 1/1] * Output of /tmp/sanitizer_logs/*.log.* *
[19:23:16]W: [Step 1/1] Process exited with code 1
[19:23:16]E: [Step 1/1] Process exited with code 1 (Step: Command Line)

Each failure log is accessible here:
[[https://build.bitcoinabc.org/viewLog.html?tab=buildLog&logTab=tree&filter=debug&expand=all&buildId=24773&guest=1&_focus=2413 | bitcoin_abc_tests: feature_notifications.py]]
deadalnix requested changes to this revision.Jan 3 2020, 05:28

Please investigate build failure.

This revision now requires changes to proceed.Jan 3 2020, 05:28

Call FinalizeBlockAndInvalidate without cs_main held

deadalnix requested changes to this revision.Jan 11 2020, 16:53

This clearly includes a lot of code that isn't in the original PR. Where does the clocking mechanism changes come from?

This revision now requires changes to proceed.Jan 11 2020, 16:53

This clearly includes a lot of code that isn't in the original PR. Where does the clocking mechanism changes come from?

The new code is related to @markblundeberg and your comments in D4758: InvalidateBlock now requires that cs_main be unlocked.
Also: abc-finalize-block is broken here if I don't make the changes. (Not broken in previous Diffs).
I could move the related code to D4758 (I didn't do it because it had already been approved) or to a new Diff.

This clearly includes a lot of code that isn't in the original PR. Where does the clocking mechanism changes come from?

The new code is related to @markblundeberg and your comments in D4758: InvalidateBlock now requires that cs_main be unlocked.
Also: abc-finalize-block is broken here if I don't make the changes. (Not broken in previous Diffs).
I could move the related code to D4758 (I didn't do it because it had already been approved) or to a new Diff.

It sounds like it would be best to make another Diff separately that first changes FinalizeBlockAndInvalidate to use the lockless pattern, then this one can simply do the backport as its summary suggests (and depend on the previous one).

revert not related with PR code

Snippet of first build failure:

[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git config core.sparseCheckout true
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git config http.sslCAInfo
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git show-ref
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git show-ref refs/tags/phabricator/diff/15455
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git log -n1 --pretty=format:%H%x20%s caf54b5614dbbd1adea1e19ff5aa1d1d6e68ce04 --
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git -c credential.helper= checkout -q -f phabricator/diff/15455
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git show-ref refs/tags/phabricator/diff/15455
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] Cleaning Bitcoin ABC Staging in /home/teamcity/buildAgent/work/c4a5708f2bae7929 the file set ALL_UNTRACKED
[17:17:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git clean -f -d -x
[17:17:50] : Build preparation done
[17:17:50]E: Step 1/1: Command Line
[17:17:50] :	 [Step 1/1] Ant JUnit report watcher
[17:17:50] :		 [Ant JUnit report watcher] Watching paths:
[17:17:50] :		 [Ant JUnit report watcher] +:build/test_bitcoin.xml
[17:17:50] :		 [Ant JUnit report watcher] +:test/functional/junit_results.xml
[17:17:50] :		 [Ant JUnit report watcher] +:build/junit_results*.xml
[17:17:50] :	 [Step 1/1] Starting: /home/teamcity/buildAgent/temp/agentTmp/custom_script6541550057470952156
[17:17:50] :	 [Step 1/1] in directory: /home/teamcity/buildAgent/work/c4a5708f2bae7929
[17:17:50] :	 [Step 1/1] Running build configuration 'build-diff'...
[17:17:50]W:	 [Step 1/1] + : build-diff
[17:17:50]W:	 [Step 1/1] + '[' -z build-diff ']'
[17:17:50]W:	 [Step 1/1] + echo 'Running build configuration '\''build-diff'\''...'
[17:17:50]W:	 [Step 1/1] ++ git rev-parse --show-toplevel
[17:17:50]W:	 [Step 1/1] + TOPLEVEL=/home/teamcity/buildAgent/work/c4a5708f2bae7929
[17:17:50]W:	 [Step 1/1] + export TOPLEVEL
[17:17:50]W:	 [Step 1/1] + trap print_sanitizers_log ERR
[17:17:50]W:	 [Step 1/1] +++ dirname ./contrib/teamcity/build-configurations.sh
[17:17:50]W:	 [Step 1/1] ++ cd ./contrib/teamcity
[17:17:50]W:	 [Step 1/1] ++ pwd
[17:17:50]W:	 [Step 1/1] + CI_SCRIPTS_DIR=/home/teamcity/buildAgent/work/c4a5708f2bae7929/contrib/teamcity
[17:17:50]W:	 [Step 1/1] + setup
[17:17:50]W:	 [Step 1/1] + : /home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:17:50]W:	 [Step 1/1] + mkdir -p /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/output
[17:17:50]W:	 [Step 1/1] ++ cd /home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:17:50]W:	 [Step 1/1] ++ pwd
[17:17:50]W:	 [Step 1/1] + BUILD_DIR=/home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:17:50]W:	 [Step 1/1] + export BUILD_DIR
[17:17:50]W:	 [Step 1/1] + TEST_RUNNER_FLAGS=--tmpdirprefix=output
[17:17:50]W:	 [Step 1/1] + cd /home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:17:50]W:	 [Step 1/1] ++ nproc
[17:17:50]W:	 [Step 1/1] + THREADS=12
[17:17:50]W:	 [Step 1/1] + export THREADS
[17:17:50]W:	 [Step 1/1] + SAN_SUPP_DIR=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions
[17:17:50]W:	 [Step 1/1] + SAN_LOG_DIR=/tmp/sanitizer_logs
[17:17:50]W:	 [Step 1/1] + mkdir -p /tmp/sanitizer_logs
[17:17:50]W:	 [Step 1/1] + rm -rf /tmp/sanitizer_logs/ubsan.log.26656
[17:17:50]W:	 [Step 1/1] + export ASAN_OPTIONS=malloc_context_size=0:log_path=/tmp/sanitizer_logs/asan.log
[17:17:50]W:	 [Step 1/1] + ASAN_OPTIONS=malloc_context_size=0:log_path=/tmp/sanitizer_logs/asan.log
[17:17:50]W:	 [Step 1/1] + export LSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/lsan:log_path=/tmp/sanitizer_logs/lsan.log
[17:17:50]W:	 [Step 1/1] + LSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/lsan:log_path=/tmp/sanitizer_logs/lsan.log
[17:17:50]W:	 [Step 1/1] + export TSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/tsan:log_path=/tmp/sanitizer_logs/tsan.log
[17:17:50]W:	 [Step 1/1] + TSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/tsan:log_path=/tmp/sanitizer_logs/tsan.log
[17:17:50]W:	 [Step 1/1] + export UBSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:log_path=/tmp/sanitizer_logs/ubsan.log
[17:17:50]W:	 [Step 1/1] + UBSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:log_path=/tmp/sanitizer_logs/ubsan.log
[17:17:50]W:	 [Step 1/1] + case "$ABC_BUILD_NAME" in
[17:17:50]W:	 [Step 1/1] + echo 'Error: Invalid build name '\''build-diff'\'''
[17:17:50]W:	 [Step 1/1] + exit 2
[17:17:50] :	 [Step 1/1] Error: Invalid build name 'build-diff'
[17:17:50]W:	 [Step 1/1] Process exited with code 2
[17:17:50]E:	 [Step 1/1] Process exited with code 2 (Step: Command Line)

Snippet of first build failure:

[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git config core.sparseCheckout true
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git config http.sslCAInfo
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git show-ref
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git show-ref refs/tags/phabricator/diff/15456
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git log -n1 --pretty=format:%H%x20%s 21a480e54ed3ce667f71ddc91ead66644c953128 --
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git -c credential.helper= checkout -q -f phabricator/diff/15456
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git show-ref refs/tags/phabricator/diff/15456
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] Cleaning Bitcoin ABC Staging in /home/teamcity/buildAgent/work/c4a5708f2bae7929 the file set ALL_UNTRACKED
[17:19:50] :			 [Update checkout directory (/home/teamcity/buildAgent/work/c4a5708f2bae7929)] /usr/bin/git clean -f -d -x
[17:19:50] : Build preparation done
[17:19:50]E: Step 1/1: Command Line
[17:19:50] :	 [Step 1/1] Ant JUnit report watcher
[17:19:50] :		 [Ant JUnit report watcher] Watching paths:
[17:19:50] :		 [Ant JUnit report watcher] +:build/test_bitcoin.xml
[17:19:50] :		 [Ant JUnit report watcher] +:test/functional/junit_results.xml
[17:19:50] :		 [Ant JUnit report watcher] +:build/junit_results*.xml
[17:19:50] :	 [Step 1/1] Starting: /home/teamcity/buildAgent/temp/agentTmp/custom_script3659797091565006074
[17:19:50] :	 [Step 1/1] in directory: /home/teamcity/buildAgent/work/c4a5708f2bae7929
[17:19:50]W:	 [Step 1/1] + : build-diff
[17:19:50] :	 [Step 1/1] Running build configuration 'build-diff'...
[17:19:50]W:	 [Step 1/1] + '[' -z build-diff ']'
[17:19:50]W:	 [Step 1/1] + echo 'Running build configuration '\''build-diff'\''...'
[17:19:50]W:	 [Step 1/1] ++ git rev-parse --show-toplevel
[17:19:50]W:	 [Step 1/1] + TOPLEVEL=/home/teamcity/buildAgent/work/c4a5708f2bae7929
[17:19:50]W:	 [Step 1/1] + export TOPLEVEL
[17:19:50]W:	 [Step 1/1] + trap print_sanitizers_log ERR
[17:19:50]W:	 [Step 1/1] +++ dirname ./contrib/teamcity/build-configurations.sh
[17:19:50]W:	 [Step 1/1] ++ cd ./contrib/teamcity
[17:19:50]W:	 [Step 1/1] ++ pwd
[17:19:50]W:	 [Step 1/1] + CI_SCRIPTS_DIR=/home/teamcity/buildAgent/work/c4a5708f2bae7929/contrib/teamcity
[17:19:50]W:	 [Step 1/1] + setup
[17:19:50]W:	 [Step 1/1] + : /home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:19:50]W:	 [Step 1/1] + mkdir -p /home/teamcity/buildAgent/work/c4a5708f2bae7929/build/output
[17:19:50]W:	 [Step 1/1] ++ cd /home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:19:50]W:	 [Step 1/1] ++ pwd
[17:19:50]W:	 [Step 1/1] + BUILD_DIR=/home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:19:50]W:	 [Step 1/1] + export BUILD_DIR
[17:19:50]W:	 [Step 1/1] + TEST_RUNNER_FLAGS=--tmpdirprefix=output
[17:19:50]W:	 [Step 1/1] + cd /home/teamcity/buildAgent/work/c4a5708f2bae7929/build
[17:19:50]W:	 [Step 1/1] ++ nproc
[17:19:50]W:	 [Step 1/1] + THREADS=12
[17:19:50]W:	 [Step 1/1] + export THREADS
[17:19:50]W:	 [Step 1/1] + SAN_SUPP_DIR=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions
[17:19:50]W:	 [Step 1/1] + SAN_LOG_DIR=/tmp/sanitizer_logs
[17:19:50]W:	 [Step 1/1] + mkdir -p /tmp/sanitizer_logs
[17:19:50]W:	 [Step 1/1] + rm -rf '/tmp/sanitizer_logs/*'
[17:19:50]W:	 [Step 1/1] + export ASAN_OPTIONS=malloc_context_size=0:log_path=/tmp/sanitizer_logs/asan.log
[17:19:50]W:	 [Step 1/1] + ASAN_OPTIONS=malloc_context_size=0:log_path=/tmp/sanitizer_logs/asan.log
[17:19:50]W:	 [Step 1/1] + export LSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/lsan:log_path=/tmp/sanitizer_logs/lsan.log
[17:19:50]W:	 [Step 1/1] + LSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/lsan:log_path=/tmp/sanitizer_logs/lsan.log
[17:19:50]W:	 [Step 1/1] + export TSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/tsan:log_path=/tmp/sanitizer_logs/tsan.log
[17:19:50]W:	 [Step 1/1] + TSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/tsan:log_path=/tmp/sanitizer_logs/tsan.log
[17:19:50]W:	 [Step 1/1] + export UBSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:log_path=/tmp/sanitizer_logs/ubsan.log
[17:19:50]W:	 [Step 1/1] + UBSAN_OPTIONS=suppressions=/home/teamcity/buildAgent/work/c4a5708f2bae7929/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:log_path=/tmp/sanitizer_logs/ubsan.log
[17:19:50] :	 [Step 1/1] Error: Invalid build name 'build-diff'
[17:19:50]W:	 [Step 1/1] + case "$ABC_BUILD_NAME" in
[17:19:50]W:	 [Step 1/1] + echo 'Error: Invalid build name '\''build-diff'\'''
[17:19:50]W:	 [Step 1/1] + exit 2
[17:19:50]W:	 [Step 1/1] Process exited with code 2
[17:19:50]E:	 [Step 1/1] Process exited with code 2 (Step: Command Line)
This revision is now accepted and ready to land.Jan 15 2020, 15:41