Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Mar 2016 12:41:15 +0100
From:      Willem Jan Withagen <wjw@digiware.nl>
To:        toolchain@freebsd.org
Subject:   Crash in ostream <<operator
Message-ID:  <56E7F4DB.2000404@digiware.nl>

next in thread | raw e-mail | index | archive | help
Hi,

While running Ceph tools I get a crash in
fr 10
#10 0x00000000016d82ca in FileStore::omap_get_values(coll_t const&, 
ghobject_t const&, std::__1::set<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >, 
std::__1::allocator<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, 
std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> >, ceph::buffer::list, 
std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >, 
std::__1::allocator<std::__1::pair<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const, 
ceph::buffer::list> > >*) ()
(gdb) l
95      int preload_erasure_code()
96      {
97        string plugins = g_conf->osd_erasure_code_plugins;
98        stringstream ss;
99        int r = ErasureCodePluginRegistry::instance().preload(
100         plugins,
101         g_conf->erasure_code_dir,
102         &ss);
103       if (r)
104         derr << ss.str() << dendl;
(gdb)
105       else
106         dout(10) << ss.str() << dendl;
107       return r;
108     }
109

All of this seems to be inlined since I'm not able to get at ss or r


#8  0x0000000000e16145 in std::__1::char_traits<char>::length (__s=0x0) 
at /usr/include/c++/v1/string:640
640         static inline size_t length(const char_type* __s) {return 
strlen(__s);}

Looking at the strlen implementation in
     /usr/srcs/head/src/lib/libc/string/strlen.c

shows that strlen does not take 0x0 as pointer, so when we get here with 
__s = 0x0 all is lost.
So I tried running it through 3.7, but since this is in the libraries 
with the bintools/os, I'd expect
both versions to crash on this.

Now the question I have to solve:
	is it the compiler/toolset/libraries
	is it a bug in the ceph code.

--WjW



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56E7F4DB.2000404>