Project

General

Profile

Fix #56068

octopus: segfault on FIPS enabled server executing s3 multipart upload

Added by Mark Kogan 6 months ago. Updated 5 months ago.

Status:
In Progress
Priority:
Normal
Assignee:
Target version:
-
% Done:

0%

Source:
Support
Tags:
Backport:
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

[root@mkPT3620 /]# gdb /usr/bin/radosgw --core=/mnt/podman/core.radosgw.167.7247850e7b284590a79c26aa5d27867f.4054337.1652941532000000
(gdb) bt
#0  0x00007f0f73228abf in raise () from /lib64/libpthread.so.0
#1  0x00007f0f7e74b473 in reraise_fatal (signum=11) at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/global/signal_handler.cc:332
#2  handle_fatal_signal (signum=11) at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/global/signal_handler.cc:332
#3  <signal handler called>
#4  0x0000000000000000 in ?? ()

#5  0x00007f0f7e3b43b8 in RGWCompleteMultipart::execute (this=0x5646ba65c120, y=...) at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/rgw/rgw_op.cc:6058

#6  0x00007f0f7e059830 in rgw_process_authenticated (handler=<optimized out>, op=@0x7f0f7ecbe910: 0x5646ba65c120, req=0x7f0f7ecbf620, s=0x7f0f7ecbeb20, y=..., skip_retarget=false)
    at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/rgw/rgw_process.cc:167
#7  0x00007f0f7e05dcbd in process_request (store=0x5646b7b74a00, rest=0x7ffe396d7360, req=req@entry=0x7f0f7ecbf620, frontend_prefix=..., auth_registry=...,
    client_io=client_io@entry=0x7f0f7ecbf8a0, olog=0x0, yield=..., scheduler=0x5646b7e32278, user=0x7f0f7ecbfa00, latency=0x7f0f7ecbf5f8, http_ret=0x7f0f7ecbf5f4)
    at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/rgw/rgw_process.cc:302
#8  0x00007f0f7dfaf55b in (anonymous namespace)::handle_connection<boost::beast::basic_stream<boost::asio::ip::tcp, boost::asio::executor, boost::beast::unlimited_rate_policy> > (
    context=..., env=..., stream=..., buffer=..., pause_mutex=..., scheduler=<optimized out>, ec=..., yield=..., request_timeout=..., is_ssl=false)
    at /usr/include/c++/8/bits/shared_ptr_base.h:1018
#9  0x00007f0f7dfb0ff4 in (anonymous namespace)::AsioFrontend::<lambda(spawn::yield_context)>::operator() (yield=..., __closure=0x5646b914eea8) at /usr/include/c++/8/bits/unique_ptr.h:345
#10 spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >, (anonymous namespace)::AsioFrontend::accept((anonymous namespace)::AsioFrontend::Listener&, boost::system::error_code)::<lambda(spawn::yield_context)>, boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits> >::<lambda(boost::context::continuation&&)>::operator()(boost::context::continuation &&) (c=..., this=<optimized out>)
    at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/spawn/include/spawn/impl/spawn.hpp:390
#11 0x00007f0f7dfb125e in std::__invoke_impl<boost::context::continuation, spawn::detail::spawn_helper<Handler, Function, StackAllocator>::operator()() [with Handler = boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >; Function = (anonymous namespace)::AsioFrontend::accept((anonymous namespace)::AsioFrontend::Listener&, boost::system::error_code)::<lambda(spawn::yield_context)>; StackAllocator = boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>]::<lambda(boost::context::continuation&&)>&, boost::context::continuation> (__f=...) at /usr/include/c++/8/bits/invoke.h:89
#12 std::__invoke<spawn::detail::spawn_helper<Handler, Function, StackAllocator>::operator()() [with Handler = boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >; Function = (anonymous namespace)::AsioFrontend::accept((anonymous namespace)::AsioFrontend::Listener&, boost::system::error_code)::<lambda(spawn::yield_context)>; StackAllocator = boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>]::<lambda(boost::context::continuation&&)>&, boost::context::continuation> (__fn=...)
    at /usr/include/c++/8/bits/invoke.h:96
#13 std::invoke<spawn::detail::spawn_helper<Handler, Function, StackAllocator>::operator()() [with Handler = boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >; Function = (anonymous namespace)::AsioFrontend::accept((anonymous namespace)::AsioFrontend::Listener&, boost::system::error_code)::<lambda(spawn::yield_context)>; StackAllocator = boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>]::<lambda(boost::context::continuation&&)>&, boost::context::continuation> (__fn=...)
    at /usr/include/c++/8/functional:82
#14 boost::context::detail::record<boost::context::continuation, boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>, spawn::detail::spawn_helper<Handler, Function, StackAllocator>::operator()() [with Handler = boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >; Function = (anonymous namespace)::AsioFrontend::accept((anonymous namespace)::AsioFrontend::Listener&, boost::system::error_code)::<lambda(spawn::yield_context)>; StackAllocator = boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>]::<lambda(boost::context::continuation&&)> >::run (fctx=<optimized out>, this=<optimized out>)
    at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/build/boost/include/boost/context/continuation_fcontext.hpp:146
#15 boost::context::detail::context_entry<boost::context::detail::record<boost::context::continuation, boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>, spawn::detail::spawn_helper<Handler, Function, StackAllocator>::operator()() [with Handler = boost::asio::executor_binder<void (*)(), boost::asio::strand<boost::asio::io_context::executor_type> >; Function = (anonymous namespace)::AsioFrontend::accept((anonymous namespace)::AsioFrontend::Listener&, boost::system::error_code)::<lambda(spawn::yield_context)>; StackAllocator = boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>]::<lambda(boost::context::continuation&&)> > >(boost::context::detail::transfer_t) (t=...)
    at /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/build/boost/include/boost/context/continuation_fcontext.hpp:80
#16 0x00007f0f7e74e89f in make_fcontext () from /lib64/libradosgw.so.2
#17 0x0000000000000000 in ?? ()

[root@mkPT3620 /]# vim /usr/src/debug/ceph-16.2.0-152.el8cp.x86_64/src/rgw/rgw_op.cc +6058
6056       hex_to_buf(obj_iter->second.etag.c_str(), petag,
6057                 CEPH_CRYPTO_MD5_DIGESTSIZE);
                                 ^^^
                                 ^^^ FIPS !!!
                                 ^^^
6058       hash.Update((const unsigned char *)petag, sizeof(petag));

Related issues

Copied from rgw - Backport #53008: octopus: segfault on FIPS enabled server as result of EVP_md5 disabled in openssl Resolved

History

#1 Updated by Mark Kogan 6 months ago

  • Copied from Backport #53008: octopus: segfault on FIPS enabled server as result of EVP_md5 disabled in openssl added

#2 Updated by Mark Kogan 6 months ago

  • Pull request ID set to 46701

#4 Updated by Ilya Dryomov 5 months ago

  • Target version deleted (v15.2.16)

Also available in: Atom PDF