Hi,

is it safe to use a STL container of messages ?

I'm doing it and I seeing rare segmentation faults when executed on our 
target platform which is a NXP IMX6ull.

The message queue:

std::queue<gap::fibsctl::ReqSetProcessData> reqs_;


a coredump backtrace:

(gdb) bt full
#0  __libc_do_syscall () at libc-do-syscall.S:49
No locals.
#1  0x7695d674 in __libc_signal_restore_set (set=0x74ffe228) at 
../sysdeps/unix/sysv/linux/internal-signals.h:86
        _a2tmp = 1962926632
        _a2 = 1962926632
        _nametmp = 175
        _a3tmp = 0
        _a3 = 0
        _a1 = 0
        _a4tmp = 8
        _a1tmp = 2
        _a4 = 8
        _name = 175
#2  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:48
        set = {__val = {512, 0, 1987579284, 1987314847, 6096896, 
4294967295, 0, 534576640, 0, 4294967295, 1990345404, 0, 6323000, 256, 
1962926780, 1962926820, 256, 1962926820, 1987945800, 1962926760, 2, 2, 
6344464, 1987914820, 1962926820, 1987945800, 5852160, 
            1987823481, 6344465, 1987835675, 1962927240, 1989531621}}
        pid = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
#3  0x7694eba2 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x60764c, sa_sigaction = 
0x60764c}, sa_mask = {__val = {6324920, 1962927144, 1962927088, 0, 6321736, 
534576640, 1962927088, 0, 1962927150, 1962927348, 1994068248, 1, 
1962927148, 1962927300, 1962927356, 1992787793, 
              1990345404, 1962927308, 1962927308, 2, 0, 1962927150, 
1962927150, 0, 16, 5592568, 1990345404, 17, 1991824636, 1991442331, 
1991442245, 1962927240}}, sa_flags = 1989984679, sa_restorer = 0x1000}
        sigs = {__val = {32, 0 <repeats 31 times>}}
#4  0x76984b6c in __libc_message (action=action@entry=do_abort, 
fmt=<optimized out>) at ../sysdeps/posix/libc_fatal.c:155
        ap = {__ap = 0x74ffe4c4}
        fd = <optimized out>
        list = <optimized out>
        nlist = <optimized out>
        cp = <optimized out>
#5  0x7698997a in malloc_printerr (str=<optimized out>) at malloc.c:5347
No locals.
#6  0x7698af42 in _int_free (av=0x76a24a1c <main_arena>, p=0x607d70, 
have_lock=0) at malloc.c:4201
        tmp = <optimized out>
        e = 0x607d78
        tc_idx = 2
        size = 32
        fb = <optimized out>
        nextchunk = <optimized out>
        nextsize = <optimized out>
        nextinuse = <optimized out>
        prevsize = <optimized out>
        bck = 0x607790
        fwd = <optimized out>
        __PRETTY_FUNCTION__ = "_int_free"
#7  0x76dd6fec in gap::fibsctl::ProcessData::~ProcessData (this=0x607d78, 
__in_chrg=<optimized out>) at src/fibsctl.pb.cc:1733
No locals.
#8  0x76dd7044 in gap::fibsctl::ReqSetProcessData::SharedDtor 
(this=<optimized out>) at src/fibsctl.pb.cc:1941
No locals.
#9  gap::fibsctl::ReqSetProcessData::~ReqSetProcessData (this=<optimized 
out>, __in_chrg=<optimized out>) at src/fibsctl.pb.cc:1935
No locals.
#10 gap::fibsctl::ReqSetProcessData::~ReqSetProcessData (this=0x60cc90, 
__in_chrg=<optimized out>) at src/fibsctl.pb.cc:1932
No locals.
#11 0x00432360 in 
__gnu_cxx::new_allocator<gap::fibsctl::ReqSetProcessData>::destroy<gap::fibsctl::ReqSetProcessData>
 
(this=0x7e931c08, __p=<optimized out>) at 
/usr/include/c++/9.3.0/ext/new_allocator.h:151
No locals.
#12 std::allocator_traits<std::allocator<gap::fibsctl::ReqSetProcessData> 
>::destroy<gap::fibsctl::ReqSetProcessData> (__a=..., __p=<optimized out>) 
at /usr/include/c++/9.3.0/bits/alloc_traits.h:497
No locals.
#13 std::deque<gap::fibsctl::ReqSetProcessData, 
std::allocator<gap::fibsctl::ReqSetProcessData> >::pop_front 
(this=0x7e931c08) at /usr/include/c++/9.3.0/bits/stl_deque.h:1611
No locals.
#14 std::queue<gap::fibsctl::ReqSetProcessData, 
std::deque<gap::fibsctl::ReqSetProcessData, 
std::allocator<gap::fibsctl::ReqSetProcessData> > >::pop (this=0x7e931c08) 
at /usr/include/c++/9.3.0/bits/stl_queue.h:295
No locals.
#15 CopsMdpPeer::RequestWorker (this=0x7e931be0) at 
/usr/src/debug/copsman/0.1.0-gitAUTOINC+41c1ea61bc-r0/git/src/copsmdppeer.cpp:74
        lk = {_M_device = 0x7e931c34, _M_owns = true}
        req = {<google::protobuf::Message> = 
{<google::protobuf::MessageLite> = {_vptr.MessageLite = 0x76debaa0 <vtable 
for gap::fibsctl::ReqSetProcessData+8>, _internal_metadata_ = {ptr_ = 0, 
static kUnknownFieldsTagMask = 1, static kMessageOwnedArenaTagMask = 2, 
                static kPtrTagMask = 3, static kPtrValueMask = -4}}, <No 
data fields>}, static kIndexInFileMessages = 7, static _class_data_ = {
            copy_to_from = 0x76cfa435 
<google::protobuf::Message::CopyWithSizeCheck(google::protobuf::Message*, 
google::protobuf::Message const&)>, 
            merge_to_from = 0x76dd8ef1 
<gap::fibsctl::ReqSetProcessData::MergeImpl(google::protobuf::Message*, 
google::protobuf::Message const&)>}, process_data_ = 0x6079c8, 
_cached_size_ = {size_ = {<std::__atomic_base<int>> = {static _S_alignment 
= 4, 
--Type <RET> for more, q to quit, c to continue without paging--
                _M_i = 0}, <No data fields>}}}
#16 0x76ae9b42 in std::execute_native_thread_routine (__p=0x594be8) at 
../../../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libstdc++-v3/src/c++11/thread.cc:80
        __t = {_M_t = {
            _M_t = {<std::_Tuple_impl<0, std::thread::_State*, 
std::default_delete<std::thread::_State> >> = {<std::_Tuple_impl<1, 
std::default_delete<std::thread::_State> >> = {<std::_Head_base<1, 
std::default_delete<std::thread::_State>, true>> = 
{<std::default_delete<std::thread::_State>> = {<No data fields>}, <No data 
fields>}, <No data fields>}, <std::_Head_base<0, std::thread::_State*, 
false>> = {_M_head_impl = 0x594be8}, <No data fields>}, <No data fields>}}}
#17 0x76b97988 in start_thread (arg=0xf1a37314) at pthread_create.c:477
        ret = <optimized out>
        start = <optimized out>
        pd = 0xf1a37314
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {-203034643, -240946412, 
1962929024, 2123569600, 3, 1962927512, 1962929024, 1962929136, 0, 
2123569600, 0 <repeats 54 times>}, mask_was_saved = 0}}, priv = {pad = 
{0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, 
              cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        robust = <optimized out>
#18 0x769ce3dc in ?? () at ../sysdeps/unix/sysv/linux/arm/clone.S:73 from 
./lib/libc.so.6
No locals.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) 

Thanks 









-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/13c0cc31-2500-4a85-b5b9-2722020cdb04n%40googlegroups.com.

Reply via email to