It's fine to put protobuf messages in STL containers, so if you're seeing
segfaults then those must be caused by some other issue.

On Mon, Jul 12, 2021 at 5:02 AM jobroe <[email protected]> wrote:

>
> 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 <(212)%20356-9600>, 3, 1962927512,
> 1962929024, 1962929136, 0, 2123569600 <(212)%20356-9600>, 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
> <https://groups.google.com/d/msgid/protobuf/13c0cc31-2500-4a85-b5b9-2722020cdb04n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CADqAXr5yDiLvNr0UG%3D0RgnzAs0xVAKO1R5ZXJHjUhRMbJRmZcQ%40mail.gmail.com.

Reply via email to