Switches Windows CI to produce RelWithDebInfo binaries and adds code that uses ProcDump to generate a dump file of the bitcoind process which may help explain where it’s gotten stuck.
Unresolved:
~Whether the CI change is remotely correct.~
~How to get access to the generated .EXE, .DMP and .PDB files.~
~Obtaining a .DMP artifact(s).~
~Verify debugging with downloaded artifacts works.~
~Making the GitHub workflow begin execution based on schedule rather than based on git push.~
~Undo most temporary changes and let CI run every 3 hours on this branch~ on personal master branch for 2 weeks.
Compare execution time of release vs RelWithDebInfo to see if defaults could be changed on master branch.
DrahtBot
commented at 12:56 pm on September 24, 2024:
contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
See the guideline for information on the review process.
A summary of reviews will appear here.
Conflicts
Reviewers, this pull request conflicts with the following ones:
#30660 (test: Shut down framework cleanly on RPC connection failure by hodlinator)
#30487 (ci: skip Github CI on branch pushes for forks by Sjors)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
hodlinator marked this as a draft
on Sep 24, 2024
hodlinator force-pushed
on Sep 24, 2024
hodlinator
commented at 9:05 pm on September 24, 2024:
contributor
Seems fine to integrate in a pull request and then keep the pull request unmerged, and only merge the pull request in the GHA CI, as that is the only place where it reproduces. Adding temporary test test-only code for everyone else may be a bit too much.
Do you think the current approach of temporarily changing from Release -> RelWithDebInfo for Windows would be acceptable, as a PR that is only run on CI?
Do you have any ideas for being able to retrieve generated .DMP and .PDB files from CI? I’m totally unfamiliar with GHA so RTFM-links are welcome too. An alternative approach could be to make this temporary PR upload the relevant files to somewhere, only if the issue occurs.
Feel free to loop in others to answer if you think it’s more their area of ownership.
davidgumberg
commented at 9:42 pm on September 24, 2024:
contributor
Do you have any ideas for being able to retrieve generated .DMP and .PDB files from CI?
maflcko
commented at 6:22 am on September 25, 2024:
member
Do you think the current approach of temporarily changing from Release -> RelWithDebInfo for Windows would be acceptable, as a PR that is only run on CI?
Seems fine to do permanent, if there are no downsides or slow-down. cc @hebasto
hodlinator force-pushed
on Sep 25, 2024
hodlinator
commented at 10:08 am on September 25, 2024:
contributor
actions/upload-artifact@v4 is not allowed to be used in bitcoin/bitcoin. Actions in this workflow must be: within a repository owned by bitcoin or matching the following: actions/cache@, actions/cache/restore@, actions/cache/save@, actions/checkout@, ilammy/msvc-dev-cmd@*.
Maybe one could (ab)use actions/cache/save but I’ll pause here for more input.
maflcko
commented at 10:12 am on September 25, 2024:
member
Maybe you can leave it in your repo and just trigger the task every 3 hours for two weeks to get the dump eventually?
hodlinator force-pushed
on Sep 25, 2024
hodlinator force-pushed
on Sep 25, 2024
hodlinator force-pushed
on Sep 25, 2024
hebasto
commented at 11:23 am on September 26, 2024:
member
Do you think the current approach of temporarily changing from Release -> RelWithDebInfo for Windows would be acceptable, as a PR that is only run on CI?
Seems fine to do permanent, if there are no downsides or slow-down. cc @hebasto
Here is some historical context:
In pre-Cmake times, manually crafted project files had two configurations: “Release” and “Debug”.
While working on the CMake staging branch, the CI build configuration remained “Release” to allow the use of Ccache. This functionality was later dropped.
At this point, I don’t see any drawbacks to switching the CI job’s build configuration from “Release” to “RelWithDebInfo”.
hodlinator force-pushed
on Sep 26, 2024
hodlinator force-pushed
on Sep 26, 2024
hodlinator force-pushed
on Sep 26, 2024
hodlinator force-pushed
on Sep 27, 2024
hodlinator force-pushed
on Sep 27, 2024
DrahtBot added the label
CI failed
on Sep 27, 2024
DrahtBot
commented at 11:05 am on September 27, 2024:
contributor
Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
hodlinator force-pushed
on Sep 27, 2024
hodlinator
commented at 9:31 pm on September 27, 2024:
contributor
The Procdump.exe process itself times out when trying to produce the dump. :facepalm:
Could be that it’s popping up a GUI dialogue on first run, will investigate further.
hodlinator force-pushed
on Sep 28, 2024
hodlinator force-pushed
on Sep 28, 2024
hodlinator force-pushed
on Sep 28, 2024
hodlinator force-pushed
on Sep 28, 2024
hodlinator force-pushed
on Sep 28, 2024
hodlinator
commented at 10:43 pm on September 28, 2024:
contributor
Still remains to see if it loads nicely in the debugger.
Other remaining issue is that I used a hardcoded absolute path for the upload-artifact step since I’m still struggling to find the correct glob-expression. Can’t assume it will be node0 that stalls, and unsure if the path will be the same when removing –nocleanup. (Come to think of it, –nocleanup shouldn’t be necessary now that the test fails).
I’m a bit mystified by RUNNER_TEMP passed as --tmpdirprefix to the functional test runner having the value D:/a/_temp/, while the test data seems to end up in D:/a/bitcoin/bitcoin/build/test/cache/, but maybe the cache part is a clue.
hodlinator
commented at 2:03 pm on September 30, 2024:
contributor
Still remains to see if it loads nicely in the debugger.
It debugs!
Requires .DMP, .PDB and .EXE (last one currently luckily added just as an extra test).
hodlinator force-pushed
on Sep 30, 2024
hodlinator force-pushed
on Sep 30, 2024
hodlinator force-pushed
on Oct 1, 2024
hodlinator force-pushed
on Oct 1, 2024
hodlinator force-pushed
on Oct 1, 2024
hodlinator force-pushed
on Oct 1, 2024
hodlinator force-pushed
on Oct 1, 2024
hodlinator force-pushed
on Oct 2, 2024
hodlinator force-pushed
on Oct 2, 2024
hodlinator force-pushed
on Oct 2, 2024
hodlinator renamed this:
DO NOT MERGE: Windows bitcoind stall debugging
Windows bitcoind stall debugging [WIP, NOMERGE, DRAFT]
on Oct 2, 2024
DrahtBot renamed this:
Windows bitcoind stall debugging [WIP, NOMERGE, DRAFT]
Windows bitcoind stall debugging [WIP, NOMERGE, DRAFT]
on Oct 2, 2024
hodlinator force-pushed
on Oct 2, 2024
ci: Temporarily switch Windows to RelWithDebInfo
RelWithDebInfo (Release with debug information) ensures we generate .PDB files which are useful when debugging dump files.
7421a0219a
test: Generate dump file for stalled bitcoind
Upon failing to establish an RPC connection to bitcoind:
Download SysInternals Procdump, unzip it, and use it to generate a dump file that can be opened in a debugger to see what bitcoind was up to.
28751ebbd7
hodlinator force-pushed
on Oct 3, 2024
hodlinator
commented at 9:48 am on October 3, 2024:
contributor
I finally read the documentation for schedule a bit more closely and realized it only applies to the master branch, so I’m making the “every 3 hours”-schedule happen on my personal master branch for now.
hodlinator force-pushed
on Oct 3, 2024
hodlinator
commented at 8:24 pm on October 3, 2024:
contributor
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2024-10-08 16:12 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me