Page MenuHomePhabricator

Remove PID file at the very end
ClosedPublic

Authored by PiRK on Jan 14 2021, 11:13.

Details

Reviewers
majcosta
Group Reviewers
Restricted Project
Commits
rABC3393b7018419: Remove PID file at the very end
Summary

While reproducing the bug from #18517, I've noticed that the bitcoind.pid file has already been removed when the bitcoind hangs.
This PR makes Shutdown() keep the bitcoind.pid file available until the end.

This is a backport of Core PR18526

Test Plan

ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

PiRK requested review of this revision.Jan 14 2021, 11:13

Tail of the build log:

[378/434] Running utility command for check-bitcoin-script_commitment_tests
[379/434] bitcoin: testing bip32_tests
[380/434] Running utility command for check-bitcoin-bip32_tests
[381/434] bitcoin: testing settings_tests
[382/434] Running utility command for check-bitcoin-settings_tests
[383/434] bitcoin: testing streams_tests
[384/434] bitcoin: testing timedata_tests
[385/434] Running utility command for check-bitcoin-streams_tests
[386/434] Running utility command for check-bitcoin-timedata_tests
[387/434] bitcoin: testing transaction_tests
[388/434] Running utility command for check-bitcoin-transaction_tests
[389/434] bitcoin: testing uint256_tests
[390/434] Running utility command for check-bitcoin-uint256_tests
[391/434] bitcoin: testing walletdb_tests
[392/434] Running utility command for check-bitcoin-walletdb_tests
[393/434] bitcoin: testing undo_tests
[394/434] bitcoin: testing serialize_tests
[395/434] bitcoin: testing txvalidationcache_tests
[396/434] Running utility command for check-bitcoin-undo_tests
[397/434] Running utility command for check-bitcoin-serialize_tests
[398/434] Running utility command for check-bitcoin-txvalidationcache_tests
[399/434] bitcoin: testing util_threadnames_tests
[400/434] Running utility command for check-bitcoin-util_threadnames_tests
[401/434] bitcoin: testing validationinterface_tests
[402/434] bitcoin: testing radix_tests
[403/434] bitcoin: testing validation_chainstatemanager_tests
[404/434] Running utility command for check-bitcoin-validation_chainstatemanager_tests
[405/434] bitcoin: testing schnorr_tests
[406/434] Running utility command for check-bitcoin-radix_tests
[407/434] Running utility command for check-bitcoin-validationinterface_tests
[408/434] Running utility command for check-bitcoin-schnorr_tests
[409/434] bitcoin: testing cashaddr_tests
[410/434] Running utility command for check-bitcoin-cashaddr_tests
[411/434] bitcoin: testing getarg_tests
[412/434] bitcoin: testing crypto_tests
[413/434] Running utility command for check-bitcoin-getarg_tests
[414/434] Running utility command for check-bitcoin-crypto_tests
[415/434] bitcoin: testing coinselector_tests
[416/434] Running utility command for check-bitcoin-coinselector_tests
[417/434] bitcoin: testing script_tests
[418/434] Running utility command for check-bitcoin-script_tests
[419/434] bitcoin: testing monolith_opcodes_tests
[420/434] bitcoin: testing util_tests
[421/434] Running utility command for check-bitcoin-monolith_opcodes_tests
[422/434] Running utility command for check-bitcoin-util_tests
[423/434] bitcoin: testing cuckoocache_tests
[424/434] Running utility command for check-bitcoin-cuckoocache_tests
[425/434] bitcoin: testing skiplist_tests
[426/434] Running utility command for check-bitcoin-skiplist_tests
[427/434] bitcoin: testing coins_tests
[428/434] Running utility command for check-bitcoin-coins_tests
[429/434] bitcoin: testing op_reversebytes_tests
[430/434] Running utility command for check-bitcoin-op_reversebytes_tests
[431/434] Running bitcoin test suite
PASSED: bitcoin test suite
[432/434] secp256k1: testing secp256k1-tests
[433/434] Running secp256k1 test suite
PASSED: secp256k1 test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang failed with exit code 1

Tail of the build log:

[418/427] Running utility command for check-bitcoin-coinselector_tests
[419/427] bitcoin: testing coins_tests
[420/427] bitcoin: testing op_reversebytes_tests
[421/427] Running utility command for check-bitcoin-coins_tests
[422/427] Running utility command for check-bitcoin-op_reversebytes_tests
[423/427] Running bitcoin test suite
PASSED: bitcoin test suite
[424/427] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/paymentservertests.cpp.o
[425/427] Linking CXX executable src/qt/test/test_bitcoin-qt
[426/427] bitcoin-qt: testing test_bitcoin-qt
FAILED: src/qt/test/CMakeFiles/check-bitcoin-qt-test_bitcoin-qt 
cd /work/abc-ci-builds/build-clang-tidy/src/qt/test && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-clang-tidy/test/junit && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-clang-tidy/test/log && /usr/bin/cmake -E env /work/cmake/utils/log-and-print-on-failure.sh /work/abc-ci-builds/build-clang-tidy/test/log/bitcoin-qt-test_bitcoin-qt.log /work/abc-ci-builds/build-clang-tidy/src/qt/test/test_bitcoin-qt
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
********* Start testing of AppTests *********
Config: Using QtTest library 5.11.3, Qt 5.11.3 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 8.3.0)
PASS   : AppTests::initTestCase()
QINFO  : AppTests::appTests() Backing up GUI settings to "/tmp/test_common_Bitcoin ABC/8408810ff59243ef4568ea88d48d5bb15c46602d2ade78ec938c29a7e7fa491f/regtest/guisettings.ini.bak"
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QDEBUG : AppTests::appTests() requestInitialize : Requesting initialize
QDEBUG : AppTests::appTests() initialize : Running initialization in thread
QDEBUG : AppTests::appTests() initializeResult : Initialization result:  true
QINFO  : AppTests::appTests() Platform customization: "other"
QDEBUG : AppTests::appTests() TransactionTablePriv::refreshWallet
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QWARN  : AppTests::appTests() This plugin does not support raise()
QWARN  : AppTests::appTests() This plugin does not support raise()
QWARN  : AppTests::appTests() This plugin does not support grabbing the keyboard
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QDEBUG : AppTests::appTests() requestShutdown : Requesting shutdown
QDEBUG : AppTests::appTests() shutdown : Running Shutdown in thread
QDEBUG : AppTests::appTests() NotifyUnload

=== Received signal at function time: 1168ms, total time: 1168ms, dumping stack ===
=== End of stack trace ===
QFATAL : AppTests::appTests() Received signal 11
         Function time: 1168ms Total time: 1168ms
FAIL!  : AppTests::appTests() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 1171ms
********* Finished testing of AppTests *********
Aborted (core dumped)
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

Tail of the build log:

[341/398] bitcoin: testing timedata_tests
[342/398] bitcoin: testing streams_tests
[343/398] Running utility command for check-bitcoin-timedata_tests
[344/398] Running utility command for check-bitcoin-streams_tests
[345/398] bitcoin: testing uint256_tests
[346/398] bitcoin: testing undo_tests
[347/398] Running utility command for check-bitcoin-uint256_tests
[348/398] bitcoin: testing util_threadnames_tests
[349/398] Running utility command for check-bitcoin-undo_tests
[350/398] Running utility command for check-bitcoin-util_threadnames_tests
[351/398] bitcoin: testing validation_chainstatemanager_tests
[352/398] bitcoin: testing compilerbug_tests
[353/398] Running utility command for check-bitcoin-validation_chainstatemanager_tests
[354/398] Running utility command for check-bitcoin-compilerbug_tests
[355/398] bitcoin: testing sigencoding_tests
[356/398] bitcoin: testing serialize_tests
[357/398] Running utility command for check-bitcoin-sigencoding_tests
[358/398] Running utility command for check-bitcoin-serialize_tests
[359/398] bitcoin: testing checkpoints_tests
[360/398] bitcoin: testing validationinterface_tests
[361/398] bitcoin: testing txvalidationcache_tests
[362/398] Running utility command for check-bitcoin-checkpoints_tests
[363/398] Running utility command for check-bitcoin-validationinterface_tests
[364/398] Running utility command for check-bitcoin-txvalidationcache_tests
[365/398] bitcoin: testing radix_tests
[366/398] Running utility command for check-bitcoin-radix_tests
[367/398] bitcoin: testing crypto_tests
[368/398] bitcoin: testing schnorr_tests
[369/398] Running utility command for check-bitcoin-crypto_tests
[370/398] Running utility command for check-bitcoin-schnorr_tests
[371/398] bitcoin: testing cashaddr_tests
[372/398] bitcoin: testing blockcheck_tests
[373/398] bitcoin: testing script_standard_tests
[374/398] Running utility command for check-bitcoin-cashaddr_tests
[375/398] Running utility command for check-bitcoin-blockcheck_tests
[376/398] Running utility command for check-bitcoin-script_standard_tests
[377/398] bitcoin: testing getarg_tests
[378/398] Running utility command for check-bitcoin-getarg_tests
[379/398] bitcoin: testing validation_tests
[380/398] Running utility command for check-bitcoin-validation_tests
[381/398] bitcoin: testing util_tests
[382/398] Running utility command for check-bitcoin-util_tests
[383/398] bitcoin: testing monolith_opcodes_tests
[384/398] bitcoin: testing cuckoocache_tests
[385/398] Running utility command for check-bitcoin-monolith_opcodes_tests
[386/398] Running utility command for check-bitcoin-cuckoocache_tests
[387/398] bitcoin: testing skiplist_tests
[388/398] Running utility command for check-bitcoin-skiplist_tests
[389/398] bitcoin: testing validation_block_tests
[390/398] Running utility command for check-bitcoin-validation_block_tests
[391/398] bitcoin: testing op_reversebytes_tests
[392/398] Running utility command for check-bitcoin-op_reversebytes_tests
[393/398] bitcoin: testing transaction_tests
[394/398] Running utility command for check-bitcoin-transaction_tests
[395/398] bitcoin: testing coins_tests
[396/398] Running utility command for check-bitcoin-coins_tests
[397/398] Running bitcoin test suite
PASSED: bitcoin test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

Tail of the build log:

[749/757] bitcoin: testing op_reversebytes_tests
[750/757] Running utility command for check-bitcoin-op_reversebytes_tests
[751/757] Running bitcoin test suite
PASSED: bitcoin test suite
[752/757] Linking CXX executable src/qt/test/test_bitcoin-qt
[753/757] bitcoin-upgrade-activated: testing coins_tests
[754/757] Running utility command for check-bitcoin-upgrade-activated-coins_tests
[755/757] Running bitcoin-upgrade-activated test suite
PASSED: bitcoin-upgrade-activated test suite
[756/757] bitcoin-qt: testing test_bitcoin-qt
FAILED: src/qt/test/CMakeFiles/check-bitcoin-qt-test_bitcoin-qt 
cd /work/abc-ci-builds/build-diff/src/qt/test && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-diff/test/junit && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-diff/test/log && /usr/bin/cmake -E env /work/cmake/utils/log-and-print-on-failure.sh /work/abc-ci-builds/build-diff/test/log/bitcoin-qt-test_bitcoin-qt.log /work/abc-ci-builds/build-diff/src/qt/test/test_bitcoin-qt
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
********* Start testing of AppTests *********
Config: Using QtTest library 5.11.3, Qt 5.11.3 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 8.3.0)
PASS   : AppTests::initTestCase()
QINFO  : AppTests::appTests() Backing up GUI settings to "/tmp/test_common_Bitcoin ABC/e9b0449239a44821133f5712aa25c1497a947e6c5de9b67c5d696e3afd16ff09/regtest/guisettings.ini.bak"
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QDEBUG : AppTests::appTests() requestInitialize : Requesting initialize
QDEBUG : AppTests::appTests() initialize : Running initialization in thread
QDEBUG : AppTests::appTests() initializeResult : Initialization result:  true
QINFO  : AppTests::appTests() Platform customization: "other"
QDEBUG : AppTests::appTests() TransactionTablePriv::refreshWallet
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QWARN  : AppTests::appTests() This plugin does not support raise()
QWARN  : AppTests::appTests() This plugin does not support raise()
QWARN  : AppTests::appTests() This plugin does not support grabbing the keyboard
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QDEBUG : AppTests::appTests() requestShutdown : Requesting shutdown
QDEBUG : AppTests::appTests() shutdown : Running Shutdown in thread
QDEBUG : AppTests::appTests() NotifyUnload

=== Received signal at function time: 1027ms, total time: 1028ms, dumping stack ===
=== End of stack trace ===
QFATAL : AppTests::appTests() Received signal 11
         Function time: 1027ms Total time: 1028ms
FAIL!  : AppTests::appTests() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 1032ms
********* Finished testing of AppTests *********
Aborted (core dumped)
ninja: build stopped: cannot make progress due to previous errors.
Build build-diff failed with exit code 1

Tail of the build log:

[433/435] Running bitcoin test suite
PASSED: bitcoin test suite
[434/435] bitcoin-qt: testing test_bitcoin-qt
FAILED: src/qt/test/CMakeFiles/check-bitcoin-qt-test_bitcoin-qt 
cd /work/abc-ci-builds/build-debug/src/qt/test && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-debug/test/junit && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-debug/test/log && /usr/bin/cmake -E env /work/cmake/utils/log-and-print-on-failure.sh /work/abc-ci-builds/build-debug/test/log/bitcoin-qt-test_bitcoin-qt.log /work/abc-ci-builds/build-debug/src/qt/test/test_bitcoin-qt
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
********* Start testing of AppTests *********
Config: Using QtTest library 5.11.3, Qt 5.11.3 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 8.3.0)
PASS   : AppTests::initTestCase()
QINFO  : AppTests::appTests() Backing up GUI settings to "/tmp/test_common_Bitcoin ABC/157ad59e73b847d307c6c2e05cf3f97c8cfb0c8e6a9069ca80379a11702480e4/regtest/guisettings.ini.bak"
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QDEBUG : AppTests::appTests() requestInitialize : Requesting initialize
QDEBUG : AppTests::appTests() initialize : Running initialization in thread
QDEBUG : AppTests::appTests() initializeResult : Initialization result:  true
QINFO  : AppTests::appTests() Platform customization: "other"
QDEBUG : AppTests::appTests() TransactionTablePriv::refreshWallet
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QWARN  : AppTests::appTests() This plugin does not support raise()
QWARN  : AppTests::appTests() This plugin does not support raise()
QWARN  : AppTests::appTests() This plugin does not support grabbing the keyboard
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() QFont::setPointSizeF: Point size <= 0 (-1.000000), must be greater than 0
QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()
QDEBUG : AppTests::appTests() requestShutdown : Requesting shutdown
QDEBUG : AppTests::appTests() shutdown : Running Shutdown in thread
QDEBUG : AppTests::appTests() NotifyUnload


************************
EXCEPTION: St12system_error       
Operation not permitted       
bitcoin in Runaway exception       

QWARN  : AppTests::appTests() This plugin does not support propagateSizeHints()

=== Received signal at function time: 300000ms, total time: 300001ms, dumping stack ===
=== End of stack trace ===
QFATAL : AppTests::appTests() Test function timed out
FAIL!  : AppTests::appTests() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 300005ms
********* Finished testing of AppTests *********
Aborted (core dumped)
ninja: build stopped: cannot make progress due to previous errors.
Build build-debug failed with exit code 1
majcosta requested changes to this revision.Jan 14 2021, 11:58
majcosta added a subscriber: majcosta.

tests failing

This revision now requires changes to proceed.Jan 14 2021, 11:58
PiRK planned changes to this revision.Jan 14 2021, 12:44

move node.args = nullptr; after fs::remove(GetPidFile(*node.args)) (see PR19779 / D8646))

This revision is now accepted and ready to land.Jan 14 2021, 13:50