Conversation
|
I think you have to put the word 'submodule' somewhere in the commit message where you update the submodule. |
|
jenkins test make check |
|
Overall I'm very much in favor of this once you get it compiling everywhere. |
|
jenkins test make check |
|
jenkins test make check |
Tests just passed 🥳. The last push added a build option and ifdefs. |
|
@mattbenjamin @chardan I like this idea and pulling in a better crash handler was something I'd been thinking of off and on. Would you take a look? |
chardan
left a comment
There was a problem hiding this comment.
This is a useful facility to have! Thanks for your work on it. LGTM.
| #ifdef HAVE_BREAKPAD | ||
| if (g_conf()->breakpad) { | ||
| google_breakpad::MinidumpDescriptor descriptor(g_conf()->crash_dir); | ||
| g_ceph_context->_ex_handler.reset( |
There was a problem hiding this comment.
This is fine, but also consider:
_ex_handler = std::make_unique<google_breakpad::ExceptionHandler>(...your args...);
|
One question I do have: should this have any documentation? An update to -D options listed somewhere? |
What kind of docs do you have in mind? I could do a writeup of the demo linked above. This is however just one way to use the feature. A Sentry-based workflow would look quite different. |
|
@irq0 I don't think we want to repeat the docs that come with the tool itself so much, so much as the install guide in README.md if there seemed to be an appropriate section to mention it. I didn't have anything too extensive in mind; and, lots of things are AFAIK currently discovered by looking through the build scripts. |
|
@adamemerson @mattbenjamin Any other thoughts? |
|
@irq0 I'm trying to get this into the test lab, but there are some technical issues. Thanks for your patience! |
Sure, let me know if I can help. |
|
Current Shaman build fails with breakpad annotations: |
|
Some of them are just vanilla failures. |
Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
Add option WITH_BREAKPAD defaulting to TRUE on non-windows platforms. Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
Only build breakpad code if we build with breakpad support. Print warning if breakpad enabled in config, but not built. Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
Explicitly disable incompatible `-Warray-bounds` and `-Wmaybe-uninitialized`. These aren't normally enabled as compile-failing errors, except when building RPMs on CentOS9. Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
Test that with enabled Breakpad crash handling Ceph creates correct minidumps. Signed-off-by: Marcel Lauhoff <marcel.lauhoff@clyso.com>
|
jenkins test api |
|
Is this good to merge? |
|
@irq0 This looks good to me at this point; if you'd like to add a Death Test, I should point out that Catch2 is now supported, so you can do that if you would like to! (See cmake/modules/AddCephTest.cmake and test/rgw/CMakeLists.txt for examples). |
The last push added the death test using gtest :) |
|
@irq0 Merged! Thank you for all of your work on this, and also for your considerable patience! |
Thanks! Any chance to get this into tentacle? |
|
I don't think so, unfortunately. |
|
ubuntu builds on https://shaman.ceph.com/builds/ceph/main/ have been failing for a couple days with: example logs: |
@chardan note that this build was from 97 days ago, and https://shaman.ceph.com/builds/ceph/wip-irq0-breakpad/f7070a71447ebc6f51be180e811756db4e341dc7/ shows the same ubuntu failure |
|
@cbodley This is my fault, I didn't notice that and shouldn't have merged-- apologies for the confusion here, I'll work on being more thorough when the merge button is involved! |
agreed, yes
the rados suite is a good default for common changes - you can add the 'core' and 'needs-qa' labels to get picked up for testing/merging |
|
This PR re-added an extra line to .gitmodules. This breaks the nvmeof submodule on fresh checkouts generally. |
ceph#61264 reintroduced https://tracker.ceph.com/issues/67640 fixed by 383091e. Setting shallow=true for the nvmeof/gateway submodule is problematic because the ceph.git submodule sha1 is only very rarely the head sha1 of the default branch. Fixes: https://tracker.ceph.com/issues/71568 Signed-off-by: Samuel Just <sjust@redhat.com>
|
@chardan Did you see comment about re: need for teuthology run in this case? |
|
@ivancich I've submitted it to shaman for build, then will run through teuthology. Might take a bit, things are backed up... |
ceph#61264 reintroduced https://tracker.ceph.com/issues/67640 fixed by 383091e. Setting shallow=true for the nvmeof/gateway submodule is problematic because the ceph.git submodule sha1 is only very rarely the head sha1 of the default branch. Fixes: https://tracker.ceph.com/issues/71568 Signed-off-by: Samuel Just <sjust@redhat.com>
ceph#61264 reintroduced https://tracker.ceph.com/issues/67640 fixed by 383091e. Setting shallow=true for the nvmeof/gateway submodule is problematic because the ceph.git submodule sha1 is only very rarely the head sha1 of the default branch. Fixes: https://tracker.ceph.com/issues/71568 Signed-off-by: Samuel Just <sjust@redhat.com>
This adds Google Breakpad as another option to handle crashes.
In terms of crash dump fidelity it is close to coredumps+system metadata, but at a fraction of the size. Typically 10s of MB.
Why Breakpad?
Demo
https://asciinema.org/a/KMiIt0XKkgsE2s1kaRiuqMeUm
Demos the whole process from symbol file generation, crashing a daemon, to looking at the minidump.
Tools: dump_syms minidump-stackwalk
https://github.com/rust-minidump https://github.com/mozilla/dump_syms
References
https://chromium.googlesource.com/breakpad/breakpad/+/HEAD/docs/getting_started_with_breakpad.md
https://chromium.googlesource.com/breakpad/breakpad
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windowsjenkins test rook e2e