Bug #23170
closedlibrgw crash when processing request in 12.2.3
0%
Description
I'm using librgw with new Ceph release 12.2.3, librgw will always get unexpected crush when it is processing a request, the following is the bug trace:
#0 0x00007f17afddd1f7 in raise () from /lib64/libc.so.6
#1 0x00007f17afdde8e8 in abort () from /lib64/libc.so.6
#2 0x00007f17aea9dac5 in _gnu_cxx::_verbose_terminate_handler() () from /lib64/libstdc++.so.6
#3 0x00007f17aea9ba36 in ?? () from /lib64/libstdc++.so.6
#4 0x00007f17aea9ba63 in std::terminate() () from /lib64/libstdc++.so.6
#5 0x00007f17aea9bc83 in _cxa_throw () from /lib64/libstdc++.so.6
#6 0x00007f17aeaf07d7 in std::_throw_logic_error(char const*) () from /lib64/libstdc++.so.6
#7 0x00007f17aeafc601 in char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) () from /lib64/libstdc++.so.6
#8 0x00007f17aeafc9b8 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) () from /lib64/libstdc++.so.6
#9 0x00007f1795714013 in rgw_log_op (store=0x7f17a8f51a90, rest=rest@entry=0x0, s=s@entry=0x7f17b09a72f0, op_name="stat_bucket",
olog=olog@entry=0x0) at /dist/github/ceph/src/rgw/rgw_log.cc:360
#10 0x00007f179568bd33 in rgw::RGWLibProcess::process_request (this=this@entry=0x7f17a9087d20, req=req@entry=0x7f17b09a7d50,
io=io@entry=0x7f17b09a7ab0) at /dist/github/ceph/src/rgw/librgw.cc:320
#11 0x00007f179568ca16 in rgw::RGWLibProcess::process_request (this=0x7f17a9087d20, req=req@entry=0x7f17b09a7d50)
at /dist/github/ceph/src/rgw/librgw.cc:166
#12 0x00007f17956981ab in execute_req (this=<optimized out>, req=0x7f17b09a7d50) at /dist/github/ceph/src/rgw/rgw_lib_frontend.h:100
#13 rgw::RGWLibFS::stat_bucket (this=this@entry=0x7f17a908b600, parent=parent@entry=0x7f17a908b620, path=path@entry=0x7f17a909d648 "bucket1",
bs=..., flags=flags@entry=0) at /dist/github/ceph/src/rgw/rgw_file.cc:77
#14 0x00007f1795699a52 in rgw_lookup (rgw_fs=<optimized out>, parent_fh=<optimized out>, path=<optimized out>, fh=0x7f17b09a8220,
flags=<optimized out>) at /dist/github/ceph/src/rgw/rgw_file.cc:1798
The main cause is in src/rgw/rgw_log.cc:360 :
std::string uri(s->info.env->get("REQUEST_METHOD"));
It seems "REQUEST_METHOD" is not initialized in librgw, neither do "HTTP_VERSION", "REQUEST_URI", "SCRIPT_URI", "SERVER_PORT", "REMOTE_ADDR". So I think we should initialized them before processing request in librgw
Updated by Tao CHEN about 6 years ago
fixed with this PR: https://github.com/ceph/ceph/pull/20633
Updated by Tao CHEN about 6 years ago
This bug has been fixed by this PR:
https://github.com/ceph/ceph/commit/f9d5528a1990b5bcc33948284136c2d349aa838e
Updated by Chang Liu about 6 years ago
- Subject changed from librgw crush when processing request in 12.2.3 to librgw crash when processing request in 12.2.3
Updated by Yehuda Sadeh about 6 years ago
- Assignee set to Matt Benjamin
- Priority changed from Normal to High
Updated by Matt Benjamin about 6 years ago
- Status changed from New to Pending Backport
Updated by Nathan Cutler about 6 years ago
- Copied to Backport #23319: luminous: librgw crash when processing request in 12.2.3 added
Updated by Abhishek Lekshmanan about 6 years ago
- Status changed from Pending Backport to Duplicate
duplicated by http://tracker.ceph.com/issues/21942