Project

General

Profile

Actions

Bug #20073

open

valgrind failures jewel: possible memory corruption in StreamRWReq::get_resource

Added by Abhishek Lekshmanan almost 7 years ago. Updated almost 7 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

seen at http://pulpito.ceph.com/abhi-2017-05-23_12:16:16-rgw-wip-jewel-backports-mon-sortbitwise-distro-basic-smithi/1221206/

<error>
  <unique>0xb9</unique>
  <tid>1</tid>
  <kind>Leak_DefinitelyLost</kind>
  <xwhat>
    <text>24,295,773 (9,536 direct, 24,286,237 indirect) bytes in 298 blocks are definitely lost in loss record 186 of 189</text>
    <leakedbytes>24295773</leakedbytes>
    <leakedblocks>298</leakedblocks>
  </xwhat>
  <stack>
    <frame>
      <ip>0x4C2B0E0</ip>
      <obj>/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
      <fn>operator new(unsigned long)</fn>
    </frame>
    <frame>
      <ip>0x52B6C14</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>allocate</fn>
      <dir>/usr/include/c++/4.8/ext</dir>
      <file>new_allocator.h</file>
      <line>104</line>
    </frame>
    <frame>
      <ip>0x52B6C14</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>_M_get_node</fn>
      <dir>/usr/include/c++/4.8/bits</dir>
      <file>stl_list.h</file>
      <line>334</line>
    </frame>
    <frame>
      <ip>0x52B6C14</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>_M_create_node&lt;std::pair&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;</fn>
      <dir>/usr/include/c++/4.8/bits</dir>
      <file>stl_list.h</file>
      <line>502</line>
    </frame>
    <frame>
      <ip>0x52B6C14</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>_M_insert&lt;std::pair&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;</fn>
      <dir>/usr/include/c++/4.8/bits</dir>
      <file>stl_list.h</file>
      <line>1561</line>
    </frame>
    <frame>
      <ip>0x52B6C14</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>push_back</fn>
      <dir>/usr/include/c++/4.8/bits</dir>
      <file>stl_list.h</file>
      <line>1021</line>
    </frame>
    <frame>
      <ip>0x52B6C14</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWRESTStreamRWRequest::get_resource(RGWAccessKey&amp;, std::map&lt;std::string, std::string, std::less&lt;std::string&gt;, std::allocator&lt;std::pair&lt;std::string const, std::string&gt; &gt; &gt;&amp;, std::string const&amp;, RGWHTTPManager*)</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_rest_client.cc</file>
      <line>671</line>
    </frame>
    <frame>
      <ip>0x52B96C9</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWRESTReadResource::aio_read()</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_rest_conn.cc</file>
      <line>269</line>
    </frame>
    <frame>
      <ip>0x51AE22E</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWReadRemoteMetadataCR::operate()</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_sync.cc</file>
      <line>942</line>
    </frame>
    <frame>
      <ip>0x510DECA</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWCoroutinesStack::operate(RGWCoroutinesEnv*)</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_coroutine.cc</file>
      <line>184</line>
    </frame>
    <frame>
      <ip>0x51107C9</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWCoroutinesManager::run(std::list&lt;RGWCoroutinesStack*, std::allocator&lt;RGWCoroutinesStack*&gt; &gt;&amp;)</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_coroutine.cc</file>
      <line>474</line>
    </frame>
    <frame>
      <ip>0x51112DC</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWCoroutinesManager::run(RGWCoroutine*)</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_coroutine.cc</file>
      <line>600</line>
    </frame>
    <frame>
      <ip>0x51A8AC2</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWRemoteMetaLog::run_sync()</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_sync.cc</file>
      <line>2006</line>
    </frame>
    <frame>
      <ip>0x528136C</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>run</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_sync.h</file>
      <line>278</line>
    </frame>
    <frame>
      <ip>0x528136C</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWMetaSyncProcessorThread::process()</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_rados.cc</file>
      <line>2964</line>
    </frame>
    <frame>
      <ip>0x5225230</ip>
      <obj>/usr/lib/librgw.so.2.0.0</obj>
      <fn>RGWRadosThread::Worker::entry()</fn>
      <dir>/build/ceph-10.2.7-312-g8a7442e/src/rgw</dir>
      <file>rgw_rados.cc</file>
      <line>2821</line>
    </frame>
    <frame>
      <ip>0xF0F2183</ip>
      <obj>/lib/x86_64-linux-gnu/libpthread-2.19.so</obj>
      <fn>start_thread</fn>
      <dir>/build/eglibc-oGUzwX/eglibc-2.19/nptl</dir>
      <file>pthread_create.c</file>
      <line>312</line>
    </frame>
    <frame>
      <ip>0xF91C37C</ip>
      <obj>/lib/x86_64-linux-gnu/libc-2.19.so</obj>
      <fn>clone</fn>
      <dir>/build/eglibc-oGUzwX/eglibc-2.19/misc/../sysdeps/unix/sysv/linux/x86_64</dir>
      <file>clone.S</file>
      <line>111</line>
    </frame>
  </stack>
</error>

failures seem to point at `headers.push_back` which is strange as this looks like a regular copying elements from a map to list, however we do hold a ptr to env_map in req_info, and also modify the reference to the map via get_map() in functions that precede (like sign_request for eg)

Actions #1

Updated by Abhishek Lekshmanan almost 7 years ago

  • Description updated (diff)
Actions

Also available in: Atom PDF